git: 8a0339e679aa - main - riscv: eliminate physmap global
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 07 Apr 2022 15:27:19 UTC
The branch main has been updated by mhorne:
URL: https://cgit.FreeBSD.org/src/commit/?id=8a0339e679aada927966be10f897891b447edb0b
commit 8a0339e679aada927966be10f897891b447edb0b
Author: Mitchell Horne <mhorne@FreeBSD.org>
AuthorDate: 2022-04-07 15:13:19 +0000
Commit: Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2022-04-07 15:26:59 +0000
riscv: eliminate physmap global
Since physical memory management is now handled by subr_physmem.c, the
need to keep this global array has diminished. It is not referenced
outside of early boot-time, and is populated by physmem_avail() in
pmap_bootstrap(). Just allocate the array on the stack for the duration
of its lifetime.
The check against physmap[0] in initriscv() can be dropped altogether,
as there is no consequence for excluding a memory range twice.
Reviewed by: markj
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D34778
---
sys/riscv/include/machdep.h | 3 ---
sys/riscv/riscv/machdep.c | 16 +++++-----------
sys/riscv/riscv/pmap.c | 2 ++
3 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/sys/riscv/include/machdep.h b/sys/riscv/include/machdep.h
index dddc30544a3f..d06cc61655aa 100644
--- a/sys/riscv/include/machdep.h
+++ b/sys/riscv/include/machdep.h
@@ -46,9 +46,6 @@ struct riscv_bootparams {
vm_offset_t modulep; /* loader(8) metadata */
};
-extern vm_paddr_t physmap[PHYS_AVAIL_ENTRIES];
-extern u_int physmap_idx;
-
void initriscv(struct riscv_bootparams *);
#endif /* _MACHINE_MACHDEP_H_ */
diff --git a/sys/riscv/riscv/machdep.c b/sys/riscv/riscv/machdep.c
index c27baa2d4a95..b03d45b018ec 100644
--- a/sys/riscv/riscv/machdep.c
+++ b/sys/riscv/riscv/machdep.c
@@ -111,9 +111,6 @@ int cold = 1;
#define DTB_SIZE_MAX (1024 * 1024)
-vm_paddr_t physmap[PHYS_AVAIL_ENTRIES];
-u_int physmap_idx;
-
struct kva_md_info kmi;
int64_t dcache_line_size; /* The minimum D cache line size */
@@ -553,18 +550,15 @@ initriscv(struct riscv_bootparams *rvbp)
#ifdef FDT
/*
- * XXX: Exclude the lowest 2MB of physical memory, if it hasn't been
- * already, as this area is assumed to contain the SBI firmware. This
- * is a little fragile, but it is consistent with the platforms we
- * support so far.
+ * XXX: Unconditionally exclude the lowest 2MB of physical memory, as
+ * this area is assumed to contain the SBI firmware. This is a little
+ * fragile, but it is consistent with the platforms we support so far.
*
* TODO: remove this when the all regular booting methods properly
* report their reserved memory in the device tree.
*/
- if (mem_regions[0].mr_start == physmap[0]) {
- physmem_exclude_region(mem_regions[0].mr_start, L2_SIZE,
- EXFLAG_NODUMP | EXFLAG_NOALLOC);
- }
+ physmem_exclude_region(mem_regions[0].mr_start, L2_SIZE,
+ EXFLAG_NODUMP | EXFLAG_NOALLOC);
#endif
physmem_init_kernel_globals();
diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c
index ef33ea6719b8..287fab9720dd 100644
--- a/sys/riscv/riscv/pmap.c
+++ b/sys/riscv/riscv/pmap.c
@@ -620,12 +620,14 @@ pmap_bootstrap_l3(vm_offset_t l1pt, vm_offset_t va, vm_offset_t l3_start)
void
pmap_bootstrap(vm_offset_t l1pt, vm_paddr_t kernstart, vm_size_t kernlen)
{
+ vm_paddr_t physmap[PHYS_AVAIL_ENTRIES];
uint64_t satp;
vm_offset_t dpcpu, freemempos, l0pv, msgbufpv;
vm_paddr_t l0pa, l1pa, max_pa, min_pa, pa;
pd_entry_t *l0p;
pt_entry_t *l2p;
u_int l1_slot, l2_slot;
+ u_int physmap_idx;
int i, mode;
printf("pmap_bootstrap %lx %lx %lx\n", l1pt, kernstart, kernlen);