> Date: Mon, 10 Jan 2022 15:40:34 +0100 (CET) > From: Mark Kettenis <mark.kette...@xs4all.nl> > > > Date: Mon, 10 Jan 2022 14:40:50 +0100 > > From: Alexander Bluhm <alexander.bl...@gmx.net> > > > > On Thu, Jan 06, 2022 at 03:59:55PM +0100, Alexander Bluhm wrote: > > > My armv7 regress machine hangs every day in regress/sys/kern/fork-exit. > > > > Maybe a show uvm provides some information. > > Not really. I can reproduce the issue here. But I didn't have > ddb.console enabled :(. > > > Stopped at db_enter: ldrb r15, [r15, r15, ror r15]! > > ddb> trace > > db_enter > > rlv=0xc06bd178 rfp=0xcea1cdd0 > > ampintc_irq_handler+0x13c > > rlv=0xc05b79c8 rfp=0xcea1ce48 > > irq_entry+0x78 > > rlv=0xc03ba3f8 rfp=0xcea1ce60 > > uaddr_bestfit_insert+0x24 > > rlv=0xc0654994 rfp=0xcea1ce78 > > uvm_mapent_free_insert+0xa8 > > rlv=0xc0657e7c rfp=0xcea1cea0 > > uvm_map_fix_space+0x208 > > rlv=0xc06577b4 rfp=0xcea1cec8 > > uvm_map_kmem_grow+0x154 > > rlv=0xc0657044 rfp=0xcea1cf48 > > uvm_map+0x3a8 > > rlv=0xc071e4d4 rfp=0xcea1cfa8 > > uvm_km_thread+0x10c > > rlv=0xc064a060 rfp=0xc0a49f50 > > Bad frame pointer: 0xc0a49f50
So as far as I can determine, we simply run out of KVA when running this test. I'm not sure why though. It could be fragmentation, although AFAICT the km thread only does page-sized allocations. And we don't have guard pages turned on is it? So maybe there is a leak somewhere... That said, we have a really low amount of KVA on armv7. It's basically 256MB plus what's left of the 64MB block we've loaded the kernel in. Doubling this to 512MB (plus what's left of the 64MB block) makes the test pass, and brings us more in line with the other 32-bit platforms (i386 has 760MB of KVA). ok? Index: arch/armv7/include/vmparam.h =================================================================== RCS file: /cvs/src/sys/arch/armv7/include/vmparam.h,v retrieving revision 1.6 diff -u -p -r1.6 vmparam.h --- arch/armv7/include/vmparam.h 10 Mar 2017 08:42:08 -0000 1.6 +++ arch/armv7/include/vmparam.h 11 Jan 2022 11:53:00 -0000 @@ -62,7 +62,7 @@ */ #define KERNEL_BASE ARM_KERNEL_BASE -#define VM_KERNEL_SPACE_SIZE 0x10000000 +#define VM_KERNEL_SPACE_SIZE 0x20000000 /* * Override the default pager_map size, there's not enough KVA.