Re: [RFC PATCH 18/18] x86: request TLB flush to slave CPU using NMI

Avi Kivity
2012-06-28T16:38:58Z

On 06/28/2012 09:08 AM, Tomoki Sekiyama wrote:
> For slave CPUs, it is inapropriate to request TLB flush using IPI.
> because the IPI may be sent to a KVM guest when the slave CPU is running
> the guest with direct interrupt routing.
>
> Instead, it registers a TLB flush request in per-cpu bitmask and send a NMI
> to interrupt execution of the guest. Then, NMI handler will check the
> requests and handles the requests.

Currently x86's get_user_pages_fast() depends on TLB flushes being held
up by local_irq_disable(). With this patch, this is no longer true and
get_user_pages_fast() can race with page table freeing. There are
patches from Peter Zijlstra to remove this dependency though. NMIs are
still slow and fragile when compared to normal interrupts, so this patch
is somewhat problematic.

--
error compiling committee.c: too many arguments to function