[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] This is a fix for some device model corner cases including:



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 21d175472d55522cdbecd2a1018ad5eb35e7d487
# Parent  1a5861311b04698744fb426c18a0af48bbdad4c7
This is a fix for some device model corner cases including:
 1: mistake sequence of set/clr to virtual IRQ line.
 2: wrong sequence of IRQ request clear
 3: Add one more place to enable_irq_window.

Signed-off-by: Eddie Dong <eddie.dong@xxxxxxxxx>

diff -r 1a5861311b04 -r 21d175472d55 tools/ioemu/hw/i8259_stub.c
--- a/tools/ioemu/hw/i8259_stub.c       Fri Nov  4 10:06:41 2005
+++ b/tools/ioemu/hw/i8259_stub.c       Fri Nov  4 10:08:45 2005
@@ -55,13 +55,13 @@
     if ( gio->pic_elcr & mask ) {
         /* level */
        if ( level ) {
+           atomic_clear_bit(irq, &gio->pic_clear_irr);
            atomic_set_bit(irq, &gio->pic_irr);
-           atomic_clear_bit(irq, &gio->pic_clear_irr);
            global_env->send_event = 1;
        }
        else {
+           atomic_clear_bit(irq, &gio->pic_irr);
            atomic_set_bit(irq, &gio->pic_clear_irr);
-           atomic_clear_bit(irq, &gio->pic_irr);
            global_env->send_event = 1;
        }
     }
diff -r 1a5861311b04 -r 21d175472d55 xen/arch/x86/dm/i8259.c
--- a/xen/arch/x86/dm/i8259.c   Fri Nov  4 10:06:41 2005
+++ b/xen/arch/x86/dm/i8259.c   Fri Nov  4 10:08:45 2005
@@ -512,10 +512,10 @@
     if ( !plat->interrupt_request )
         return -1;
 
+    plat->interrupt_request = 0;
     /* read the irq from the PIC */
     intno = pic_read_irq(s);
     *type = VLAPIC_DELIV_MODE_EXT;
-    plat->interrupt_request = 0;
     return intno;
 }
 
diff -r 1a5861311b04 -r 21d175472d55 xen/arch/x86/vmx_io.c
--- a/xen/arch/x86/vmx_io.c     Fri Nov  4 10:06:41 2005
+++ b/xen/arch/x86/vmx_io.c     Fri Nov  4 10:08:45 2005
@@ -881,6 +881,7 @@
     __vmread(VM_ENTRY_INTR_INFO_FIELD, &intr_fields);
 
     if (intr_fields & INTR_INFO_VALID_MASK) {
+        enable_irq_window(cpu_exec_control);
         VMX_DBG_LOG(DBG_LEVEL_1, "vmx_intr_assist: intr_fields: %lx",
                     intr_fields);
         return;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.