ia64/xen-unstable

changeset 19302:d4c9a63a1642

hvm/vpt: Check that an irq is not blocked before waking the vcpu

Currently, when a timer fires for a vpt interrupt, the interrupt
handler calls vcpu_kick() without checking to see if the IRQ is
blocked. This causes the vcpu to wake up out of a halt when it
shouldn't.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Mon Mar 09 13:50:45 2009 +0000 (2009-03-09)
parents 00b8c660be97
children e7702951fc09
files xen/arch/x86/hvm/vpt.c
line diff
     1.1 --- a/xen/arch/x86/hvm/vpt.c	Mon Mar 09 13:35:47 2009 +0000
     1.2 +++ b/xen/arch/x86/hvm/vpt.c	Mon Mar 09 13:50:45 2009 +0000
     1.3 @@ -209,7 +209,8 @@ static void pt_timer_fn(void *data)
     1.4          set_timer(&pt->timer, pt->scheduled);
     1.5      }
     1.6  
     1.7 -    vcpu_kick(pt->vcpu);
     1.8 +    if ( !pt_irq_masked(pt) )
     1.9 +        vcpu_kick(pt->vcpu);
    1.10  
    1.11      pt_unlock(pt);
    1.12  }