Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1537632
| From | Matt Redfearn <matt.redfearn@imgtec.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 0/5] MIPS: Add per-cpu IRQ stack |
| Date | 2016-12-07 10:40 +0100 |
| Message-ID | <sLGRI-6H9-15@gated-at.bofh.it> (permalink) |
| References | <sJWee-4q8-61@gated-at.bofh.it> <sLwfE-7XU-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi Jason, On 06/12/16 22:09, Jason A. Donenfeld wrote: > Hi Matt, > > Thanks for submitting this. A happy OpenWRT/WireGuard user has > reported to me that this patch set frees ~1300 bytes of stack on a > small MIPS router. This kind of savings should allow me to reintroduce > my crypto operations to be on the stack, rather than the conditional > MIPS kmallocing, which will be a performance win. Excellent. > > By the way, it looks like x86 and SPARC have separately allocated hard > IRQ and soft IRQ stacks. ARM has only one for both, similar to this > MIPS patchset. The separate stack for soft-IRQs could be added as well, but of course there is a tradeoff against the additional memory consumed by it. I believe that most soft IRQs will now be handled on the new irq stack, because HAVE_IRQ_EXIT_ON_IRQ_STACK causes them to be invoked within irq_exit, while still executing on the irq stack Thanks, Matt > > Jason > > On Fri, Dec 2, 2016 at 2:39 PM, Matt Redfearn <matt.redfearn@imgtec.com> wrote: >> This series adds a separate stack for each CPU wihin the system to use >> when handling IRQs. Previously IRQs were handled on the kernel stack of >> the current task. If that task was deep down a call stack at the point >> of the interrupt, and handling the interrupt required a deep IRQ stack, >> then there was a likelihood of stack overflow. Since the kernel stack >> is in normal unmapped memory, overflowing it can lead to silent >> corruption of other kernel data, with weird and wonderful results. >> >> Before this patch series, ftracing the maximum stack size of a v4.9-rc6 >> kernel running on a Ci40 board gave: >> 4996 >> >> And with this series: >> 4084 >> >> Handling interrupts on a separate stack reduces the maximum kernel stack >> usage in this configuration by ~900 bytes. >> >> Since do_IRQ is now invoked on a separate stack, we select >> HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirqs will also be executed on the >> irq stack rather than attempting to switch with do_softirq_own_stack(). >> >> This series has been tested on MIPS Boston, Malta and SEAD3 platforms, >> Pistachio on the Creator Ci40 board and Cavium Octeon III. >> >> >> >> Matt Redfearn (5): >> MIPS: Introduce irq_stack >> MIPS: Stack unwinding while on IRQ stack >> MIPS: Only change $28 to thread_info if coming from user mode >> MIPS: Switch to the irq_stack in interrupts >> MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK >> >> arch/mips/Kconfig | 1 + >> arch/mips/include/asm/irq.h | 12 ++++++ >> arch/mips/include/asm/stackframe.h | 10 +++++ >> arch/mips/kernel/asm-offsets.c | 1 + >> arch/mips/kernel/genex.S | 81 +++++++++++++++++++++++++++++++++++--- >> arch/mips/kernel/irq.c | 11 ++++++ >> arch/mips/kernel/process.c | 15 ++++++- >> 7 files changed, 125 insertions(+), 6 deletions(-) >> >> -- >> 2.7.4 >>
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 0/5] MIPS: Add per-cpu IRQ stack Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:40 +0100
[PATCH 2/5] MIPS: Stack unwinding while on IRQ stack Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:40 +0100
[PATCH 4/5] MIPS: Switch to the irq_stack in interrupts Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:40 +0100
[PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:50 +0100
Re: [PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode "Maciej W. Rozycki" <macro@imgtec.com> - 2016-12-05 17:30 +0100
Re: [PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-05 18:00 +0100
Re: [PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode "Maciej W. Rozycki" <macro@imgtec.com> - 2016-12-05 18:30 +0100
Re: [PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode Paul Burton <paul.burton@imgtec.com> - 2016-12-05 18:30 +0100
Re: [PATCH 3/5] MIPS: Only change $28 to thread_info if coming from user mode "Maciej W. Rozycki" <macro@imgtec.com> - 2016-12-05 19:00 +0100
[PATCH 1/5] MIPS: Introduce irq_stack Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:50 +0100
Re: [PATCH 1/5] MIPS: Introduce irq_stack "Jason A. Donenfeld" <Jason@zx2c4.com> - 2016-12-06 23:20 +0100
Re: [PATCH 1/5] MIPS: Introduce irq_stack Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-07 10:30 +0100
[PATCH 5/5] MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-02 14:50 +0100
Re: [PATCH 0/5] MIPS: Add per-cpu IRQ stack "Jason A. Donenfeld" <Jason@zx2c4.com> - 2016-12-06 23:20 +0100
Re: [PATCH 0/5] MIPS: Add per-cpu IRQ stack Matt Redfearn <matt.redfearn@imgtec.com> - 2016-12-07 10:40 +0100
csiph-web