mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
x86/msr: Replace wrmsr(msr, low, 0) with wrmsrq(msr, low)
The third argument in wrmsr(msr, low, 0) is unnecessary. Instead, use wrmsrq(msr, low), which automatically sets the higher 32 bits of the MSR value to 0. Signed-off-by: Xin Li (Intel) <xin@zytor.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc: Kees Cook <keescook@chromium.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Sean Christopherson <seanjc@google.com> Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Uros Bizjak <ubizjak@gmail.com> Cc: Vitaly Kuznetsov <vkuznets@redhat.com> Link: https://lore.kernel.org/r/20250427092027.1598740-15-xin@zytor.com
This commit is contained in:
parent
0c2678efed
commit
444b46a128
@ -76,10 +76,10 @@ static void hv_apic_write(u32 reg, u32 val)
|
||||
{
|
||||
switch (reg) {
|
||||
case APIC_EOI:
|
||||
wrmsr(HV_X64_MSR_EOI, val, 0);
|
||||
wrmsrq(HV_X64_MSR_EOI, val);
|
||||
break;
|
||||
case APIC_TASKPRI:
|
||||
wrmsr(HV_X64_MSR_TPR, val, 0);
|
||||
wrmsrq(HV_X64_MSR_TPR, val);
|
||||
break;
|
||||
default:
|
||||
native_apic_mem_write(reg, val);
|
||||
@ -93,7 +93,7 @@ static void hv_apic_eoi_write(void)
|
||||
if (hvp && (xchg(&hvp->apic_assist, 0) & 0x1))
|
||||
return;
|
||||
|
||||
wrmsr(HV_X64_MSR_EOI, APIC_EOI_ACK, 0);
|
||||
wrmsrq(HV_X64_MSR_EOI, APIC_EOI_ACK);
|
||||
}
|
||||
|
||||
static bool cpu_is_self(int cpu)
|
||||
|
@ -209,7 +209,7 @@ static inline void native_apic_msr_write(u32 reg, u32 v)
|
||||
reg == APIC_LVR)
|
||||
return;
|
||||
|
||||
wrmsr(APIC_BASE_MSR + (reg >> 4), v, 0);
|
||||
wrmsrq(APIC_BASE_MSR + (reg >> 4), v);
|
||||
}
|
||||
|
||||
static inline void native_apic_msr_eoi(void)
|
||||
|
@ -61,7 +61,7 @@ static inline void refresh_sysenter_cs(struct thread_struct *thread)
|
||||
return;
|
||||
|
||||
this_cpu_write(cpu_tss_rw.x86_tss.ss1, thread->sysenter_cs);
|
||||
wrmsr(MSR_IA32_SYSENTER_CS, thread->sysenter_cs, 0);
|
||||
wrmsrq(MSR_IA32_SYSENTER_CS, thread->sysenter_cs);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ void amd_set_dr_addr_mask(unsigned long mask, unsigned int dr)
|
||||
if (per_cpu(amd_dr_addr_mask, cpu)[dr] == mask)
|
||||
return;
|
||||
|
||||
wrmsr(amd_msr_dr_addr_masks[dr], mask, 0);
|
||||
wrmsrq(amd_msr_dr_addr_masks[dr], mask);
|
||||
per_cpu(amd_dr_addr_mask, cpu)[dr] = mask;
|
||||
}
|
||||
|
||||
|
@ -1982,9 +1982,9 @@ void enable_sep_cpu(void)
|
||||
*/
|
||||
|
||||
tss->x86_tss.ss1 = __KERNEL_CS;
|
||||
wrmsr(MSR_IA32_SYSENTER_CS, tss->x86_tss.ss1, 0);
|
||||
wrmsr(MSR_IA32_SYSENTER_ESP, (unsigned long)(cpu_entry_stack(cpu) + 1), 0);
|
||||
wrmsr(MSR_IA32_SYSENTER_EIP, (unsigned long)entry_SYSENTER_32, 0);
|
||||
wrmsrq(MSR_IA32_SYSENTER_CS, tss->x86_tss.ss1);
|
||||
wrmsrq(MSR_IA32_SYSENTER_ESP, (unsigned long)(cpu_entry_stack(cpu) + 1));
|
||||
wrmsrq(MSR_IA32_SYSENTER_EIP, (unsigned long)entry_SYSENTER_32);
|
||||
|
||||
put_cpu();
|
||||
}
|
||||
@ -2198,7 +2198,7 @@ static inline void setup_getcpu(int cpu)
|
||||
struct desc_struct d = { };
|
||||
|
||||
if (boot_cpu_has(X86_FEATURE_RDTSCP) || boot_cpu_has(X86_FEATURE_RDPID))
|
||||
wrmsr(MSR_TSC_AUX, cpudata, 0);
|
||||
wrmsrq(MSR_TSC_AUX, cpudata);
|
||||
|
||||
/* Store CPU and node number in limit. */
|
||||
d.limit0 = cpudata;
|
||||
|
@ -905,7 +905,7 @@ int resctrl_arch_measure_cycles_lat_fn(void *_plr)
|
||||
* Disable hardware prefetchers.
|
||||
*/
|
||||
rdmsr(MSR_MISC_FEATURE_CONTROL, saved_low, saved_high);
|
||||
wrmsr(MSR_MISC_FEATURE_CONTROL, prefetch_disable_bits, 0x0);
|
||||
wrmsrq(MSR_MISC_FEATURE_CONTROL, prefetch_disable_bits);
|
||||
mem_r = READ_ONCE(plr->kmem);
|
||||
/*
|
||||
* Dummy execute of the time measurement to load the needed
|
||||
@ -1001,7 +1001,7 @@ static int measure_residency_fn(struct perf_event_attr *miss_attr,
|
||||
* Disable hardware prefetchers.
|
||||
*/
|
||||
rdmsr(MSR_MISC_FEATURE_CONTROL, saved_low, saved_high);
|
||||
wrmsr(MSR_MISC_FEATURE_CONTROL, prefetch_disable_bits, 0x0);
|
||||
wrmsrq(MSR_MISC_FEATURE_CONTROL, prefetch_disable_bits);
|
||||
|
||||
/* Initialize rest of local variables */
|
||||
/*
|
||||
|
@ -1708,7 +1708,7 @@ void resctrl_arch_mon_event_config_write(void *_config_info)
|
||||
pr_warn_once("Invalid event id %d\n", config_info->evtid);
|
||||
return;
|
||||
}
|
||||
wrmsr(MSR_IA32_EVT_CFG_BASE + index, config_info->mon_config, 0);
|
||||
wrmsrq(MSR_IA32_EVT_CFG_BASE + index, config_info->mon_config);
|
||||
}
|
||||
|
||||
static void mbm_config_write_domain(struct rdt_resource *r,
|
||||
|
@ -33,7 +33,7 @@ static DEFINE_MUTEX(umwait_lock);
|
||||
static void umwait_update_control_msr(void * unused)
|
||||
{
|
||||
lockdep_assert_irqs_disabled();
|
||||
wrmsr(MSR_IA32_UMWAIT_CONTROL, READ_ONCE(umwait_control_cached), 0);
|
||||
wrmsrq(MSR_IA32_UMWAIT_CONTROL, READ_ONCE(umwait_control_cached));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -71,7 +71,7 @@ static int umwait_cpu_offline(unsigned int cpu)
|
||||
* the original control MSR value in umwait_init(). So there
|
||||
* is no race condition here.
|
||||
*/
|
||||
wrmsr(MSR_IA32_UMWAIT_CONTROL, orig_umwait_control_cached, 0);
|
||||
wrmsrq(MSR_IA32_UMWAIT_CONTROL, orig_umwait_control_cached);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ static void kvm_disable_steal_time(void)
|
||||
if (!has_steal_clock)
|
||||
return;
|
||||
|
||||
wrmsr(MSR_KVM_STEAL_TIME, 0, 0);
|
||||
wrmsrq(MSR_KVM_STEAL_TIME, 0);
|
||||
}
|
||||
|
||||
static u64 kvm_steal_clock(int cpu)
|
||||
|
Loading…
Reference in New Issue
Block a user