Page MenuHomeFreeBSD

RISC-V: use physmem to manage physical memory
Needs ReviewPublic

Authored by mhorne on Sun, Mar 22, 6:38 PM.

Details

Reviewers
br
markj
Group Reviewers
riscv
Summary

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.

Diff Detail

Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 30293
Build 28067: arc lint + arc unit

Event Timeline

mhorne created this revision.Sun, Mar 22, 6:38 PM
kp added a subscriber: kp.Fri, Mar 27, 5:26 PM

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);
In D24154#532404, @kp wrote:

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);

Looks like I missed linking one of the parents. This patch also depends on D24152.

kp added a comment.Sat, Mar 28, 9:43 AM

Looks like I missed linking one of the parents. This patch also depends on D24152.

Thanks! I should have realised. I'd already seen the other patch, but somehow neglected to include it in my tests.

br added inline comments.Mon, Mar 30, 4:49 PM
sys/riscv/riscv/machdep.c
858

Do you prefer to use square brackets for a single line statements?

mhorne marked an inline comment as done.Sat, Apr 4, 10:11 PM