Re: [PATCH RFC 4/7] x86/microcode/intel: Prepare for microcode staging

From: Chang S. Bae
Date: Mon Nov 04 2024 - 15:10:23 EST


On 11/4/2024 10:34 AM, Chang S. Bae wrote:
On 11/4/2024 8:08 AM, Dave Hansen wrote:
On 11/4/24 03:16, Borislav Petkov wrote:
On Tue, Oct 01, 2024 at 09:10:39AM -0700, Chang S. Bae wrote:
+static inline u64 staging_addr(u32 cpu)
+{
+    u32 lo, hi;
+
+    rdmsr_on_cpu(cpu, MSR_IA32_MCU_STAGING_MBOX_ADDR, &lo, &hi);
+    return lo | ((u64)hi << 32);
+}
A single usage site. Move its code there and get rid of the function.

Yeah, and it'll look a lot nicer if you use:

    rdmsrl_on_cpu(cpu, MSR_IA32_MCU_STAGING_MBOX_ADDR, &addr);

and don't have to do the high/lo munging.

Oh, silly me missed this function. Thanks.

Okay, I took another look and found a similar case:

diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
index 0f04feb6cafa..b942cd11e179 100644
--- a/drivers/cpufreq/acpi-cpufreq.c
+++ b/drivers/cpufreq/acpi-cpufreq.c
@@ -73,20 +73,17 @@ static unsigned int acpi_pstate_strict;

static bool boost_state(unsigned int cpu)
{
- u32 lo, hi;
u64 msr;

switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_INTEL:
case X86_VENDOR_CENTAUR:
case X86_VENDOR_ZHAOXIN:
- rdmsr_on_cpu(cpu, MSR_IA32_MISC_ENABLE, &lo, &hi);
- msr = lo | ((u64)hi << 32);
+ rdmsrl_on_cpu(cpu, MSR_IA32_MISC_ENABLE, &msr);
return !(msr & MSR_IA32_MISC_ENABLE_TURBO_DISABLE);
case X86_VENDOR_HYGON:
case X86_VENDOR_AMD:
- rdmsr_on_cpu(cpu, MSR_K7_HWCR, &lo, &hi);
- msr = lo | ((u64)hi << 32);
+ rdmsrl_on_cpu(cpu, MSR_K7_HWCR, &msr);
return !(msr & MSR_K7_HWCR_CPB_DIS);
}
return false;

I'll be following up with a patch to clean this up as well.

Thanks,
Chang