aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/irq.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-06-30 15:40:39 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-06-30 15:40:39 +0100
commitdb49191f3e52f9283133f32f28bb234ce3069b34 (patch)
treeb4ccc9bd5f080fbe062da27ae596c5a70de3844f /xen/arch/x86/hvm/irq.c
parent5a76d5de5c207eaff96e5a1600abd57233efd99e (diff)
downloadxen-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.c7
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 )