[PATCH v8 0/4] arm64: Add support for IRQ stack

Jungseok Lee jungseoklee85 at gmail.com
Fri Dec 4 04:17:51 PST 2015


On Dec 4, 2015, at 8:02 PM, James Morse wrote:

Hi James,

> This consolidated series adds a per-cpu irq_stack, which will eventually allow
> us to reduce the size of task stacks.
> 
> Code in entry.S switches to the per-cpu irq_stack when irq_count is zero.
> This counter is updated in do_softirq_own_stack(), which is called before
> __do_softirq() re-enables interrupts, which could cause recursive use of the
> irq stack.
> 
> sp_el0 is used as a scratch register to store struct thread_info during el1
> execution, this means code to find it by masking the stack pointer no longer
> needs to be inlined. This also lets us remove the alignment requirements for
> the irq stack, (task stacks still need to be naturally aligned).
> 
> Patch 2 is a combination of Akashi Takahiro's 'arm64: unwind_frame for
> interrupt stack' and 'arm64: fix dump_backtrace() to show correct pt_regs at
> interrupt', both of which need to be present before irq_stack is enabled in
> Patch 3.
> 
> Patch 4 is new, following Catalin's comments, but I don't think it is
> necessary unless we also decrease the stack size, which I don't think we
> should do immediatly - it would be good to collect some max_stack_size values
> for various workloads first.
> 
> This series is based on the v4.4-rc3
> The series can be pulled from git://linux-arm.org/linux-jm.git -b irq_stack/v8
> 
> Comments welcome,

At first glance, this series looks mature ;) I will leave feedbacks after playing
with this.

> James
> 
> Changes since v7 [0]:
> * Removed independent irq_stack_ptr and irq_count values. The lowest irq_stack
>   value is used as irq_count, irq_stack_entry adds IRQ_STACK_START_SP to this
>   when switching stack.
> * Moved irq_stack definition from patch 1 to patch 2.
> * Added patch 4
> 
> Changes since v6 [1]:
> * Add irq_count and do_softirq_own_stack().
> * Removed requirement that the irq_stack is naturally aligned.
> * Made irq_stack per_cpu regardless of page size.
> 
> 
> [0] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/385337.html
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/382238.html
> 
> 
> AKASHI Takahiro (1):
>  arm64: Modify stack trace and dump for use with irq_stack
> 
> James Morse (2):
>  arm64: Add do_softirq_own_stack() and enable irq_stacks
>  arm64: switch to irq_stack during softirq
> 
> Jungseok Lee (1):
>  arm64: Store struct task_info in sp_el0

s/task_info/thread_info would be clearer.

Best Regards
Jungseok Lee


More information about the linux-arm-kernel mailing list