From 8bd563707d909d7bb414de2c0ff4ab66eb8009db Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 15 Mar 2025 14:25:42 +0000 Subject: x86: Add functions to convert between mtrr size and mask Rather than repeating the same code in several places, add some functions which can do the conversion. Use the cpu_phys_address_size() function to obtain the physical-address size, since it is more reliable with kvm, where the host CPU may have a different value from the emulation CPU. Signed-off-by: Simon Glass --- cmd/x86/mtrr.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'cmd') diff --git a/cmd/x86/mtrr.c b/cmd/x86/mtrr.c index b2afb598c73..93be84f74b8 100644 --- a/cmd/x86/mtrr.c +++ b/cmd/x86/mtrr.c @@ -14,7 +14,7 @@ static int do_mtrr_set(int cpu_select, uint reg, int argc, char *const argv[]) { const char *typename = argv[0]; uint32_t start, size; - uint64_t base, mask; + u64 base, mask; int type = -1; bool valid; int ret; @@ -31,8 +31,7 @@ static int do_mtrr_set(int cpu_select, uint reg, int argc, char *const argv[]) base = start | type; valid = native_read_msr(MTRR_PHYS_MASK_MSR(reg)) & MTRR_PHYS_MASK_VALID; - mask = ~((uint64_t)size - 1); - mask &= (1ULL << CONFIG_CPU_ADDR_BITS) - 1; + mask = mtrr_to_mask(size); if (valid) mask |= MTRR_PHYS_MASK_VALID; -- cgit v1.2.3