summaryrefslogtreecommitdiff
path: root/src/cpu/x86
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86')
-rw-r--r--src/cpu/x86/mtrr/mtrr.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cpu/x86/mtrr/mtrr.c b/src/cpu/x86/mtrr/mtrr.c
index efd0b68368..794df9922b 100644
--- a/src/cpu/x86/mtrr/mtrr.c
+++ b/src/cpu/x86/mtrr/mtrr.c
@@ -789,8 +789,6 @@ void x86_setup_var_mtrrs(unsigned int address_bits, unsigned int above4gb)
addr_space = get_physical_address_space();
if (sol == NULL) {
- if (above4gb == 2)
- detect_var_mtrrs();
sol = &mtrr_global_solution;
sol->mtrr_default_type =
calc_var_mtrrs(addr_space, !!above4gb, address_bits);
@@ -804,12 +802,21 @@ void x86_setup_var_mtrrs(unsigned int address_bits, unsigned int above4gb)
void x86_setup_mtrrs(void)
{
int address_size;
+
x86_setup_fixed_mtrrs();
address_size = cpu_phys_address_size();
- printk(BIOS_DEBUG, "CPU physical address size: %d bits\n", address_size);
+ printk(BIOS_DEBUG, "CPU physical address size: %d bits\n",
+ address_size);
+ /* Always handle addresses above 4GiB. */
x86_setup_var_mtrrs(address_size, 1);
}
+void x86_setup_mtrrs_with_detect(void)
+{
+ detect_var_mtrrs();
+ x86_setup_mtrrs();
+}
+
void x86_mtrr_check(void)
{
/* Only Pentium Pro and later have MTRR */