On Mon, 2009-03-09 at 11:58 +0100, Ingo Molnar wrote:
> * Avi Kivity <[email protected]> wrote:
>
> > Marcelo Tosatti wrote:
> >> KVM uses a function call IPI to cause the exit of a guest running on a
> >> physical cpu. For virtual interrupt notification there is no need to
> >> wait on IPI receival, or to execute any function.
> >>
> >> This is exactly what the reschedule IPI does, without the overhead
> >> of function IPI. So use it instead of smp_call_function_single in
> >> kvm_vcpu_kick.
> >>
> >> Also change the "guest_mode" variable to a bit in vcpu->requests, and
> >> use that to collapse multiple IPI's that would be issued between the
> >> first one and zeroing of guest mode.
> >>
> >> This allows kvm_vcpu_kick to called from interrupt context.
> >>
> >
> > Looks good. The only worry I have is that we depend on
> > smp_reschedule_interrupt() being a no-op. I guess that's a
> > reasonable assumption though.
>
> It's a reasonable current assumption - but it might change in
> the future - so please also put it into the changelog that KVM
> will revert it or fix it differently if the scheduler grows some
> functionality there.
Alternatively, do something like the below, then anybody poking at that
code will know to prod the KVM folks when they change anything.
[ I suspect other kvm arches will need to a similar comment ]
---
arch/x86/kernel/smp.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index 13f33ea..3b2e55e 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -172,6 +172,9 @@ void smp_reschedule_interrupt(struct pt_regs *regs)
{
ack_APIC_irq();
inc_irq_stat(irq_resched_count);
+ /*
+ * KVM uses this interrupt to force a cpu out of guest mode
+ */
}
void smp_call_function_interrupt(struct pt_regs *regs)
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html