[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/mcheck: replace remaining uses of __get_cpu_var()
commit 19b2006a8950eaf11606a6fc3df666f2982321ad Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Jun 25 17:33:40 2019 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Jun 25 17:33:40 2019 +0200 x86/mcheck: replace remaining uses of __get_cpu_var() this_cpu() is shorter, and when there are multiple uses in a function per_cpu() it's also more efficient. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/cpu/mcheck/mce.c | 15 ++++++++------- xen/arch/x86/cpu/mcheck/mce_intel.c | 13 +++++++------ xen/arch/x86/cpu/mcheck/non-fatal.c | 5 +++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index c48070119f..2a9747ed19 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -473,7 +473,8 @@ void mcheck_cmn_handler(const struct cpu_user_regs *regs) static atomic_t found_error = ATOMIC_INIT(0); static cpumask_t mce_fatal_cpus; struct mca_banks *bankmask = mca_allbanks; - struct mca_banks *clear_bank = __get_cpu_var(mce_clear_banks); + unsigned int cpu = smp_processor_id(); + struct mca_banks *clear_bank = per_cpu(mce_clear_banks, cpu); uint64_t gstatus; mctelem_cookie_t mctc = NULL; struct mca_summary bs; @@ -504,17 +505,17 @@ void mcheck_cmn_handler(const struct cpu_user_regs *regs) * the telemetry after reboot (the MSRs are sticky) */ if ( bs.pcc || !bs.recoverable ) - cpumask_set_cpu(smp_processor_id(), &mce_fatal_cpus); + cpumask_set_cpu(cpu, &mce_fatal_cpus); } else if ( mctc != NULL ) mctelem_commit(mctc); atomic_set(&found_error, 1); /* The last CPU will be take check/clean-up etc */ - atomic_set(&severity_cpu, smp_processor_id()); + atomic_set(&severity_cpu, cpu); - mce_printk(MCE_CRITICAL, "MCE: clear_bank map %lx on CPU%d\n", - *((unsigned long *)clear_bank), smp_processor_id()); + mce_printk(MCE_CRITICAL, "MCE: clear_bank map %lx on CPU%u\n", + *((unsigned long *)clear_bank), cpu); if ( clear_bank != NULL ) mcheck_mca_clearbanks(clear_bank); } @@ -524,14 +525,14 @@ void mcheck_cmn_handler(const struct cpu_user_regs *regs) mce_barrier_enter(&mce_trap_bar, bcast); if ( mctc != NULL && mce_urgent_action(regs, mctc) ) - cpumask_set_cpu(smp_processor_id(), &mce_fatal_cpus); + cpumask_set_cpu(cpu, &mce_fatal_cpus); mce_barrier_exit(&mce_trap_bar, bcast); /* * Wait until everybody has processed the trap. */ mce_barrier_enter(&mce_trap_bar, bcast); - if ( lmce || atomic_read(&severity_cpu) == smp_processor_id() ) + if ( lmce || atomic_read(&severity_cpu) == cpu ) { /* * According to SDM, if no error bank found on any cpus, diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/mce_intel.c index 5367ea90d7..5a10744ade 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -492,6 +492,7 @@ static int do_cmci_discover(int i) unsigned msr = MSR_IA32_MCx_CTL2(i); u64 val; unsigned int threshold, max_threshold; + unsigned int cpu = smp_processor_id(); static unsigned int cmci_threshold = 2; integer_param("cmci-threshold", cmci_threshold); @@ -499,7 +500,7 @@ static int do_cmci_discover(int i) /* Some other CPU already owns this bank. */ if ( val & CMCI_EN ) { - mcabanks_clear(i, __get_cpu_var(mce_banks_owned)); + mcabanks_clear(i, per_cpu(mce_banks_owned, cpu)); goto out; } @@ -512,7 +513,7 @@ static int do_cmci_discover(int i) if ( !(val & CMCI_EN) ) { /* This bank does not support CMCI. Polling timer has to handle it. */ - mcabanks_set(i, __get_cpu_var(no_cmci_banks)); + mcabanks_set(i, per_cpu(no_cmci_banks, cpu)); wrmsrl(msr, val & ~CMCI_THRESHOLD_MASK); return 0; } @@ -522,13 +523,13 @@ static int do_cmci_discover(int i) { mce_printk(MCE_QUIET, "CMCI: threshold %#x too large for CPU%u bank %u, using %#x\n", - threshold, smp_processor_id(), i, max_threshold); + threshold, cpu, i, max_threshold); threshold = max_threshold; } wrmsrl(msr, (val & ~CMCI_THRESHOLD_MASK) | CMCI_EN | threshold); - mcabanks_set(i, __get_cpu_var(mce_banks_owned)); + mcabanks_set(i, per_cpu(mce_banks_owned, cpu)); out: - mcabanks_clear(i, __get_cpu_var(no_cmci_banks)); + mcabanks_clear(i, per_cpu(no_cmci_banks, cpu)); return 1; } @@ -648,7 +649,7 @@ static void cmci_interrupt(struct cpu_user_regs *regs) ack_APIC_irq(); mctc = mcheck_mca_logout( - MCA_CMCI_HANDLER, __get_cpu_var(mce_banks_owned), &bs, NULL); + MCA_CMCI_HANDLER, this_cpu(mce_banks_owned), &bs, NULL); if ( bs.errcnt && mctc != NULL ) { diff --git a/xen/arch/x86/cpu/mcheck/non-fatal.c b/xen/arch/x86/cpu/mcheck/non-fatal.c index 77be4185e4..ec52d37c96 100644 --- a/xen/arch/x86/cpu/mcheck/non-fatal.c +++ b/xen/arch/x86/cpu/mcheck/non-fatal.c @@ -38,7 +38,8 @@ static void mce_checkregs (void *info) struct mca_summary bs; static uint64_t dumpcount = 0; - mctc = mcheck_mca_logout(MCA_POLLER, __get_cpu_var(poll_bankmask), &bs, NULL); + mctc = mcheck_mca_logout(MCA_POLLER, this_cpu(poll_bankmask), + &bs, NULL); if (bs.errcnt && mctc != NULL) { adjust++; @@ -93,7 +94,7 @@ static int __init init_nonfatal_mce_checker(void) if (!opt_mce || !mce_available(c)) return -ENODEV; - if (__get_cpu_var(poll_bankmask) == NULL) + if (!this_cpu(poll_bankmask)) return -EINVAL; /* -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |