aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/vlapic.c
diff options
context:
space:
mode:
authorJuergen Gross <juergen.gross@ts.fujitsu.com>2012-01-20 10:17:12 +0000
committerJuergen Gross <juergen.gross@ts.fujitsu.com>2012-01-20 10:17:12 +0000
commit696f3581a2272cdab7c0ca1f3bedade4934ecc76 (patch)
tree4f8cc213a35232b706a1ba7c901b76c141fffb4b /xen/arch/x86/hvm/vlapic.c
parent2d7d54adfddce658c056a8c87dd74b3766db01a3 (diff)
downloadxen-696f3581a2272cdab7c0ca1f3bedade4934ecc76.tar.gz
xen-696f3581a2272cdab7c0ca1f3bedade4934ecc76.tar.bz2
xen-696f3581a2272cdab7c0ca1f3bedade4934ecc76.zip
x86/hvm: Allow wake up of offline vcpu via nmi-ipi
On a real machine a cpu disabled via hlt with interrupts disabled can be reactivated via a nmi ipi. Enable the hypervisor to do this for hvm, too. Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com> Signed-off-by: Keir Fraser <keir@xen.org> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/hvm/vlapic.c')
-rw-r--r--xen/arch/x86/hvm/vlapic.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index b4142875ef..6e3dc86f8c 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -323,7 +323,16 @@ static int vlapic_accept_irq(struct vcpu *v, uint32_t icr_low)
case APIC_DM_NMI:
if ( !test_and_set_bool(v->nmi_pending) )
+ {
+ bool_t wake = 0;
+ domain_lock(v->domain);
+ if ( v->is_initialised )
+ wake = test_and_clear_bit(_VPF_down, &v->pause_flags);
+ domain_unlock(v->domain);
+ if ( wake )
+ vcpu_wake(v);
vcpu_kick(v);
+ }
break;
case APIC_DM_INIT: