cpu/x86/mtrr/debug: drop unnecessary MSR union

Commit 407e00dca0 ("include/cpu/msr.h: transform into an union")
changed the msr_t type to a union that allows accessing the full 64 bit
via the raw element, so there's no need to wrap it again in another
union for the full 64 bit access.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I750307297283802021fac19e2cdf5faa12ede196
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78003
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
This commit is contained in:
Felix Held 2023-09-19 17:38:16 +02:00
parent ce14b611d4
commit 94b91c3ebb
1 changed files with 25 additions and 55 deletions

View File

@ -52,46 +52,29 @@ static void display_mtrr_fixed_types(uint64_t msr,
static void display_4k_mtrr(uint32_t msr_reg, uint32_t starting_address, static void display_4k_mtrr(uint32_t msr_reg, uint32_t starting_address,
const char *name) const char *name)
{ {
union { msr_t msr = rdmsr(msr_reg);
uint64_t u64; printk(BIOS_DEBUG, "0x%016llx: %s\n", msr.raw, name);
msr_t s; display_mtrr_fixed_types(msr.raw, starting_address, 0x1000);
} msr;
msr.s = rdmsr(msr_reg);
printk(BIOS_DEBUG, "0x%016llx: %s\n", msr.u64, name);
display_mtrr_fixed_types(msr.u64, starting_address, 0x1000);
} }
static void display_16k_mtrr(uint32_t msr_reg, uint32_t starting_address, static void display_16k_mtrr(uint32_t msr_reg, uint32_t starting_address,
const char *name) const char *name)
{ {
union { msr_t msr = rdmsr(msr_reg);
uint64_t u64; printk(BIOS_DEBUG, "0x%016llx: %s\n", msr.raw, name);
msr_t s; display_mtrr_fixed_types(msr.raw, starting_address, 0x4000);
} msr;
msr.s = rdmsr(msr_reg);
printk(BIOS_DEBUG, "0x%016llx: %s\n", msr.u64, name);
display_mtrr_fixed_types(msr.u64, starting_address, 0x4000);
} }
static void display_64k_mtrr(void) static void display_64k_mtrr(void)
{ {
union { msr_t msr = rdmsr(MTRR_FIX_64K_00000);
uint64_t u64; printk(BIOS_DEBUG, "0x%016llx: IA32_MTRR_FIX64K_00000\n", msr.raw);
msr_t s; display_mtrr_fixed_types(msr.raw, 0, 0x10000);
} msr;
msr.s = rdmsr(MTRR_FIX_64K_00000);
printk(BIOS_DEBUG, "0x%016llx: IA32_MTRR_FIX64K_00000\n", msr.u64);
display_mtrr_fixed_types(msr.u64, 0, 0x10000);
} }
static void display_mtrrcap(void) static void display_mtrrcap(void)
{ {
msr_t msr; msr_t msr = rdmsr(MTRR_CAP_MSR);
msr = rdmsr(MTRR_CAP_MSR);
printk(BIOS_DEBUG, printk(BIOS_DEBUG,
"0x%08x%08x: IA32_MTRRCAP: %s%s%s%s%u variable MTRRs\n", "0x%08x%08x: IA32_MTRRCAP: %s%s%s%s%u variable MTRRs\n",
msr.hi, msr.lo, msr.hi, msr.lo,
@ -104,17 +87,12 @@ static void display_mtrrcap(void)
static void display_mtrr_def_type(void) static void display_mtrr_def_type(void)
{ {
union { msr_t msr = rdmsr(MTRR_DEF_TYPE_MSR);
uint64_t u64;
msr_t s;
} msr;
msr.s = rdmsr(MTRR_DEF_TYPE_MSR);
printk(BIOS_DEBUG, "0x%016llx: IA32_MTRR_DEF_TYPE:%s%s %s\n", printk(BIOS_DEBUG, "0x%016llx: IA32_MTRR_DEF_TYPE:%s%s %s\n",
msr.u64, msr.raw,
(msr.u64 & MTRR_DEF_TYPE_EN) ? " E," : "", (msr.raw & MTRR_DEF_TYPE_EN) ? " E," : "",
(msr.u64 & MTRR_DEF_TYPE_FIX_EN) ? " FE," : "", (msr.raw & MTRR_DEF_TYPE_FIX_EN) ? " FE," : "",
display_mtrr_type((uint32_t)(msr.u64 & display_mtrr_type((uint32_t)(msr.raw &
MTRR_DEF_TYPE_MASK))); MTRR_DEF_TYPE_MASK)));
} }
@ -124,33 +102,25 @@ static void display_variable_mtrr(int index, uint64_t address_mask)
uint64_t base_address; uint64_t base_address;
uint64_t length; uint64_t length;
uint64_t mask; uint64_t mask;
union { msr_t msr_a = rdmsr(msr_reg);
uint64_t u64; msr_t msr_m = rdmsr(msr_reg + 1);
msr_t s;
} msr_a;
union {
uint64_t u64;
msr_t s;
} msr_m;
msr_a.s = rdmsr(msr_reg); if (msr_m.raw & MTRR_PHYS_MASK_VALID) {
msr_m.s = rdmsr(msr_reg + 1); base_address = (msr_a.raw & 0xfffffffffffff000ULL)
if (msr_m.u64 & MTRR_PHYS_MASK_VALID) {
base_address = (msr_a.u64 & 0xfffffffffffff000ULL)
& address_mask; & address_mask;
printk(BIOS_DEBUG, printk(BIOS_DEBUG,
"0x%016llx: PHYBASE%d: Address = 0x%016llx, %s\n", "0x%016llx: PHYBASE%d: Address = 0x%016llx, %s\n",
msr_a.u64, index, base_address, msr_a.raw, index, base_address,
display_mtrr_type(msr_a.u64 & MTRR_DEF_TYPE_MASK)); display_mtrr_type(msr_a.raw & MTRR_DEF_TYPE_MASK));
mask = (msr_m.u64 & 0xfffffffffffff000ULL) & address_mask; mask = (msr_m.raw & 0xfffffffffffff000ULL) & address_mask;
length = (~mask & address_mask) + 1; length = (~mask & address_mask) + 1;
printk(BIOS_DEBUG, printk(BIOS_DEBUG,
"0x%016llx: PHYMASK%d: Length = 0x%016llx, Valid\n", "0x%016llx: PHYMASK%d: Length = 0x%016llx, Valid\n",
msr_m.u64, index, length); msr_m.raw, index, length);
} else { } else {
printk(BIOS_DEBUG, "0x%016llx: PHYBASE%d\n", msr_a.u64, index); printk(BIOS_DEBUG, "0x%016llx: PHYBASE%d\n", msr_a.raw, index);
printk(BIOS_DEBUG, "0x%016llx: PHYMASK%d: Disabled\n", printk(BIOS_DEBUG, "0x%016llx: PHYMASK%d: Disabled\n",
msr_m.u64, index); msr_m.raw, index);
} }
} }