All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 074b9800 authored by Jan Beulich's avatar Jan Beulich

x86: MCE cleanup

Move some MCE data items into .data.read_mostly. Adjust some types,
and make some symbols static.
Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
parent 6d5f29f1
......@@ -25,7 +25,7 @@ static bool_t __read_mostly ser_support = 0;
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(struct cpu_user_regs *regs)
}
/* 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 cpu_user_regs *regs,
{
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 bnum,
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 bnum,
}
}
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)
......
......@@ -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 *mc_bank, struct domain *d,
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)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment