The title mostly says it all. The exception being that I introduced a missing atomic clear operation of the PGA_WRITEABLE flag when the PV list is emptied.
Details
Details
Get Mark's help.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Here is our current state:
Uses Has PV Alloc Has COW Needs r324665 pv_chunk Problem Bug and r325285 ------------------------------------------------------------- amd64 Yes Fixed Fixed Fixed arm/pmap-v4.c No N/A No[1] N/A arm/pmap-v6.c Yes No No[2] No[4] arm64 Yes Fixed No[2] Yes i386 Yes No Fixed No[4] mips Yes No Fixed No[4] powerpc/booke No N/A No[2] N/A powerpc/oea No N/A[3] No[2] N/A powerpc/oea64 No N/A No[2] N/A powerpc/pseries[5] riscv Yes This This No[4] sparc64 No N/A No[2] N/A [1] SMP is not supported. [2] Performs "break-before-make". [3] The comments say that the PV entry is reused, but it is not. That said, the old PV entry is freed before the new one is allocated. I believe that reuse could be beneficial because it would eliminate two O(log n) Red-Black tree operations. [4] Still has pvh_global_lock. [5] Literally derived from powerpc/oea64.
Comment Actions
I had no problems booting in qemu and running some commands with this change.
riscv/riscv/pmap.c | ||
---|---|---|
2164 ↗ | (On Diff #45257) | Any reason not to include the "Temporarily invalidate ..." comment that's in some other pmaps? |
riscv/riscv/pmap.c | ||
---|---|---|
2164 ↗ | (On Diff #45257) | Nope. I will add it. |