Page MenuHomeFreeBSD

riscv: Fix pmap_fault_fixup for L3 pages
ClosedPublic

Authored by jrtc27 on Apr 6 2020, 8:41 PM.
Tags
None
Referenced Files
F110104353: D24315.id70270.diff
Thu, Feb 13, 4:26 PM
F110102914: D24315.id70281.diff
Thu, Feb 13, 3:59 PM
F110095734: D24315.diff
Thu, Feb 13, 1:46 PM
Unknown Object (File)
Wed, Feb 12, 4:59 PM
Unknown Object (File)
Wed, Feb 5, 5:05 PM
Unknown Object (File)
Fri, Jan 24, 5:41 PM
Unknown Object (File)
Sat, Jan 18, 5:19 PM
Unknown Object (File)
Dec 10 2024, 6:33 PM
Subscribers

Details

Summary

The parentheses being in the wrong place means that, for L3 pages,
oldpte has all bits except PTE_V cleared, and so all the subsequent
checks against oldpte will fail, causing us to bail out and not retry
the faulting instruction after an SFENCE.VMA. This causes a WITNESS +
INVARIANTS kernel to fault on the "Chisel P3" (BOOM-based) DARPA SSITH
GFE SoC in pmap_init when writing to pv_table and, being a nofault
entry, subsequently panic with:

panic: vm_fault_lookup: fault on nofault entry, addr: 0xffffffc004e00000

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable