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

[Xen-changelog] [xen-unstable] [HVM] Fix an issue with APIC priority checks.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 637b6d60e792aaebe147fc900be4d27ddeb9bf74
# Parent  f5b9b8439012c49306069539aa8637d1a56a9b7d
[HVM] Fix an issue with APIC priority checks.

Signed-off-by; Yunhong Jiang <yunhong.jiang@xxxxxxxxx>
---
 xen/arch/x86/hvm/vlapic.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff -r f5b9b8439012 -r 637b6d60e792 xen/arch/x86/hvm/vlapic.c
--- a/xen/arch/x86/hvm/vlapic.c Wed Aug 02 10:03:04 2006 +0100
+++ b/xen/arch/x86/hvm/vlapic.c Wed Aug 02 10:04:27 2006 +0100
@@ -210,7 +210,7 @@ static int vlapic_accept_irq(struct vcpu
         if ( unlikely(vlapic == NULL || !vlapic_enabled(vlapic)) )
             break;
 
-        if ( test_and_set_bit(vector, &vlapic->irr[0]) )
+        if ( test_and_set_bit(vector, &vlapic->irr[0]) && level)
         {
             HVM_DBG_LOG(DBG_LEVEL_VLAPIC,
               "level trig mode repeatedly for vector %d\n", vector);
@@ -922,7 +922,8 @@ int cpu_get_apic_interrupt(struct vcpu *
     {
         int highest_irr = vlapic_find_highest_irr(vlapic);
 
-        if ( highest_irr != -1 && highest_irr >= vlapic->processor_priority )
+        if ( highest_irr != -1 &&
+             ( (highest_irr & 0xF0) > vlapic->processor_priority ) )
         {
             if ( highest_irr < 0x10 )
             {
@@ -952,7 +953,8 @@ int cpu_has_apic_interrupt(struct vcpu* 
     if (vlapic && vlapic_enabled(vlapic)) {
         int highest_irr = vlapic_find_highest_irr(vlapic);
 
-        if (highest_irr != -1 && highest_irr >= vlapic->processor_priority) {
+        if ( highest_irr != -1 &&
+             ( (highest_irr & 0xF0) > vlapic->processor_priority ) ) {
             return 1;
         }
     }

_______________________________________________
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®.