> Date: Tue, 26 Mar 2024 23:05:49 +0100
> From: Patrick Wildt <patr...@blueri.se>
> 
> On Fri, Mar 01, 2024 at 12:00:29AM +0100, Alexander Bluhm wrote:
> > Hi,
> > 
> > When doing flood ping transmit from a machine and simultaneously
> > ifconfig down/up in a loop, dwqe(4) interface driver crashes.
> > 
> > dwqe_down() contains an interrupt barrier, but somehow it does not
> > work.  Immediately after Xspllower() a transmit interrupt is
> > processed.
> > 
> > bluhm
> 
> Unfortunately I can't see it in the dmesg, but I wonder: Is it MSIs?
> Maybe the edge-triggered interrupt stays in the controller because it
> isn't cleared.  But things you could try are:
> 
> * Clear the IRQ status in addition to disabling them.  This might not
>   do something in case the MSI is already in the IRQ, there are no
>   takebacks.  But then maybe when the interrupt fires, the code path
>   sees the cleared status and doesn't run the tx/rx proc.
> * Don't run TX/RX proc in case the interface is down?

Another thing...  Is that intr_barrier() called while we're at
IPL_NET?  That might not have the desired effect if intr_barrier()
runs on the same CPU that is handling the interrupts for the device.

And I fear that would be an issue in other drivers too...

> > kernel: protection fault trap, code=0
> > Stopped at      m_tag_delete_chain+0x30:        movq    0(%rsi),%rax
> > 
> > ddb{0}> trace
> > m_tag_delete_chain(fffffd806bfa5300) at m_tag_delete_chain+0x30
> > m_free(fffffd806bfa5300) at m_free+0x9e
> > m_freem(fffffd806bfa5300) at m_freem+0x38
> > dwqe_tx_proc(ffff800000304800) at dwqe_tx_proc+0x194
> > dwqe_intr(ffff800000304800) at dwqe_intr+0x9b
> > intr_handler(ffff80003f86e760,ffff8000005f4f80) at intr_handler+0x72
> > Xintr_ioapic_edge36_untramp() at Xintr_ioapic_edge36_untramp+0x18f
> > Xspllower() at Xspllower+0x1d
> > dwqe_ioctl(ffff800000304870,80206910,ffff80003f86e990) at dwqe_ioctl+0x18c
> > ifioctl(fffffd81ffabe1e8,80206910,ffff80003f86e990,ffff80003f94e550) at 
> > ifioctl+0x726
> > sys_ioctl(ffff80003f94e550,ffff80003f86eb50,ffff80003f86eac0) at 
> > sys_ioctl+0x2af
> > syscall(ffff80003f86eb50) at syscall+0x55b
> > Xsyscall() at Xsyscall+0x128
> > end of kernel
> > end trace frame: 0x73ef48509270, count: -13
> > 
> > ddb{0}> show register
> > rdi               0xfffffd806bfa5300
> > rsi               0xdeafbeaddeafbead
> > rbp               0xffff80003f86e5f0
> > rbx                            0xf40
> > rdx                                0
> > rcx                                0
> > rax                           0xab56    __ALIGN_SIZE+0x9b56
> > r8                              0x90
> > r9                         0x24634ac    __kernel_rodata_phys+0x3624ac
> > r10               0xe676ed611cc13e4f
> > r11               0xd2619954b795f246
> > r12               0xffff800001110f48
> > r13               0xfffffd8072820000
> > r14               0xfffffd806bfa5300
> > r15               0xfffffd805f6def00
> > rip               0xffffffff81daae80    m_tag_delete_chain+0x30
> > cs                               0x8
> > rflags                       0x10282    __ALIGN_SIZE+0xf282
> > rsp               0xffff80003f86e5d0
> > ss                              0x10
> > m_tag_delete_chain+0x30:        movq    0(%rsi),%rax
> > 
> > ddb{0}> x/s version
> > version:        OpenBSD 7.5 (GENERIC.MP) #2: Thu Feb 29 23:42:26 CET 
> > 2024\012    
> > r...@ot50.obsd-lab.genua.de:/usr/src/sys/arch/amd64/compile/GENERIC.MP\012
> > 
> > ddb{0}> ps
> >    PID     TID   PPID    UID  S       FLAGS  WAIT          COMMAND
> > *70039   16536  80360      0  7   0x8000003                ifconfig
> >  41531  214934  36719     51  3   0x8100033  netlock       ping
> > 
> > OpenBSD 7.5 (GENERIC.MP) #2: Thu Feb 29 23:42:26 CET 2024
> >     r...@ot50.obsd-lab.genua.de:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> > real mem = 8038207488 (7665MB)
> > avail mem = 7773556736 (7413MB)
> > random: good seed from bootblocks
> > mpath0 at root
> > scsibus0 at mpath0: 256 targets
> > mainbus0 at root
> > bios0 at mainbus0: SMBIOS rev. 3.3 @ 0x769c7000 (85 entries)
> > bios0: vendor American Megatrends Inc. version "1.02.10" date 06/27/2022
> > efi0 at bios0: UEFI 2.7
> > efi0: American Megatrends rev 0x50013
> > acpi0 at bios0: ACPI 6.2
> > acpi0: sleep states S0 S5
> > acpi0: tablesfg0: addr 0xc0000000, bus 0-255
> > acpihpet0 at acpi0: 19200000 Hz
> > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> > cpu0 at mainbus0: apid 0 (boot processor)
> > cpu0: Intel Atom(R) x6425RE Processor @ 1.90GHz, 1895.90 MHz, 06-96-01, 
> > patch 00000017
> > cpu0: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,WAITPKG,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,IBRS_ALL,SKIP_L1DFL,MDS_NO,IF_PSCHANGE,MISC_PKG_CT,ENERGY_FILT,FB_CLEAR,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
> > cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
> > 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache
> > cpu0: smt 0, core 0, package 0
> > mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
> > cpu0: apic clock running at 38MHz
> > cpu0: mwait min=64, max=64, C-substates=0.2.0.2.2.1.1.1, IBE
> > cpu1 at mainbus0: apid 2 (application processor)
> > cpu1: Intel Atom(R) x6425RE Processor @ 1.90GHz, 1895.90 MHz, 06-96-01, 
> > patch 00000017
> > cpu1: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,WAITPKG,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,IBRS_ALL,SKIP_L1DFL,MDS_NO,IF_PSCHANGE,MISC_PKG_CT,ENERGY_FILT,FB_CLEAR,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
> > cpu1: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
> > 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache
> > cpu1: smt 0, core 1, package 0
> > cpu2 at mainbus0: apid 4 (application processor)
> > cpu2: Intel Atom(R) x6425RE Processor @ 1.90GHz, 1895.90 MHz, 06-96-01, 
> > patch 00000017
> > cpu2: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,WAITPKG,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,IBRS_ALL,SKIP_L1DFL,MDS_NO,IF_PSCHANGE,MISC_PKG_CT,ENERGY_FILT,FB_CLEAR,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
> > cpu2: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
> > 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache
> > cpu2: smt 0, core 2, package 0
> > cpu3 at mainbus0: apid 6 (application processor)
> > cpu3: Intel Atom(R) x6425RE Processor @ 1.90GHz, 1895.90 MHz, 06-96-01, 
> > patch 00000017
> > cpu3: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,WAITPKG,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,IBRS_ALL,SKIP_L1DFL,MDS_NO,IF_PSCHANGE,MISC_PKG_CT,ENERGY_FILT,FB_CLEAR,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
> > cpu3: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
> > 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache
> > cpu3: smt 0, core 3, package 0
> > ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins
> > acpiprt0 at acpi0: bus 0 (PC00)
> > acpiprt1 at acpi0: bus -1 (PEG0)
> > acpiprt2 at acpi0: bus -1 (PEG1)
> > acpiprt3 at acpi0: bus -1 (PEG2)
> > acpiprt4 at acpi0: bus -1 (PEG3)
> > acpiprt5 at acpi0: bus 1 (RP01)
> > acpiprt6 at acpi0: bus -1 (RP02)
> > acpiprt7 at acpi0: bus 2 (RP03)
> > acpiprt8 at acpi0: bus 6 (RP04)
> > acpiprt9 at acpi0: bus -1 (RP05)
> > acpiprt10 at acpi0: bus -1 (RP06)
> > acpiprt11 at acpi0: bus 7 (RP07)
> > acpipci0 at acpi0 PC00: 0x00000010 0x00000011 0x00000000
> > com0 at acpi0 UAR1 addr 0x3f8/0x8 irq 4: ns16550a, 16 byte fifo
> > com0: console
> > com1 at acpi0 UAR2 addr 0x2f8/0x8 irq 3: ns16550a, 16 byte fifo
> > "INTC1035" at acpi0 not configured
> > acpiac0 at acpi0: AC unit online
> > "ACPI000E" at acpi0 not configured
> > "INTC1020" at acpi0 not configured
> > "INTC1020" at acpi0 not configured
> > "INTC1020" at acpi0 not configured
> > "INTC1020" at acpi0 not configured
> > "INTC1020" at acpi0 not configured
> > "PNP0C14" at acpi0 not configured
> > acpibtn0 at acpi0: SLPB
> > acpibtn1 at acpi0: PWRB(wakeup)
> > "INTC1033" at acpi0 not configured
> > "INTC1033" at acpi0 not configured
> > "PNP0C14" at acpi0 not configured
> > "PNP0C14" at acpi0 not configured
> > "INT33A1" at acpi0 not configured
> > acpihid0 at acpi0: HIDDacpihid0: failed getting button array capability
> > , 5 button array
> > "MSFT8000" at acpi0 not configured
> > tpm0 at acpi0 TPM_ 2.0 (TIS) addr 0xfed40000/0x5000, device 0x001b15d1 rev 
> > 0x16
> > "ADS0345" at acpi0 not configured
> > "IFX3100" at acpi0 not configured
> > "TXNW1010" at acpi0 not configured
> > acpipwrres0 at acpi0: WRST
> > acpicpu0 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), 
> > C1(1000@1 mwait.1), PSS
> > acpicpu1 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), 
> > C1(1000@1 mwait.1), PSS
> > acpicpu2 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), 
> > C1(1000@1 mwait.1), PSS
> > acpicpu3 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), 
> > C1(1000@1 mwait.1), PSS
> > acpipwrres1 at acpi0: FN00, resource for FAN0
> > acpipwrres2 at acpi0: FN01, resource for FAN1
> > acpipwrres3 at acpi0: FN02, resource for FAN2
> > acpipwrres4 at acpi0: FN03, resource for FAN3
> > acpipwrres5 at acpi0: FN04, resource for FAN4
> > acpitz0 at acpi0: critical temperature is 127 degC
> > acpipwrres6 at acpi0: PIN_
> > cpu0: Enhanced SpeedStep 1895 MHz: speeds: 1901, 1900, 1800, 1700, 1600, 
> > 1500, 1400, 1300, 1200, 1100, 1000, 900, 800 MHz
> > pci0 at mainbus0 bus 0
> > 0:31:5: mem address conflict 0xfe010000/0x1000
> > pchb0 at pci0 dev 0 function 0 "Intel Elkhart Lake Host" rev 0x01
> > inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics" rev 0x01
> > drm0 at inteldrm0
> > inteldrm0: msi, ELKHARTLAKE, gen 11
> > "Intel Elkhart Lake GNA" rev 0x01 at pci0 dev 8 function 0 not configured
> > xhci0 at pci0 dev 20 function 0 "Intel Elkhart Lake xHCI" rev 0x11: msi, 
> > xHCI 1.20
> > usb0 at xhci0: USB revision 3.0
> > uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 
> > 3.00/1.00 addr 1
> > "Intel Elkhart Lake SRAM" rev 0x11 at pci0 dev 20 function 2 not configured
> > dwiic0 at pci0 dev 21 function 0 "Intel Elkhart Lake I2C" rev 0x11: apic 2 
> > int 27
> > iic0 at dwiic0
> > dwiic1 at pci0 dev 21 function 1 "Intel Elkhart Lake I2C" rev 0x11: apic 2 
> > int 28
> > iic1 at dwiic1
> > dwiic2 at pci0 dev 21 function 2 "Intel Elkhart Lake I2C" rev 0x11: apic 2 
> > int 29
> > iic2 at dwiic2
> > dwiic3 at pci0 dev 21 function 3 "Intel Elkhart Lake I2C" rev 0x11: apic 2 
> > int 30
> > iic3 at dwiic3
> > "Intel Elkhart Lake HECI" rev 0x11 at pci0 dev 22 function 0 not configured
> > ahci0 at pci0 dev 23 function 0 "Intel Elkhart Lake AHCI" rev 0x11: msi, 
> > AHCI 1.3.1
> > ahci0: port 0: 6.0Gb/s
> > ahci0: PHY offline on port 1
> > scsibus1 at ahci0: 32 targets
> > sd0 at scsibus1 targ 0 lun 0: <ATA, innodisk M.2(S42, S206> 
> > naa.524693e000367188
> > sd0: 57241MB, 512 bytes/sector, 117231408 sectors, thin
> > "Intel Elkhart Lake I2C" rev 0x11 at pci0 dev 24 function 0 not configured
> > "Intel Elkhart Lake CAN" rev 0x11 at pci0 dev 24 function 1 not configured
> > "Intel Elkhart Lake CAN" rev 0x11 at pci0 dev 24 function 2 not configured
> > dwiic4 at pci0 dev 25 function 0 "Intel Elkhart Lake I2C" rev 0x11: apic 2 
> > int 31
> > iic4 at dwiic4
> > "Intel Elkhart Lake UART" rev 0x11 at pci0 dev 25 function 2 not configured
> > "Intel Elkhart Lake I2C" rev 0x11 at pci0 dev 27 function 0 not configured
> > ppb0 at pci0 dev 28 function 0 "Intel Elkhart Lake PCIE" rev 0x11
> > pci1 at ppb0 bus 1
> > ppb1 at pci0 dev 28 function 2 "Intel Elkhart Lake PCIE" rev 0x11: msi
> > pci2 at ppb1 bus 2
> > ppb2 at pci2 dev 0 function 0 vendor "Pericom", unknown product 0x2303 rev 
> > 0x05
> > pci3 at ppb2 bus 3
> > ppb3 at pci3 dev 1 function 0 vendor "Pericom", unknown product 0x2303 rev 
> > 0x05: msi
> > pci4 at ppb3 bus 4
> > em0 at pci4 dev 0 function 0 "Intel I210" rev 0x03: msi, address 
> > f8:02:78:21:a4:35
> > ppb4 at pci3 dev 2 function 0 vendor "Pericom", unknown product 0x2303 rev 
> > 0x05: msi
> > pci5 at ppb4 bus 5
> > em1 at pci5 dev 0 function 0 "Intel I210" rev 0x03: msi, address 
> > f8:02:78:21:a4:36
> > ppb5 at pci0 dev 28 function 3 "Intel Elkhart Lake PCIE" rev 0x11: msi
> > pci6 at ppb5 bus 6
> > iwx0 at pci6 dev 0 function 0 "Intel Wi-Fi 6 AX210" rev 0x1a, msix
> > ppb6 at pci0 dev 28 function 6 "Intel Elkhart Lake PCIE" rev 0x11: msi
> > pci7 at ppb6 bus 7
> > igc0 at pci7 dev 0 function 0 "Intel I225-IT" rev 0x03, msix, 4 queues, 
> > address 34:73:5a:ff:a5:b1
> > "Intel Elkhart Lake LH2OSE" rev 0x11 at pci0 dev 29 function 0 not 
> > configured
> > dwqe0 at pci0 dev 29 function 1 "Intel Elkhart Lake Ethernet" rev 0x11: rev 
> > 0x52, address 34:73:5a:ff:a5:b2
> > eephy0 at dwqe0 phy 1: 88E1512 10/100/1000 PHY, rev. 1
> > "Intel Elkhart Lake Ethernet" rev 0x11 at pci0 dev 29 function 2 not 
> > configured
> > "Intel Elkhart Lake UART" rev 0x11 at pci0 dev 30 function 0 not configured
> > pcib0 at pci0 dev 31 function 0 "Intel Elkhart Lake eSPI" rev 0x11
> > azalia0 at pci0 dev 31 function 3 "Intel Elkhart Lake HD Audio" rev 0x11: 
> > msi
> > azalia0: codecs: IDT/0x76e0, Intel/0x281b, using IDT/0x76e0
> > audio0 at azalia0
> > ichiic0 at pci0 dev 31 function 4 "Intel Elkhart Lake SMBus" rev 0x11: apic 
> > 2 int 16
> > iic5 at ichiic0
> > "Intel Elkhart Lake SPI" rev 0x11 at pci0 dev 31 function 5 not configured
> > isa0 at pcib0
> > isadma0 at isa0
> > pcppi0 at isa0 port 0x61
> > spkr0 at pcppi0
> > vmm0 at mainbus0: VMX/EPT
> > efifb at mainbus0 not configured
> > uhub1 at uhub0 port 3 configuration 1 interface 0 "Texas Instruments 
> > product 0x8027" rev 2.10/1.10 addr 2
> > ugen0 at uhub0 port 5 "Intel Bluetooth" rev 2.01/0.00 addr 3
> > uhub2 at uhub0 port 15 configuration 1 interface 0 "Texas Instruments 
> > product 0x8025" rev 3.00/1.10 addr 4
> > vscsi0 at root
> > scsibus2 at vscsi0: 256 targets
> > softraid0 at root
> > scsibus3 at softraid0: 256 targets
> > root on sd0a (d6d91d6e9bdd6dbb.a) swap on sd0b dump on sd0b
> > inteldrm0: 1024x768, 32bpp
> > wsdisplay0 at inteldrm0 mux 1
> > wsdisplay0: screen 0-5 added (std, vt100 emulation)
> > iwx0: hw rev 0x420, fw 77.f92b5fed.0, pnvm 181407b3, address 
> > 8c:b8:7e:ee:89:0f
> > <4>arp: attempt to add entry for 10.0.1.1 on igc0 by 00:30:48:57:ed:0a on 
> > dwqe0
> > 
> 
> 

Reply via email to