* Jack Vogel [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: port 0xdf00-0xd=
f1f mem 0xfdde0000-0xfddfffff,0xfddc0000-0xfdddffff irq 16 at device 0.0 on=
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

freebsd-stable@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"