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-devel

[Xen-devel] [PATCH 11/11] x86: MCE cleanup

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 11/11] x86: MCE cleanup
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Wed, 09 Mar 2011 12:31:03 +0000
Delivery-date: Wed, 09 Mar 2011 04:40:50 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Move some MCE data items into .data.read_mostly. Adjust some types,
and make some symbols static.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- 2011-03-09.orig/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ 2011-03-09/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -25,7 +25,7 @@ static bool_t __read_mostly ser_support 
 static bool_t __read_mostly mce_force_broadcast;
 boolean_param("mce_fb", mce_force_broadcast);
 
-static int nr_intel_ext_msrs = 0;
+static int __read_mostly nr_intel_ext_msrs;
 
 /* Thermal Hanlding */
 #ifdef CONFIG_X86_MCE_THERMAL
@@ -60,7 +60,7 @@ static void intel_thermal_interrupt(stru
 }
 
 /* Thermal interrupt handler for this CPU setup */
-static void (*vendor_thermal_interrupt)(struct cpu_user_regs *regs) 
+static void (*__read_mostly vendor_thermal_interrupt)(struct cpu_user_regs 
*regs)
         = unexpected_thermal_interrupt;
 
 fastcall void smp_thermal_interrupt(struct cpu_user_regs *regs)
@@ -156,8 +156,10 @@ static cpumask_t mce_fatal_cpus;
 static void mce_barrier_enter(struct mce_softirq_barrier *);
 static void mce_barrier_exit(struct mce_softirq_barrier *);
 
-struct mca_error_handler *mce_dhandlers, *mce_uhandlers;
-int mce_dhandler_num, mce_uhandler_num;
+static const struct mca_error_handler *__read_mostly mce_dhandlers;
+static const struct mca_error_handler *__read_mostly mce_uhandlers;
+static unsigned int __read_mostly mce_dhandler_num;
+static unsigned int __read_mostly mce_uhandler_num;
 
 enum mce_result
 {
@@ -174,12 +176,11 @@ static enum mce_result mce_action(struct
 {
     struct mc_info *local_mi;
     enum mce_result ret = MCER_NOERROR;
-    uint32_t i;
     struct mcinfo_common *mic = NULL;
     struct mca_handle_result mca_res;
     struct mca_binfo binfo;
-    struct mca_error_handler *handlers = mce_dhandlers;
-    int handler_num = mce_dhandler_num;
+    const struct mca_error_handler *handlers = mce_dhandlers;
+    unsigned int i, handler_num = mce_dhandler_num;
 
     /* When in mce context, regs is valid */
     if (regs)
@@ -724,8 +725,10 @@ static void intel_default_dhandler(int b
         result->result = MCA_NO_ACTION;
 }
 
-struct mca_error_handler intel_mce_dhandlers[] =
-            {{is_async_memerr, intel_memerr_dhandler}, {default_check, 
intel_default_dhandler}};
+static const struct mca_error_handler intel_mce_dhandlers[] = {
+    {is_async_memerr, intel_memerr_dhandler},
+    {default_check, intel_default_dhandler}
+};
 
 static void intel_default_uhandler(int bnum,
              struct mca_binfo *binfo,
@@ -749,8 +752,9 @@ static void intel_default_uhandler(int b
     }
 }
 
-struct mca_error_handler intel_mce_uhandlers[] =
-            {{default_check, intel_default_uhandler}};
+static const struct mca_error_handler intel_mce_uhandlers[] = {
+    {default_check, intel_default_uhandler}
+};
 
 static void intel_machine_check(struct cpu_user_regs * regs, long error_code)
 {
@@ -1222,9 +1226,9 @@ static void intel_init_mce(void)
     mce_need_clearbank_register(intel_need_clearbank_scan);
 
     mce_dhandlers = intel_mce_dhandlers;
-    mce_dhandler_num = sizeof(intel_mce_dhandlers)/sizeof(struct 
mca_error_handler);
+    mce_dhandler_num = ARRAY_SIZE(intel_mce_dhandlers);
     mce_uhandlers = intel_mce_uhandlers;
-    mce_uhandler_num = sizeof(intel_mce_uhandlers)/sizeof(struct 
mca_error_handler);
+    mce_uhandler_num = ARRAY_SIZE(intel_mce_uhandlers);
 }
 
 static void cpu_mcabank_free(unsigned int cpu)
--- 2011-03-09.orig/xen/arch/x86/cpu/mcheck/vmce.c
+++ 2011-03-09/xen/arch/x86/cpu/mcheck/vmce.c
@@ -20,11 +20,11 @@
 
 #define dom_vmce(x)   ((x)->arch.vmca_msrs)
 
-uint64_t g_mcg_cap;
+static uint64_t __read_mostly g_mcg_cap;
 
 /* Real value in physical CTL MSR */
-uint64_t h_mcg_ctl = 0UL;
-uint64_t *h_mci_ctrl;
+static uint64_t __read_mostly h_mcg_ctl;
+static uint64_t *__read_mostly h_mci_ctrl;
 
 int vmce_init_msr(struct domain *d)
 {
@@ -425,6 +425,7 @@ int fill_vmsr_data(struct mcinfo_bank *m
     return 0;
 }
 
+#if 0 /* currently unused */
 int vmce_domain_inject(
     struct mcinfo_bank *bank, struct domain *d, struct mcinfo_global *global)
 {
@@ -436,6 +437,7 @@ int vmce_domain_inject(
 
     return inject_vmce(d);
 }
+#endif
 
 int vmce_init(struct cpuinfo_x86 *c)
 {


Attachment: x86-mce-cleanup.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 11/11] x86: MCE cleanup, Jan Beulich <=