Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Avi Kivity
(restoring cc list) Andi Kleen wrote: One of the other problems: NMIs and MCEs have the same problem with SYSCALL This one however looks unsolvable. Userspace can point %rsp into arbitrary memory, issue a syscall, and hope for an nmi. Since we're in cpl 0 and are not using IST, the

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Andi Kleen
On Sun, Dec 28, 2008 at 04:09:26PM +0200, Avi Kivity wrote: I don't see how syscall could work on i386, and indeed: i386 has task gates which support unconditional stack switching. But there are no 64bit task gates, just ISTs. BTW I think there are more similar problems in your patch too.

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Avi Kivity
Andi Kleen wrote: On Sun, Dec 28, 2008 at 04:09:26PM +0200, Avi Kivity wrote: I don't see how syscall could work on i386, and indeed: i386 has task gates which support unconditional stack switching. But there are no 64bit task gates, just ISTs. i386 is not that interesting to

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Andi Kleen
One fatal problem is enough -- I don't thing that patch can be made to work. Pity since it did clean up some stuff. Not sure that was true anyways. I would like however to speed up kvm. Here's a plan: 1. Add per-cpu IDT You don't need that, do you? Just two sets. 2. When switching

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Avi Kivity
Avi Kivity wrote: 1. Add per-cpu IDT Or we could have just two IDTs - one with IST and one without. I clocked LIDT at 58 cycles (and we need two per heavyweight switch), so it's not that wonderful. -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Avi Kivity
Avi Kivity wrote: Avi Kivity wrote: 1. Add per-cpu IDT Or we could have just two IDTs - one with IST and one without. I clocked LIDT at 58 cycles (and we need two per heavyweight switch), so it's not that wonderful. This makes the whole thing unworthwhile. The vmload/vmsave pair costs

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Andi Kleen
On Sun, Dec 28, 2008 at 10:08:35PM +0200, Avi Kivity wrote: Avi Kivity wrote: Avi Kivity wrote: 1. Add per-cpu IDT Or we could have just two IDTs - one with IST and one without. I clocked LIDT at 58 cycles (and we need two per heavyweight switch), so it's not that wonderful. This

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-28 Thread Avi Kivity
Andi Kleen wrote: This makes the whole thing unworthwhile. The vmload/vmsave pair costs only 200 cycles (I should have started with this), and 120 cycles on the heavyweight path plus complexity are not worth 200 cycles on the lightweight path. Actually to switch ISTs you need to change

Re: [PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-26 Thread Ingo Molnar
* Avi Kivity a...@redhat.com 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. Avi

[PATCH 0/3] Remove interrupt stack table usage from x86_64 kernel

2008-12-25 Thread Avi Kivity
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. Avi Kivity (3): x86: drop the use of the tss