Re: pre-preparation for in-kernel device model

Gregory Haskins
2007-06-05T12:13:24Z

Note that we already disable interrupts before getting here once the APIC series is applied, so this patch is either not necessary, or someone needs to merge this into the lapic branch and clean it up.

Regards,
-Greg

>>> Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 06/05/07 7:32 AM >>>
Dong, Eddie wrote:
> When in kernel device model is introduced, the guest interrupt status
> may get changed when after it injected an IRQ and thus guest see a
> messed interrupt state. This patch tries to disable irq at that window
> to avoid the confusion.
>
>
> Signed-off-by: Yaozu (Eddie) Dong <eddie.dong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>
>
>
> diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
> index ef9e32b..0cf6ea7 100644
> --- a/drivers/kvm/vmx.c
> +++ b/drivers/kvm/vmx.c
> @@ -1977,9 +1977,6 @@ static int vmx_vcpu_run(struct kvm_vcpu *vcpu,
> struct kvm_run *kvm_run)
> int r;
>
> preempted:
> - if (!vcpu->mmio_read_completed)
> - do_interrupt_requests(vcpu, kvm_run);
> -
> if (vcpu->guest_debug.enabled)
> kvm_guest_debug_pre(vcpu);
>
> @@ -1996,9 +1993,16 @@ again:
> */
> vmcs_writel(HOST_CR0, read_cr0());
>
> + /*
> + * Disable interrupt to avoid future in kernel
> + * APIC interrupt state confuse.
> + */
> + asm ( "pushf; cli \n\t");
> + if (!vcpu->mmio_read_completed)
> + do_interrupt_requests(vcpu, kvm_run);
> +
>

This is broken. pushf changes %rsp, and if the compiler uses %rsp based
addressing (-fomit-frame-pointer), it will use the wrong addresses for
variables.

Suggest using local_irq_disable()/local_irq_enable() (and removing
pushf/popf from the entry/exit sequence).

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

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org