Re: [PATCH 0/4] Remove interrupt stack table usage from x86_64kernel (v2)

From: Ingo Molnar
Date: Fri Dec 26 2008 - 09:35:49 EST



* Avi Kivity <avi@xxxxxxxxxx> wrote:

> The interrupt stack table (IST) mechanism is the only thing preventing
> kvm from deferring saving and reloading of some significant state. It
> is also somewhat complicated.
>
> Remove it by switching the special exceptions to use the normal irqstack.
>
> Changes from v1:
> - rebase on tip/master
> - as a step, consolidate stack switching into a single macro
>
> Jeremy, Xen is also affected; please review.
>
> Avi Kivity (4):
> x86: drop the use of the tss interrupt stack table (IST)
> x86: Consolidate irq stack switching to a single macro
> x86: Make interrupt stack switching atomic
> x86: Move NMI back to interrupt stack
>
> arch/x86/include/asm/desc.h | 12 -----
> arch/x86/include/asm/page_64.h | 7 ---
> arch/x86/include/asm/pda.h | 2 +-
> arch/x86/include/asm/processor.h | 11 ----
> arch/x86/kernel/asm-offsets_64.c | 1 -
> arch/x86/kernel/cpu/common.c | 35 --------------
> arch/x86/kernel/dumpstack_64.c | 96 --------------------------------------
> arch/x86/kernel/entry_64.S | 89 ++++++++++-------------------------
> arch/x86/kernel/traps.c | 12 ++--
> 9 files changed, 33 insertions(+), 232 deletions(-)

applied to tip/x86/irq, thanks Avi!

They have the following commit IDs, and they are also in tip/master:

921e521: x86: move NMI back to interrupt stack
36ef6c9: x86: make interrupt stack switching atomic
dd64891: x86: consolidate irq stack switching to a single macro
955a368: x86: drop the use of the tss interrupt stack table (IST)

I also started testing them in tip-qa.

I added the standard Impact-lines that we do in the x86 tree. Note that
this patch:

dd64891: x86: consolidate irq stack switching to a single macro

isnt just consolidating IRQ entry assembly code, it is also changing the
paranoidentry macros to do IRQ stack entries - and hence switches all but
the NMI critical exception entries sequences over to the IRQ stack. Your
later patch:

921e521: x86: move NMI back to interrupt stack

covers the NMI entry code too.

Please double-check that we indeed now have all the critical exceptions on
the IRQ stack (they are all rare so testing alone wont show this), and
please also double-check that we dont have more exceptions and entry
callpaths on the IRQ stack than what we wanted. For example on a
preemptible kernel (or in any codepath that calls schedule()) it is fatal
to be on the IRQ stack, so this has to be very accurately coded.

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/