WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86: add CMCI software injection interfac

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86: add CMCI software injection interface
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 04 May 2010 13:20:43 -0700
Delivery-date: Tue, 04 May 2010 13:25:56 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1272972145 -3600
# Node ID a8eb546e3cb07e0f2477dea92affa14821a04108
# Parent  9a12204ac0e454746ae609cbd559ffd48fb2cdb0
x86: add CMCI software injection interface

This small patch now add CMCI software injection interface.
So that CMCI error could be triggered by software on CPUs
which support CMCI.

Signed-off-by: Yunhong Jiang<yunhong.jiang@xxxxxxxxx>
Signed-off-by: Liping Ke <liping.ke@xxxxxxxxx>
---
 xen/arch/x86/cpu/mcheck/mce.c         |   24 ++++++++++++++++++------
 xen/include/public/arch-x86/xen-mca.h |    5 ++++-
 2 files changed, 22 insertions(+), 7 deletions(-)

diff -r 9a12204ac0e4 -r a8eb546e3cb0 xen/arch/x86/cpu/mcheck/mce.c
--- a/xen/arch/x86/cpu/mcheck/mce.c     Tue May 04 12:19:50 2010 +0100
+++ b/xen/arch/x86/cpu/mcheck/mce.c     Tue May 04 12:22:25 2010 +0100
@@ -1274,6 +1274,7 @@ long do_mca(XEN_GUEST_HANDLE(xen_mc_t) u
        unsigned int target;
        struct xen_mc_msrinject *mc_msrinject;
        struct xen_mc_mceinject *mc_mceinject;
+       cpumask_t target_map;
 
        if (!IS_PRIV(v->domain) )
                return x86_mcerr(NULL, -EPERM);
@@ -1411,6 +1412,7 @@ long do_mca(XEN_GUEST_HANDLE(xen_mc_t) u
 
                mc_mceinject = &op->u.mc_mceinject;
                target = mc_mceinject->mceinj_cpunr;
+               flags = mc_mceinject->mceinj_flag;
 
                if (target >= NR_CPUS)
                        return x86_mcerr("do_mca #MC: bad target", -EINVAL);
@@ -1419,12 +1421,22 @@ long do_mca(XEN_GUEST_HANDLE(xen_mc_t) u
                        return x86_mcerr("do_mca #MC: target offline", -EINVAL);
 
                add_taint(TAINT_ERROR_INJECT);
-
-        if ( mce_broadcast )
-            on_each_cpu(x86_mc_mceinject, mc_mceinject, 0);
-        else
-            on_selected_cpus(cpumask_of(target), x86_mc_mceinject,
-                  mc_mceinject, 1);
+               if (flags == XEN_MC_UC) {
+                       if ( mce_broadcast )
+                               on_each_cpu(x86_mc_mceinject, mc_mceinject, 0);
+                       else
+                               on_selected_cpus(cpumask_of(target), 
x86_mc_mceinject,
+                                       mc_mceinject, 1);
+               }
+               else if (flags == XEN_MC_CE) {
+                       if (mce_broadcast)
+                               send_IPI_mask(&cpu_online_map, 
CMCI_APIC_VECTOR);
+                       else {
+                               cpus_clear(target_map);
+                               cpu_set(target, target_map);
+                               send_IPI_mask(&target_map, CMCI_APIC_VECTOR);
+                       }
+               }
                break;
 
        default:
diff -r 9a12204ac0e4 -r a8eb546e3cb0 xen/include/public/arch-x86/xen-mca.h
--- a/xen/include/public/arch-x86/xen-mca.h     Tue May 04 12:19:50 2010 +0100
+++ b/xen/include/public/arch-x86/xen-mca.h     Tue May 04 12:22:25 2010 +0100
@@ -400,8 +400,11 @@ struct xen_mc_msrinject {
 #define MC_MSRINJ_F_INTERPOSE   0x1
 
 #define XEN_MC_mceinject    5
+#define XEN_MC_UC           0
+#define XEN_MC_CE           1
 struct xen_mc_mceinject {
-       unsigned int mceinj_cpunr;      /* target processor id */
+       uint32_t mceinj_cpunr;      /* target processor id */
+       uint32_t mceinj_flag;       /* UC error or CE error flag */
 };
 
 struct xen_mc {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86: add CMCI software injection interface, Xen patchbot-unstable <=