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

Jungseok Lee jungseoklee85 at gmail.com
Sun Dec 6 05:56:15 PST 2015


On Dec 4, 2015, at 9:17 PM, Jungseok Lee wrote:
> 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.

I will hold off until the IRQ count management scheme is determined, which is
an important design point.

Best Regards
Jungseok Lee


More information about the linux-arm-kernel mailing list