Bug 209002 - XEN: AMD-V HVM windows guest boot menu timer issue
Summary: XEN: AMD-V HVM windows guest boot menu timer issue
Keywords:
Status: CLOSED DUPLICATE of bug 209001
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: xen
Version: 5.0
Hardware: All
OS: Linux
medium
high
Target Milestone: ---
: ---
Assignee: Xen Maintainance List
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-10-02 21:35 UTC by Tom Woller
Modified: 2007-11-30 22:07 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-10-06 15:56:19 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Tom Woller 2006-10-02 21:35:32 UTC
Description of problem:
[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.


Version-Release number of selected component (if applicable):
xen-3.0.3-testing
the patch is from xen-unstable.hg repository changeset 11679
the patch is also attached in the below info field.

How reproducible:
always. 

Steps to Reproduce:
1. start up HVM windows XP SP2 guest with >1 boot menu options
2. observe the timer on the boot menu

Actual results:
1. boot menu timer will display approximately 1 sec per 10 realtime seconds
2. kdb will be not very responsive
  


Expected results:
1. timer will display approximately 1 sec per 1 realtime seconds
2. kdb will be responsive

Additional info:
This patch is a safe patch to apply.  The removed code was tested on 32bit, 
64bit and 32bit-pae hypervisors.

Signed-off-by: Tom Woller <thomas.woller>=20

diff -r 9977b8785570 -r a949bd6ceb85 xen/arch/x86/hvm/svm/intr.c
--- a/xen/arch/x86/hvm/svm/intr.c	Fri Sep 29 18:12:15 2006
+++ b/xen/arch/x86/hvm/svm/intr.c	Sat Sep 30 09:49:08 2006
@@ -74,7 +74,6 @@
     int intr_type = APIC_DM_EXTINT;
     int intr_vector = -1;
     int re_injecting = 0;
-    unsigned long rflags;
 
     ASSERT(vmcb);
 
@@ -87,14 +86,6 @@
         re_injecting = 1;
     }
 
-    /* Guest's interrputs masked? */
-    rflags = vmcb->rflags;
-    if (irq_masked(rflags)) {
-        HVM_DBG_LOG(DBG_LEVEL_1, "Guest IRQs masked: rflags: %lx", rflags);
-        /* bail out, we won't be injecting an interrupt this time */
-        return;
-    }
-    
     /* Previous interrupt still pending? */
     if (vmcb->vintr.fields.irq) {
 //        printk("Re-injecting IRQ from Vintr\n");

Comment 1 Jeff Needle 2006-10-06 15:56:19 UTC

*** This bug has been marked as a duplicate of 209001 ***


Note You need to log in before you can comment on or make changes to this bug.