Date: Sat, 13 Oct 2007 17:59:40 +0200 From: Alson van der Meulen <alson+ml@alm.flutnet.org> To: freebsd-stable@freebsd.org Subject: Re: Unable to boot recent -stable with MSI/MSIX enabled Message-ID: <20071013155940.GA1842@waalsdorp.nl> In-Reply-To: <2a41acea0710122019h59046243t5956b99132428a68@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
* Jack Vogel <jfvogel@gmail.com> [2007-10-13 05:19]: > A suggestion, take the relevant files from my em driver and put > them back into the kernel tree that was working on 10/1, it should > be compatible. Then see if it breaks that kernel. Or if you'd prefer > I can just email the tar ball for the Intel version of 6.6.6, you can > disable the in-kernel em driver, and build the other and use that > with the 10/1 kernel. 10/12 kernel (MSI enabled) with cable to em unplugged worked. As soon as I plugged in the cable, I got these messages: em0: Link is up 1000 Mbps Full Duplex em0: link state changed to UP em0: watchdog timeout -- resetting em0: Link is Down em0: link state changed to DOWN em0: Link is up 1000 Mbps Full Duplex em0: link state changed to UP I don't think the watchdog timeout is normal, no other errors appeared on the console. The system no longer responded on any of the network interfaces, and it couldn't properly read its disks either: exec format error on almost all binaries, kill 1 gave a bunch of not found errors, on subsequent calls the shell tried to execute kill as a shell script, had to use the hardware reset button. I did a checkout of src/sys (RELENG_6 of 2007-10-01 14:00 CEST). First compiled a kernel from these sources without modifications, em version 6.2.9. This worked as expected with hw.pci.enable_msix?=3D1, probably because this driver doesn't support MSI. Then I removed sys/dev/em and copied it from the 10/12 sources. I also copied sys/conf/files, sys/conf/kern.pre.mk and sys/modules/em/Makelfile =66rom the 10/12 sources; this should be all of the 6.6.6 merge. Compiled with same config, booted with MSI/MSIX enabled. Surprisingly, this kernel behaved different than the 10/10 and 10/12 kernels. It booted OK without any major errors, only a few watchdog timeouts and link down/ups on em0. It was very slow though. Top showed 60% interrupt. vmstat -i: interrupt total rate irq4: sio0 3563 8 irq6: fdc0 1 0 irq14: ata0 58 0 irq16: fxp0 32076072 79593 irq21: atapci1+ 24300 60 cpu0: timer 793477 1968 Total 32897471 81631 There wasn't much traffic on fxp0 (only ssh, ping and ntp). According to dmesg, em0 used the same IRQ as fxp0, except it should be using MSI: em0: <Intel(R) PRO/1000 Network Connection Version - 6.6.6> port 0xdf00-0xd= f1f mem 0xfdde0000-0xfddfffff,0xfddc0000-0xfdddffff irq 16 at device 0.0 on= pci5 em0: Reserved 0x20000 bytes for rid 0x10 type 3 at 0xfdde0000 em0: attempting to allocate 1 MSI vectors (1 supported) msi: routing MSI IRQ 256 to vector 56 em0: using IRQ 256 for MSI em0: bpf attached em0: Ethernet address: 00:15:17:19:59:e4 em0: [FAST] It appears that em0 still generates interrupts on irq16, even though it should be using MSI. vmstat -i with MSI disabled: interrupt total rate irq4: sio0 606 5 irq6: fdc0 1 0 irq14: ata0 58 0 irq16: em0 fxp0 971 8 irq21: atapci1+ 38127 320 cpu0: timer 231905 1948 Total 271668 2282 regards, Alson
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071013155940.GA1842>