Replace our hand-rolled functions with the generic ones provided by
kern/subr_physmem.c. This greatly simplifies the initialization of
physical memory regions and kernel globals.
Details
- Reviewers
br markj - Group Reviewers
riscv - Commits
- rS360083: RISC-V: use physmem to manage physical memory
Diff Detail
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 30045 Build 27856: arc lint + arc unit
Event Timeline
I've found this to fail to boot, because it didn't reserve memory for the DTB (supplied by BBL). I'm not entirely sure if that's a result of an issue with your patch, or if there's something wrong in our local tree.
How is the DTB memory supposed to be reserved?
The following fixes the immediate problem for me:
@@ -806,9 +808,11 @@ initriscv(struct riscv_bootparams *rvbp) #ifdef FDT try_load_dtb(kmdp, rvbp->dtbp_virt); #endif + /* Reserve memory for the DTB. */ + physmem_exclude_region(rvbp->dtbp_phys, L2_SIZE, EXFLAG_NOALLOC);
Thanks! I should have realised. I'd already seen the other patch, but somehow neglected to include it in my tests.
sys/riscv/riscv/machdep.c | ||
---|---|---|
856 | Do you prefer to use square brackets for a single line statements? |
In vnet_register_sysinit() we have lock order
I think it is best to make lock order consistent with that in vnet_register_sysinit(), although dead lock is not possible.