Re: splassert on boot
Hello, On Thu, Nov 24, 2022 at 08:51:51AM +1000, David Gwynne wrote: > im ok with this, but you need sashan@ to ok it too. he's been working up to > this anyway. > > dlg > > > On 24 Nov 2022, at 06:18, Vitaliy Makkoveev wrote: > > > > On Wed, Nov 23, 2022 at 02:59:05PM -0500, David Hill wrote: > >> Hello - > >> > >> I am seeing splasserts on boot (before kern.splassert=2 can be set) with > >> -current. > >> > >> > >> > >> spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM > >> isa0 at pcib0 > >> isadma0 at isa0 > >> vga0 at isa0 port 0x3b0/48 iomem 0xa/131072 > >> wsdisplay at vga0 not configured > >> pcppi0 at isa0 port 0x61 > >> spkr0 at pcppi0 > >> vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) > >> splassert: pfi_attach_ifgroup: want 2 have 0 > >> splassert: pfi_group_addmember: want 2 have 0 > >> splassert: pfi_attach_ifgroup: want 2 have 0 > >> splassert: pfi_attach_ifgroup: want 2 have 0 > >> splassert: pfi_group_addmember: want 2 have 0 > >> > >> > >> - David > >> > > > > The netlock assertion within PF_LOCK() looks wrong. The netlock should > > be taken first, but only if both locks taken. > > > > Index: sys/net/pfvar_priv.h > > === > > RCS file: /cvs/src/sys/net/pfvar_priv.h,v > > retrieving revision 1.21 > > diff -u -p -r1.21 pfvar_priv.h > > --- sys/net/pfvar_priv.h11 Nov 2022 17:12:30 - 1.21 > > +++ sys/net/pfvar_priv.h23 Nov 2022 20:14:13 - > > @@ -278,7 +278,6 @@ extern struct rwlockpf_lock; > > extern struct rwlockpf_state_lock; > > > > #define PF_LOCK() do {\ > > - NET_ASSERT_LOCKED();\ > > rw_enter_write(_lock); \ > > } while (0) > > > this diff is OK, please go ahead and commit it. sorry, I have not hit this assert on my boxes, when testing this diff. OK sashan
Re: splassert on boot
im ok with this, but you need sashan@ to ok it too. he's been working up to this anyway. dlg > On 24 Nov 2022, at 06:18, Vitaliy Makkoveev wrote: > > On Wed, Nov 23, 2022 at 02:59:05PM -0500, David Hill wrote: >> Hello - >> >> I am seeing splasserts on boot (before kern.splassert=2 can be set) with >> -current. >> >> >> >> spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM >> isa0 at pcib0 >> isadma0 at isa0 >> vga0 at isa0 port 0x3b0/48 iomem 0xa/131072 >> wsdisplay at vga0 not configured >> pcppi0 at isa0 port 0x61 >> spkr0 at pcppi0 >> vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) >> splassert: pfi_attach_ifgroup: want 2 have 0 >> splassert: pfi_group_addmember: want 2 have 0 >> splassert: pfi_attach_ifgroup: want 2 have 0 >> splassert: pfi_attach_ifgroup: want 2 have 0 >> splassert: pfi_group_addmember: want 2 have 0 >> >> >> - David >> > > The netlock assertion within PF_LOCK() looks wrong. The netlock should > be taken first, but only if both locks taken. > > Index: sys/net/pfvar_priv.h > === > RCS file: /cvs/src/sys/net/pfvar_priv.h,v > retrieving revision 1.21 > diff -u -p -r1.21 pfvar_priv.h > --- sys/net/pfvar_priv.h 11 Nov 2022 17:12:30 - 1.21 > +++ sys/net/pfvar_priv.h 23 Nov 2022 20:14:13 - > @@ -278,7 +278,6 @@ extern struct rwlock pf_lock; > extern struct rwlock pf_state_lock; > > #define PF_LOCK() do {\ > - NET_ASSERT_LOCKED();\ > rw_enter_write(_lock); \ > } while (0) >
Re: splassert on boot
On 11/23/22 15:18, Vitaliy Makkoveev wrote: On Wed, Nov 23, 2022 at 02:59:05PM -0500, David Hill wrote: Hello - I am seeing splasserts on boot (before kern.splassert=2 can be set) with -current. spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM isa0 at pcib0 isadma0 at isa0 vga0 at isa0 port 0x3b0/48 iomem 0xa/131072 wsdisplay at vga0 not configured pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) splassert: pfi_attach_ifgroup: want 2 have 0 splassert: pfi_group_addmember: want 2 have 0 splassert: pfi_attach_ifgroup: want 2 have 0 splassert: pfi_attach_ifgroup: want 2 have 0 splassert: pfi_group_addmember: want 2 have 0 - David The netlock assertion within PF_LOCK() looks wrong. The netlock should be taken first, but only if both locks taken. Index: sys/net/pfvar_priv.h === RCS file: /cvs/src/sys/net/pfvar_priv.h,v retrieving revision 1.21 diff -u -p -r1.21 pfvar_priv.h --- sys/net/pfvar_priv.h11 Nov 2022 17:12:30 - 1.21 +++ sys/net/pfvar_priv.h23 Nov 2022 20:14:13 - @@ -278,7 +278,6 @@ extern struct rwlockpf_lock; extern struct rwlock pf_state_lock; #define PF_LOCK() do { \ - NET_ASSERT_LOCKED();\ rw_enter_write(_lock); \ } while (0) with traceback vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) splassert: pfi_attach_ifgroup: want 2 have 0 Starting stack trace... pfi_attach_ifgroup(800ecc80,800ecc80,81f25c9b,800ecca8,8188cf82,82737e30) at pfi_attach_ifgroup+0x42 if_addgroup(8015,81f25c9b,f9c039b9154dadd0,0,8015,822d06e0) at if_addgroup+0x142 enc_clone_create(822d06e0,0,28d493f4921b481d,2,822e5aa0,1f) at enc_clone_create+0xd2 encattach(1,1,8173c274,82737f00,822d06e0,0) at encattach+0x14 main(0,0,2,0,abd41b90,1) at main+0x409 end trace frame: 0x0, count: 252 End of stack trace. splassert: pfi_group_addmember: want 2 have 0 Starting stack trace... pfi_group_addmember(81f25c9b,81f25c9b,81f25c9b,8014a228,8188d442,82737e30) at pfi_group_addmember+0x42 if_addgroup(8015,81f25c9b,f9c039b9154dadd0,0,8015,822d06e0) at if_addgroup+0x1e6 enc_clone_create(822d06e0,0,28d493f4921b481d,2,822e5aa0,1f) at enc_clone_create+0xd2 encattach(1,1,8173c274,82737f00,822d06e0,0) at encattach+0x14 main(0,0,2,0,abd41b90,1) at main+0x409 end trace frame: 0x0, count: 252 End of stack trace. splassert: pfi_attach_ifgroup: want 2 have 0 Starting stack trace... pfi_attach_ifgroup(80102e80,80102e80,80102e80,80102ea8,8188cf82,82737e90) at pfi_attach_ifgroup+0x42 if_creategroup(81f501b2,81f501b2,ea09b7f381ae3cd3,2,822e5b50,822a6790) at if_creategroup+0x6f carpattach(1,1,e1e0b7d5818b2660,822a6790,811da510,82737f00) at carpattach+0x20 main(0,0,2,0,abd41b90,1) at main+0x409 end trace frame: 0x0, count: 253 End of stack trace. splassert: pfi_attach_ifgroup: want 2 have 0 Starting stack trace... pfi_attach_ifgroup(800f2f00,800f2f00,81f77eea,800f2f28,8188cf82,82737e70) at pfi_attach_ifgroup+0x42 if_addgroup(80150800,81f77eea,f9c039b91557e57e,2,80150800,1f) at if_addgroup+0x142 loopattach(1,1,822e5b90,822db440,8169888c,82737f00) at loopattach+0xbc main(0,0,2,0,abd41b90,1) at main+0x409 end trace frame: 0x0, count: 253 End of stack trace. splassert: pfi_group_addmember: want 2 have 0 Starting stack trace... pfi_group_addmember(81f77eea,81f77eea,81f77eea,8014a2e8,8188d442,82737e70) at pfi_group_addmember+0x42 if_addgroup(80150800,81f77eea,f9c039b91557e57e,2,80150800,1f) at if_addgroup+0x1e6 loopattach(1,1,822e5b90,822db440,8169888c,82737f00) at loopattach+0xbc main(0,0,2,0,abd41b90,1) at main+0x409 end trace frame: 0x0, count: 253 End of stack trace.
Re: splassert on boot
On Wed, Nov 23, 2022 at 02:59:05PM -0500, David Hill wrote: > Hello - > > I am seeing splasserts on boot (before kern.splassert=2 can be set) with > -current. > > > > spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM > isa0 at pcib0 > isadma0 at isa0 > vga0 at isa0 port 0x3b0/48 iomem 0xa/131072 > wsdisplay at vga0 not configured > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) > splassert: pfi_attach_ifgroup: want 2 have 0 > splassert: pfi_group_addmember: want 2 have 0 > splassert: pfi_attach_ifgroup: want 2 have 0 > splassert: pfi_attach_ifgroup: want 2 have 0 > splassert: pfi_group_addmember: want 2 have 0 > > > - David > The netlock assertion within PF_LOCK() looks wrong. The netlock should be taken first, but only if both locks taken. Index: sys/net/pfvar_priv.h === RCS file: /cvs/src/sys/net/pfvar_priv.h,v retrieving revision 1.21 diff -u -p -r1.21 pfvar_priv.h --- sys/net/pfvar_priv.h11 Nov 2022 17:12:30 - 1.21 +++ sys/net/pfvar_priv.h23 Nov 2022 20:14:13 - @@ -278,7 +278,6 @@ extern struct rwlockpf_lock; extern struct rwlock pf_state_lock; #define PF_LOCK() do {\ - NET_ASSERT_LOCKED();\ rw_enter_write(_lock); \ } while (0)