Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1534915
| From | Matt Redfearn <matt.redfearn@imgtec.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 0/5] MIPS: Add per-cpu IRQ stack |
| Date | 2016-12-02 14:40 +0100 |
| Message-ID | <sJWee-4q8-61@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
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 — Next 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