On Thu, Sep 03, 2009 at 07:41:00PM -0400, Glauber Costa wrote:
> It is broken since main loop reorganization. (6185d8b6)
> 
What is broken? Boots WindowsXp for me here.

> Problem is that we, the emulator, has nothing to do with the CPU flags. 
> has_work()
> should not depend on that at all.
IF_MASK flags is set into env->eflags on each exit by function just
above kvm_arch_has_work() and contains valid and relevant information.
The check your are removing should be there. It ensures that interrupts
are ignored if they are blocked by vcpu.

> 
> Signed-off-by: Glauber Costa <[email protected]>
> CC: Gleb Natapov <[email protected]>
> ---
>  qemu-kvm-x86.c |    5 ++---
>  1 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
> index f80d82b..66ed6b5 100644
> --- a/qemu-kvm-x86.c
> +++ b/qemu-kvm-x86.c
> @@ -1393,9 +1393,8 @@ void kvm_arch_post_kvm_run(void *opaque, CPUState *env)
>  
>  int kvm_arch_has_work(CPUState *env)
>  {
> -    if (((env->interrupt_request & CPU_INTERRUPT_HARD) &&
> -      (env->eflags & IF_MASK)) ||
> -     (env->interrupt_request & CPU_INTERRUPT_NMI))
> +    if (((env->interrupt_request & CPU_INTERRUPT_HARD) || 
> +     (env->interrupt_request & CPU_INTERRUPT_NMI)))
>       return 1;
>      return 0;
>  }
> -- 
> 1.6.2.2

--
                        Gleb.
--
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

Reply via email to