Page MenuHomeFreeBSD

riscv: handle kernel PTE edge-case in pmap_enter_l2()
ClosedPublic

Authored by mhorne on Oct 5 2022, 4:24 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Dec 9, 7:14 AM
Unknown Object (File)
Wed, Dec 4, 3:07 PM
Unknown Object (File)
Wed, Dec 4, 3:07 PM
Unknown Object (File)
Wed, Dec 4, 3:07 PM
Unknown Object (File)
Wed, Dec 4, 2:47 PM
Unknown Object (File)
Nov 19 2024, 7:51 PM
Unknown Object (File)
Oct 9 2024, 12:04 PM
Unknown Object (File)
Oct 4 2024, 5:22 AM
Subscribers

Details

Summary

Page table pages are never freed from the kernel pmap, instead they are
zeroed when a range is unmapped. This allows future mappings to be
constructed more quickly. Detect this scenario in pmap_enter_l2(), so we
don't fail to create a superpage mapping when the 2MB range is actually
available.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

mhorne requested review of this revision.Oct 5 2022, 4:24 PM
This revision is now accepted and ready to land.Oct 5 2022, 4:28 PM
sys/riscv/riscv/pmap.c
3204–3205

On amd64 and arm64, we don't maintain an exact count of the valid mappings within a kernel page table page. If that is true on riscv, then this section of code should look more like the amd64 and arm64 versions.

mhorne added inline comments.
sys/riscv/riscv/pmap.c
3204–3205

Yes, good catch. I will make the adjustment as part of D36563.

This revision was automatically updated to reflect the committed changes.
mhorne marked an inline comment as done.