src/cpu/x86/mtrr/earlymtrr: Add clear_all_var_mtrr

Picasso does not define the state of variable MTRRs on boot. Add a
helper function to clear all MTRRs.

BUG=b:147042464
TEST=Build trembyle

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I21b887ce12849a95ddd8f1698028fb6bbfb4a7f6
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40764
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Raul E Rangel 2020-04-27 15:47:18 -06:00 committed by Aaron Durbin
parent fa52f31e11
commit 3ae3ff2828
2 changed files with 15 additions and 0 deletions

View File

@ -42,3 +42,17 @@ void set_var_mtrr(
maskm.hi = (1 << (cpu_phys_address_size() - 32)) - 1;
wrmsr(MTRR_PHYS_MASK(reg), maskm);
}
void clear_all_var_mtrr(void)
{
msr_t mtrr = {0, 0};
int vcnt;
int i;
vcnt = get_var_mtrr_count();
for (i = 0; i < vcnt; i++) {
wrmsr(MTRR_PHYS_MASK(i), mtrr);
wrmsr(MTRR_PHYS_BASE(i), mtrr);
}
}

View File

@ -107,6 +107,7 @@ static inline int get_var_mtrr_count(void)
void set_var_mtrr(unsigned int reg, unsigned int base, unsigned int size,
unsigned int type);
int get_free_var_mtrr(void);
void clear_all_var_mtrr(void);
asmlinkage void display_mtrrs(void);