direct-io.hg

changeset 11679:a949bd6ceb85

[HVM][SVM] Do not delay ExtInt event injection if RFLAGS.IF==0.

AMD-V does not require the delaying of interrupt injection if the guest
IF_FLAG disallows interrupts. Remove the code in svm_intr_assist()
that was checking the guest IF in eflags.

This patch fixes the problem with HVM Windows guests, with observing a
very slow timer countdown on the initial boot menu, when there is more
than one boot option. Kbd response in this same Windows boot menu is
also acceptably responsive with this patch.

Signed-off-by: Tom Woller <thomas.woller@amd.com>=20
author kaf24@firebug.cl.cam.ac.uk
date Sat Sep 30 10:49:08 2006 +0100 (2006-09-30)
parents 9977b8785570
children 2d155d41fe46
files xen/arch/x86/hvm/svm/intr.c
line diff
     1.1 --- a/xen/arch/x86/hvm/svm/intr.c	Fri Sep 29 19:12:15 2006 +0100
     1.2 +++ b/xen/arch/x86/hvm/svm/intr.c	Sat Sep 30 10:49:08 2006 +0100
     1.3 @@ -74,7 +74,6 @@ asmlinkage void svm_intr_assist(void)
     1.4      int intr_type = APIC_DM_EXTINT;
     1.5      int intr_vector = -1;
     1.6      int re_injecting = 0;
     1.7 -    unsigned long rflags;
     1.8  
     1.9      ASSERT(vmcb);
    1.10  
    1.11 @@ -87,14 +86,6 @@ asmlinkage void svm_intr_assist(void)
    1.12          re_injecting = 1;
    1.13      }
    1.14  
    1.15 -    /* Guest's interrputs masked? */
    1.16 -    rflags = vmcb->rflags;
    1.17 -    if (irq_masked(rflags)) {
    1.18 -        HVM_DBG_LOG(DBG_LEVEL_1, "Guest IRQs masked: rflags: %lx", rflags);
    1.19 -        /* bail out, we won't be injecting an interrupt this time */
    1.20 -        return;
    1.21 -    }
    1.22 -    
    1.23      /* Previous interrupt still pending? */
    1.24      if (vmcb->vintr.fields.irq) {
    1.25  //        printk("Re-injecting IRQ from Vintr\n");