summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64/dev/vdsk.c
diff options
context:
space:
mode:
authorGeorge Koehler <gkoehler@cvs.openbsd.org>2024-11-27 20:30:16 +0000
committerGeorge Koehler <gkoehler@cvs.openbsd.org>2024-11-27 20:30:16 +0000
commit604447485e26ae6a1182cd61b6363408580182a5 (patch)
treee075203b558bfb86221812d492bb6c69da35e3ca /sys/arch/sparc64/dev/vdsk.c
parentdfe453674fa96cf8dc55891d447f0988f9e264d0 (diff)
In powerpc64 pmap, when replacing a pte, put it in the correct ptegHEADmastercvs/HEAD
In pte_insert(), if both the primary page table entry group and the secondary pteg are full, then we delete an old pte and replace it with the new pte. We might have set "idx" wrong and inserted the new pte into the wrong pteg (with the wrong PTE_HID bit). This problem almost never happened; it is rare for both ptegs to be full. When the loop "for (try = 0; try < 16; try++)" looks for a slot for the new pte, set "idx" to the new pte's primary pteg. Put it in the primary pteg "idx" or secondary pteg "idx ^ pmap_ptab_mask". When we delete the old pte, set "idx" to the old pte's primary pteg. Eric Gosse reported a bug where the kernel crashed on an unexpected fault. I suspect that a pte fell into the wrong "idx" and got lost. ok kettenis@
Diffstat (limited to 'sys/arch/sparc64/dev/vdsk.c')
0 files changed, 0 insertions, 0 deletions