diff options
author | 2019-07-31 12:38:04 +0000 | |
---|---|---|
committer | 2019-07-31 12:38:04 +0000 | |
commit | 0b81d999103793343967bd0686f2a61f77585eb2 (patch) | |
tree | 2fd00b822f6c6279e40d9a31ef85bdd0f2c1ba25 | |
parent | Fix errors while building bsd.rd & minirootXX.fs on luna88k that is (diff) | |
download | wireguard-openbsd-0b81d999103793343967bd0686f2a61f77585eb2.tar.xz wireguard-openbsd-0b81d999103793343967bd0686f2a61f77585eb2.zip |
Fix kmem access on octeon. Currently, mem_layout lists segments that
were free after the kernel was loaded. The memory occupied by the kernel
image is not included. To let libkvm access the image through /dev/kmem,
return true from is_memory_range() if the physical address is within
the kernel.
-rw-r--r-- | sys/arch/octeon/octeon/machdep.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/arch/octeon/octeon/machdep.c b/sys/arch/octeon/octeon/machdep.c index cd6914708a2..f67a139bdc4 100644 --- a/sys/arch/octeon/octeon/machdep.c +++ b/sys/arch/octeon/octeon/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.116 2019/07/17 14:47:42 visa Exp $ */ +/* $OpenBSD: machdep.c,v 1.117 2019/07/31 12:38:04 visa Exp $ */ /* * Copyright (c) 2009, 2010 Miodrag Vallat. @@ -903,6 +903,7 @@ dumpsys() boolean_t is_memory_range(paddr_t pa, psize_t len, psize_t limit) { + extern char start[]; struct phys_mem_desc *seg; uint64_t fp, lp; int i; @@ -913,6 +914,11 @@ is_memory_range(paddr_t pa, psize_t len, psize_t limit) if (limit != 0 && lp > atop(limit)) return FALSE; + /* The kernel is linked in CKSEG0. */ + if (fp >= atop(trunc_page(CKSEG0_TO_PHYS((vaddr_t)start))) && + lp <= atop(round_page(CKSEG0_TO_PHYS((vaddr_t)ekern)))) + return TRUE; + for (i = 0, seg = mem_layout; i < MAXMEMSEGS; i++, seg++) if (fp >= seg->mem_first_page && lp <= seg->mem_last_page) return TRUE; |