NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/56857: ixg(4) doesn't work in legacy interrupt mode
>Number: 56857
>Category: kern
>Synopsis: ixg(4) doesn't work in legacy interrupt mode
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu May 26 11:35:01 +0000 2022
>Originator: Manuel Bouyer
>Release: NetBSD 9.99.97
>Organization:
>Environment:
System: NetBSD bolero.soc.lip6.fr 9.99.97 NetBSD 9.99.97 (GENERIC) #4: Thu May 26 13:16:41 CEST 2022 bouyer@bip:/dsk/l1/misc/bouyer/tmp/amd64/obj/dsk/l1/misc/bouyer/HEAD/4commit/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
Forcing a system to use legacy interrupts with this patch:
Index: pci_machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/pci/pci_machdep.c,v
retrieving revision 1.91
diff -u -p -u -r1.91 pci_machdep.c
--- pci_machdep.c 24 May 2022 14:00:23 -0000 1.91
+++ pci_machdep.c 26 May 2022 11:18:59 -0000
@@ -565,6 +565,9 @@ pci_attach_hook(device_t parent, device_
}
}
+ pba->pba_flags &= ~PCI_FLAGS_MSIX_OKAY;
+ pba->pba_flags &= ~PCI_FLAGS_MSI_OKAY;
+
#endif /* __HAVE_PCI_MSI_MSIX */
}
cause igx(4) device to fail to receive packet (or to receive them
with very high latency). Other devices, including nvme(4) and wm(4)
works fine in legacy mode. This is a show stopper for Xen (see PR
kern/55667).
The device works fine with MSI-X. I coulnd't test with MSI as
disabling only MSI-X cause the kernel to panic (probably unrelated to
igx(4)), but experiments with Xen suggest that it fails too.
Here is how the device shows up (boot -vx):
[ 1.1197710] ppb3 at pci4 dev 2 function 0: Intel product 2032 (rev. 0x07)
[ 1.1197710] ppb3: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x4 @ 8.0GT/s
[ 1.1197710] pci5 at ppb3 bus 24
[ 1.1197710] acpi0: MCFG: 024:00:0: Ok (cfg[0x100]=0x14020001 extconf=Y)
[ 1.1197710] acpi0: MCFG: 024:00:1: Ok (cfg[0x100]=0x14020001 extconf=Y)
[ 1.1197710] acpi0: MCFG: bus 24: valid devices
[ 1.1197710] acpi0: MCFG: 024:00:0
[ 1.1197710] acpi0: MCFG: 024:00:1
[ 1.1197710] acpi0: acpimcfg_map_bus done
[ 1.1197710] pci5: i/o space, memory space enabled
[ 1.1197710] ixg0 at pci5 dev 0 function 0: Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 4.0.1-k
[ 1.1197710] ixg0: clearing prefetchable bit
[ 1.1197710] ixg0: device X550
[ 1.1197710] ixg0: NVM Image Version 2.00, PHY FW Revision 2.0b ID 0x9, NVM Map version 2.52, OEM NVM Image version 0.06, ETrackID 80000d62
[ 1.1197710] ixg0: PBA number K15087-004
[ 1.1197710] ixg0: failed to allocate MSI-X interrupt
[ 1.1197710] allocated pic ioapic2 type level pin 2 level 6 to cpu0 slot 4 idt entry 98
[ 1.1197710] ixg0: interrupting at ioapic2 pin 2
[ 1.1197710] ixg0: Ethernet address 78:ac:44:86:b0:6c
[ 1.1197710] ixg0: PHY: OUI 0x00aa00 model 0x0022, rev. 0
[ 1.1197710] ixg0: PCI Express Bus: Speed 8.0GT/s Width x4
[ 1.1197710] ixg0: feature cap 0x97a0<TEMP_SENSOR,LEGACY_TX,FDIR,MSI,MSIX,LEGACY_IRQ,RECOVERY_MODE>
[ 1.1197710] ixg0: feature ena 0x9020<TEMP_SENSOR,LEGACY_IRQ,RECOVERY_MODE>
After a multiuser boot (including dhcp address request):
bolero# vmstat -i
interrupt total rate
TLB shootdown 554 3
cpu0 timer 16580 97
ioapic0 pin 3 308 1
ioapic0 pin 16 314 1
ioapic2 pin 2 190 1
ixg0 Link event 2 0
ixg0 q0 IRQs on queue 1 0
ioapic4 pin 2 3854 22
Total 21803 128
tcpdump shows that packets are sent.
>How-To-Repeat:
disable MSI and MSI-X with the above patch, try to use the ixg device.
>Fix:
Home |
Main Index |
Thread Index |
Old Index