Message ID | 1252021260-28941-1-git-send-email-glommer@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 <glommer@redhat.com> > CC: Gleb Natapov <gleb@redhat.com> > --- > 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Sep 6, 2009 at 5:50 AM, Gleb Natapov<gleb@redhat.com> wrote: > 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. Fedora guests don't boot. >> 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 <glommer@redhat.com> >> CC: Gleb Natapov <gleb@redhat.com> >> --- >>  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 majordomo@vger.kernel.org > More majordomo info at  http://vger.kernel.org/majordomo-info.html >
On Sun, Sep 06, 2009 at 09:34:38AM -0300, Glauber Costa wrote: > On Sun, Sep 6, 2009 at 5:50 AM, Gleb Natapov<gleb@redhat.com> wrote: > > 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. > > Fedora guests don't boot. > Which one? I tested F10 live cd and F11 beta (both 32 bit). They work fine here with userspace irq chip. > >> 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 <glommer@redhat.com> > >> CC: Gleb Natapov <gleb@redhat.com> > >> --- > >>  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 majordomo@vger.kernel.org > > More majordomo info at  http://vger.kernel.org/majordomo-info.html > > > > > > -- > Glauber Costa. > "Free as in Freedom" > http://glommer.net > > "The less confident you are, the more serious you have to act." -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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; }
It is broken since main loop reorganization. (6185d8b6) Problem is that we, the emulator, has nothing to do with the CPU flags. has_work() should not depend on that at all. Signed-off-by: Glauber Costa <glommer@redhat.com> CC: Gleb Natapov <gleb@redhat.com> --- qemu-kvm-x86.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-)