diff options
author | Juergen Gross <juergen.gross@ts.fujitsu.com> | 2012-01-20 10:17:12 +0000 |
---|---|---|
committer | Juergen Gross <juergen.gross@ts.fujitsu.com> | 2012-01-20 10:17:12 +0000 |
commit | 696f3581a2272cdab7c0ca1f3bedade4934ecc76 (patch) | |
tree | 4f8cc213a35232b706a1ba7c901b76c141fffb4b /xen/arch/x86/hvm/vlapic.c | |
parent | 2d7d54adfddce658c056a8c87dd74b3766db01a3 (diff) | |
download | xen-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.c | 9 |
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: |