summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/i386/i386/machdep.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index ae4dc22..e17dba5 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -1533,6 +1533,7 @@ getmemsize(int first)
pt_entry_t *pte;
char *cp;
struct bios_smap *smap;
+ quad_t dcons_addr, dcons_size;
hasbrokenint12 = 0;
TUNABLE_INT_FETCH("hw.hasbrokenint12", &hasbrokenint12);
@@ -1817,6 +1818,13 @@ physmap_done:
pte = CMAP1;
/*
+ * Get dcons buffer address
+ */
+ if (getenv_quad("dcons.addr", &dcons_addr) == 0 ||
+ getenv_quad("dcons.size", &dcons_size) == 0)
+ dcons_addr = 0;
+
+ /*
* physmap is in bytes, so when converting to page boundaries,
* round up the start address and round down the end address.
*/
@@ -1835,6 +1843,14 @@ physmap_done:
*/
if (pa >= KERNLOAD && pa < first)
continue;
+
+ /*
+ * block out dcons buffer
+ */
+ if (dcons_addr > 0
+ && pa >= trunc_page(dcons_addr)
+ && pa < dcons_addr + dcons_size)
+ continue;
page_bad = FALSE;
OpenPOWER on IntegriCloud