diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-06-30 15:40:39 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-06-30 15:40:39 +0100 |
commit | db49191f3e52f9283133f32f28bb234ce3069b34 (patch) | |
tree | b4ccc9bd5f080fbe062da27ae596c5a70de3844f /xen/arch/x86/hvm/irq.c | |
parent | 5a76d5de5c207eaff96e5a1600abd57233efd99e (diff) | |
download | xen-db49191f3e52f9283133f32f28bb234ce3069b34.tar.gz xen-db49191f3e52f9283133f32f28bb234ce3069b34.tar.bz2 xen-db49191f3e52f9283133f32f28bb234ce3069b34.zip |
x86 hvm mce: Support HVM Guest virtual MCA handling.
When MCE# happens, if the error has been contained/recovered by XEN
and it impacts one guest Domain(DOM0/HVM Guest/PV Guest), we will
inject the corresponding vMCE# into the impacted Domain. Guest OS will
go on its own recovery job if it has MCA handler.
Signed-off-by: Liping Ke <liping.ke@intel.com>
Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Diffstat (limited to 'xen/arch/x86/hvm/irq.c')
-rw-r--r-- | xen/arch/x86/hvm/irq.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index bd2f145921..90e1f45174 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -326,6 +326,9 @@ struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v) if ( unlikely(v->nmi_pending) ) return hvm_intack_nmi; + if ( unlikely(v->mce_pending) ) + return hvm_intack_mce; + if ( vlapic_accept_pic_intr(v) && plat->vpic[0].int_output ) return hvm_intack_pic(0); @@ -347,6 +350,10 @@ struct hvm_intack hvm_vcpu_ack_pending_irq( if ( !test_and_clear_bool(v->nmi_pending) ) intack = hvm_intack_none; break; + case hvm_intsrc_mce: + if ( !test_and_clear_bool(v->mce_pending) ) + intack = hvm_intack_none; + break; case hvm_intsrc_pic: ASSERT(v->vcpu_id == 0); if ( (vector = vpic_ack_pending_irq(v)) == -1 ) |