summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2020-05-28 10:17:34 -0600
committerAaron Durbin <adurbin@chromium.org>2020-06-02 16:10:13 +0000
commit1ebbb165efe71e83fbf19a9ce6c4bf14e2448d81 (patch)
treec551359675462ccaf4758208403163a2103720cf
parente1bf0656afaf4cdbb9759178b6b2af21baba42d7 (diff)
downloadcoreboot-1ebbb165efe71e83fbf19a9ce6c4bf14e2448d81.tar.xz
cpu/x86/mtrr: add x86_setup_mtrrs_with_detect_no_above_4gb()
There's not a function that is the equivalent to x86_setup_mtrrs_with_detect() but not solving for above 4GiB. Provide x86_setup_mtrrs_with_detect_no_above_4gb() which is the equivalent to x86_setup_mtrrs_with_detect() but instructs the MTRR solver to not take into account memory above 4GiB. BUG=b:155426691 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Change-Id: Ia1b5d67d6f139aaa929e03ddbc394d57dfb949e0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/41897 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/cpu/x86/mtrr/mtrr.c18
-rw-r--r--src/include/cpu/x86/mtrr.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/src/cpu/x86/mtrr/mtrr.c b/src/cpu/x86/mtrr/mtrr.c
index 1f37659503..77525a7907 100644
--- a/src/cpu/x86/mtrr/mtrr.c
+++ b/src/cpu/x86/mtrr/mtrr.c
@@ -774,7 +774,7 @@ void x86_setup_var_mtrrs(unsigned int address_bits, unsigned int above4gb)
commit_var_mtrrs(sol);
}
-void x86_setup_mtrrs(void)
+static void _x86_setup_mtrrs(unsigned int above4gb)
{
int address_size;
@@ -782,14 +782,26 @@ void x86_setup_mtrrs(void)
address_size = cpu_phys_address_size();
printk(BIOS_DEBUG, "CPU physical address size: %d bits\n",
address_size);
+ x86_setup_var_mtrrs(address_size, above4gb);
+}
+
+void x86_setup_mtrrs(void)
+{
/* Always handle addresses above 4GiB. */
- x86_setup_var_mtrrs(address_size, 1);
+ _x86_setup_mtrrs(1);
}
void x86_setup_mtrrs_with_detect(void)
{
detect_var_mtrrs();
- x86_setup_mtrrs();
+ /* Always handle addresses above 4GiB. */
+ _x86_setup_mtrrs(1);
+}
+
+void x86_setup_mtrrs_with_detect_no_above_4gb(void)
+{
+ detect_var_mtrrs();
+ _x86_setup_mtrrs(0);
}
void x86_mtrr_check(void)
diff --git a/src/include/cpu/x86/mtrr.h b/src/include/cpu/x86/mtrr.h
index c1ee51accf..412330449f 100644
--- a/src/include/cpu/x86/mtrr.h
+++ b/src/include/cpu/x86/mtrr.h
@@ -77,6 +77,7 @@ void x86_setup_mtrrs(void);
* it always dynamically detects the number of variable MTRRs available.
*/
void x86_setup_mtrrs_with_detect(void);
+void x86_setup_mtrrs_with_detect_no_above_4gb(void);
/*
* x86_setup_var_mtrrs() parameters:
* address_bits - number of physical address bits supported by cpu