On Thu, Sep 11, 2025 at 06:31:42PM +0200, Martin Pieuchot wrote: > On 08/09/25(Mon) 18:53, Martin Pieuchot wrote: > > On 29/08/25(Fri) 19:12, Alexander Bluhm wrote: > > > Hi, > > > > > > One of my i386 test machines crashed during make build. Kernel is > > > GENERIC.MP built from current sources. > > > > > > panic: uvm_fault(0xd59b2424, 0xcf800000, 0, 1) -> e > > > Stopped at db_enter+0x4: popl %ebp > > > TID PID UID PRFLAGS PFLAGS CPU COMMAND > > > *435945 40779 21 0x2 0 5 llvm-tblgen > > > 212835 13904 21 0x2 0 3 llvm-tblgen > > > 150086 44694 21 0x2 0 11 llvm-tblgen > > > 332575 10539 21 0x2 0 10 llvm-tblgen > > > 385473 77182 21 0x2 0 8 llvm-tblgen > > > 104320 19436 0 0x14000 0x200 1 aiodoned > > > db_enter() at db_enter+0x4 > > > panic(d0cbc6b7) at panic+0x7a > > > kpageflttrap(f86b5c94,cf800000) at kpageflttrap+0x133 > > > trap(f86b5c94) at trap+0x255 > > > calltrap() at calltrap+0xc > > > pmap_remove_ptes_pae(d0f6fda0,0,cf800000,0,1000,0,f86b5d1c) at > > > pmap_remove_ptes_pae+0x4f > > > pmap_do_remove_pae(d0f6fda0,0,1000,0) at pmap_do_remove_pae+0x120 > > > pmap_remove(d0f6fda0,0,1000) at pmap_remove+0x18 > > > uvm_pagermapout(0,1) at uvm_pagermapout+0x1a > > > > This is very wrong. That means `kva' is 0. The only way this can > > happen is if pmap_enter(9) failed in uvm_pagermapin(). > > > > Using pmap_kenter_pa(9) would not only prevent this issue, it would also > > speed up memory recovery. Sadly we had to revert such change because on > > Landisk it doesn't handle conflicting cache aliases like pmap_enter(9). > > Here's a diff that fixes the bug and does not make landisk slow other > architectures. This gives a noticeable boost for page faults and > aggressive swapping (like a stress test with torture). > > Note that NetBSD also calls pmap_kenter_pa(9) in this case. So maybe > there's a fix for landisk out there. Anyone care about landisk? > > Alexander would you please test this on your i386?
Works fine on my sparc64 builder (currently in swap). Yesterday miod committed the sh pmap.c fix so the diff ought to be cleaned up. I know we're approaching release but I suspect 7.8 would be better with that fix. Thoughts? -- jca
