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. |