[e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

62 messages, 14 authors, 2006-04-14 · open the first message on its own page

[e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Brandeburg, Jesse <hidden>
Date: 2006-03-30 02:53:57

Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)

As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.

To do this we have code like so in e1000_tso:
2529         if (skb_shinfo(skb)->tso_size) {
2530                 if (skb_header_cloned(skb)) {
2531                         err = pskb_expand_head(skb, 0, 0,
GFP_ATOMIC);
2532                         if (err)
2533                                 return err;
2534                 }
2535 
2536                 hdr_len = ((skb->h.raw - skb->data) +
(skb->h.th->doff << 2));
2537                 mss = skb_shinfo(skb)->tso_size;
2538                 if (skb->protocol == ntohs(ETH_P_IP)) {
2539                         skb->nh.iph->tot_len = 0;
2540                         skb->nh.iph->check = 0;

Thanks for your assistance

Jesse


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Yoseph Basri <hidden>
Date: 2006-03-30 04:02:11

Hi Jesse,

Thanks for your concern,

My server still send warning message regarding this KERNEL: assertion
(!sk_forward_alloc)  after upgrade kernel 2.6.12 or 2.6.15.

This is from dmesg server:

Linux version 2.6.15.4 (root@xxxxx) (gcc version 3.3.4 (Debian
1:3.3.4-13)) #1 SMP Tue Feb 21 17:12:27 SGT 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009d400 (usable)
 BIOS-e820: 000000000009d400 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000f7ffb300 (usable)
 BIOS-e820: 00000000f7ffb300 - 00000000f8000000 (ACPI data)
 BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000108000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 0009d540
On node 0 totalpages: 1048576
  DMA zone: 4096 pages, LIFO batch:0
  DMA32 zone: 0 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 819200 pages, LIFO batch:31
DMI 2.3 present.
ACPI: RSDP (v000 IBM                                   ) @ 0x000fdfc0
ACPI: RSDT (v001 IBM    SERONYXP 0x00001000 IBM  0x45444f43) @ 0xf7ffff80
ACPI: FADT (v001 IBM    SERONYXP 0x00001000 IBM  0x45444f43) @ 0xf7ffff00
ACPI: MADT (v001 IBM    SERONYXP 0x00001000 IBM  0x45444f43) @ 0xf7fffe80
ACPI: ASF! (v016 IBM    SERONYXP 0x00000001 IBM  0x45444f43) @ 0xf7fffdc0
ACPI: DSDT (v001 IBM    SERGEODE 0x00001000 MSFT 0x0100000b) @ 0x00000000
ACPI: PM-Timer IO Port: 0x488
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:2 APIC version 20
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 15:2 APIC version 20
ACPI: LAPIC_NMI (acpi_id[0x00] dfl dfl lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
ACPI: IOAPIC (id[0x0e] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 14, version 17, address 0xfec00000, GSI 0-15
ACPI: IOAPIC (id[0x0d] address[0xfec01000] gsi_base[16])
IOAPIC[1]: apic_id 13, version 17, address 0xfec01000, GSI 16-31
ACPI: IOAPIC (id[0x0c] address[0xfec02000] gsi_base[32])
IOAPIC[2]: apic_id 12, version 17, address 0xfec02000, GSI 32-47
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ7 used by override.
Enabling APIC mode:  Flat.  Using 3 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at f8800000 (gap: f8000000:06c00000)
Built 1 zonelists
Kernel command line: BOOT_IMAGE=linux-2.6.15.4 ro root=801
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
mapped IOAPIC to ffffb000 (fec01000)
mapped IOAPIC to ffffa000 (fec02000)
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 65536 bytes)
Detected 2794.685 MHz processor.
Using pmtmr for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 4025292k/4194304k available (1906k kernel code, 36796k
reserved, 650k data, 240k init, 3145708k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 5593.74 BogoMIPS (lpj=11187486)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfebfbff 00000000 00000000 00000000
00004400 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 00000000 00000000 00000000
00004400 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 00000000 00000000 00000080
00004400 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (12) available
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
CPU0: Intel(R) Xeon(TM) CPU 2.80GHz stepping 07
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 5588.12 BogoMIPS (lpj=11176253)
CPU: After generic identify, caps: bfebfbff 00000000 00000000 00000000
00004400 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 00000000 00000000 00000000
00004400 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 00000000 00000000 00000080
00004400 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel P4/Xeon Extended MCE MSRs (12) available
CPU1: Intel(R) Xeon(TM) CPU 2.80GHz stepping 07
Total of 2 processors activated (11181.86 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
checking TSC synchronization across 2 CPUs: passed.
Brought up 2 CPUs
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfd7dc, last bus=8
PCI: Using configuration type 1
ACPI: Subsystem revision 20050902
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
Boot video device is 0000:00:06.0
PCI: Ignoring BAR0-3 of IDE controller 0000:00:0f.1
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Root Bridge [PCI1] (0000:02)
PCI: Probing PCI hardware (bus 02)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI1._PRT]
ACPI: PCI Root Bridge [PCI2] (0000:04)
PCI: Probing PCI hardware (bus 04)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI2._PRT]
ACPI: PCI Root Bridge [PCI3] (0000:06)
PCI: Probing PCI hardware (bus 06)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI3._PRT]
ACPI: PCI Root Bridge [PCI4] (0000:08)
PCI: Probing PCI hardware (bus 08)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI4._PRT]
ACPI: PCI Interrupt Link [LP00] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP01] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP02] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP03] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP04] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP05] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP06] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP07] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP08] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP09] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP0A] (IRQs *10)
ACPI: PCI Interrupt Link [LP0B] (IRQs *9)
ACPI: PCI Interrupt Link [LP0C] (IRQs *9)
ACPI: PCI Interrupt Link [LP0D] (IRQs *3)
ACPI: PCI Interrupt Link [LP0E] (IRQs *5)
ACPI: PCI Interrupt Link [LP0F] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP10] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP11] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP12] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP13] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP14] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP15] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP16] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP17] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP18] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP19] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1A] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1B] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1C] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1D] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1E] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LP1F] (IRQs) *0, disabled.
ACPI: PCI Interrupt Link [LPUS] (IRQs *11)
SCSI subsystem initialized
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
IA-32 Microcode Update Driver: v1.14 [off-list ref]
highmem bounce pool size: 64 pages
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Real Time Clock Driver v1.12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
Intel(R) PRO/1000 Network Driver - version 6.1.16-k2
Copyright (c) 1999-2005 Intel Corporation.
ACPI: PCI Interrupt 0000:06:08.0[A] -> GSI 29 (level, low) -> IRQ 16
e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
ACPI: PCI Interrupt 0000:06:08.1[B] -> GSI 30 (level, low) -> IRQ 17
e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
e100: Intel(R) PRO/100 Network Driver, 3.4.14-k4-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
Probing IDE interface ide0...
hda: LG CD-ROM CRN-8245B, ATAPI CD/DVD-ROM drive
Probing IDE interface ide1...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Fusion MPT base driver 3.03.04
Copyright (c) 1999-2005 LSI Logic Corporation
Fusion MPT SPI Host driver 3.03.04
Fusion MPT base driver 3.03.04
Copyright (c) 1999-2005 LSI Logic Corporation
Fusion MPT SPI Host driver 3.03.04
ACPI: PCI Interrupt 0000:08:07.0[A] -> GSI 27 (level, low) -> IRQ 18
mptbase: Initiating ioc0 bringup
ioc0: 53C1030: Capabilities={Initiator}
scsi0 : ioc0: LSI53C1030, FwRev=01000e00h, Ports=1, MaxQ=222, IRQ=18
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sda: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sda: drive cache: write through
SCSI device sda: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sda: drive cache: write through
 sda: sda1 sda2 sda3 < sda5 sda6 sda7 sda8 sda9 sda10 >
sd 0:0:0:0: Attached scsi disk sda
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdb: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdb: drive cache: write through
SCSI device sdb: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdb: drive cache: write through
 sdb: sdb1 sdb2 sdb3 sdb4
sd 0:0:1:0: Attached scsi disk sdb
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdc: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdc: drive cache: write through
SCSI device sdc: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdc: drive cache: write through
 sdc: sdc1 sdc2 sdc3 sdc4
sd 0:0:2:0: Attached scsi disk sdc
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdd: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdd: drive cache: write through
SCSI device sdd: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdd: drive cache: write through
 sdd: sdd1 sdd2 sdd3 sdd4
sd 0:0:3:0: Attached scsi disk sdd
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sde: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sde: drive cache: write through
SCSI device sde: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sde: drive cache: write through
 sde: sde1 sde2 sde3 sde4
sd 0:0:4:0: Attached scsi disk sde
  Vendor: IBM-ESXS  Model: MAP3735NC     FN  Rev: B109
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdf: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdf: drive cache: write through
SCSI device sdf: 143374000 512-byte hdwr sectors (73407 MB)
SCSI device sdf: drive cache: write through
 sdf: sdf1 sdf2 sdf3 sdf4
sd 0:0:5:0: Attached scsi disk sdf
  Vendor: IBM       Model: 32P0032a S320  1  Rev: 1
  Type:   Processor                          ANSI SCSI revision: 02
ACPI: PCI Interrupt 0000:08:07.1[B] -> GSI 28 (level, low) -> IRQ 19
mptbase: Initiating ioc1 bringup
ioc1: 53C1030: Capabilities={Initiator}
scsi1 : ioc1: LSI53C1030, FwRev=01000e00h, Ports=1, MaxQ=222, IRQ=19
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 262144 (order: 8, 1048576 bytes)
TCP established hash table entries: 524288 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
input: AT Translated Set 2 keyboard as /class/input/input0
TCP: Hash tables configured (established 524288 bind 65536)
TCP reno registered
ip_conntrack version 2.4 (8192 buckets, 65536 max) - 176 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Starting balanced_irq
Using IPI Shortcut mode
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 240k freed
Adding 2104504k swap on /dev/sda2.  Priority:-1 extents:1 across:2104504k
EXT3 FS on sda1, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda6, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda5, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda7, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda10, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda9, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda8, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdb1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdb2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdb3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdb4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdc1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdc2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdc3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdc4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdd1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdd2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdd3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdd4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sde1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sde2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sde3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sde4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdf1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdf2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdf3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdf4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex

Are you all using iptables?

YES

Are you all routing?

NO
From the reports I assume none of you are using an 82571/2/3 (pci express)?
think so.

Thnaks again.

YB



On 3/30/06, Brandeburg, Jesse [off-list ref] wrote:
Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)

As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.

To do this we have code like so in e1000_tso:
2529         if (skb_shinfo(skb)->tso_size) {
2530                 if (skb_header_cloned(skb)) {
2531                         err = pskb_expand_head(skb, 0, 0,
GFP_ATOMIC);
2532                         if (err)
2533                                 return err;
2534                 }
2535
2536                 hdr_len = ((skb->h.raw - skb->data) +
(skb->h.th->doff << 2));
2537                 mss = skb_shinfo(skb)->tso_size;
2538                 if (skb->protocol == ntohs(ETH_P_IP)) {
2539                         skb->nh.iph->tot_len = 0;
2540                         skb->nh.iph->check = 0;

Thanks for your assistance

Jesse

-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Phil Oester <hidden>
Date: 2006-03-30 04:25:50

On Wed, Mar 29, 2006 at 06:53:57PM -0800, Brandeburg, Jesse wrote:
Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)
Unfortunately it happens randomly, so I have no reproducible test.
Dell 1850s and 2850s here, no iptables, routing, or pci express.
lspci reports:

82541GI/PI Gigabit Ethernet Controller (rev 05)
As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.
I'll certainly try it as long as it doesn't blow things up :)

Phil


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-30 04:44:09

From: "Brandeburg, Jesse" <redacted>
Date: Wed, 29 Mar 2006 18:53:57 -0800
To do this we have code like so in e1000_tso:
2529         if (skb_shinfo(skb)->tso_size) {
2530                 if (skb_header_cloned(skb)) {
2531                         err = pskb_expand_head(skb, 0, 0,
GFP_ATOMIC);
2532                         if (err)
2533                                 return err;
2534                 }
I was wondering if that call could somehow mess up the
sk->sk_forward_alloc value later on.

But it can't, sk_forward_alloc is modified based upon the
skb->truesize value, but pskb_expand_head() does not change that.

So the things left to check in the generic networking are the
skb_shinfo() contents and ->dataref handling.

I considered whether pskb_expand_head() could corrupt the TSO
information in skb_shinfo().  But that's clearly not the case because
pskb_expand_head() explicitly copies it over:

	memcpy(data + size, skb->end, sizeof(struct skb_shared_info));

And skb->end is set appropriately:

	skb->end      = data + size;

because skb_shinfo() is:

#define skb_shinfo(SKB)		((struct skb_shared_info *)((SKB)->end))

The only skb_shared_info that has to be explicitly setup is the
dataref, and pskb_expand_head() does that:

	atomic_set(&skb_shinfo(skb)->dataref, 1);

So that all checks out.

I wonder if something funky is going on wrt. the skb_release_data()
that pskb_expand_head() does.  We have that SKB_DATAREF_SHIFT thingy,
which will trigger in this case.

	if (!skb->cloned ||
	    !atomic_sub_return(skb->nohdr ? (1 << SKB_DATAREF_SHIFT) + 1 : 1,
			       &skb_shinfo(skb)->dataref)) {

When we enqueue a new TCP frame we do skb_header_release() which goes:

	skb->nohdr = 1;
	atomic_add(1 << SKB_DATAREF_SHIFT, &skb_shinfo(skb)->dataref);

Presumably the dataref is "1" already when we get here and do this.
We will clone, the clone will set ->nohdr to 0 and will increment the
dataref.

So at this point the dataref should be:

   1 /* initial reference */
 + (1 << SKB_DATAREF_SHIFT) /* from skb_header_release() */
 + 1 /* from skb_clone */

This all works out because when the clone is freed up, skb->nohdr will
be zero, so we will subtract "1" from dataref.  Later when the ACK
arrives we'll free up the non-clone and this will have skb->nohdr set
to "1" and thus we'll subtract

	(1 << SKB_DATAREF_SHIFT) + 1

from dataref, as per skb_release_data().

Although maybe relevant here, I just noticed that __skb_linearize()
does not clear skb->nohdr.  I bet that will cause a bunch of trouble
if the original SKB had skb->nohdr set, but I cannot see how that
can occur, we only send clones out to the device and those have
skb->nohdr clear (Herbert, double check this for me please).

Luckily that thing is used rarely.  Only in the dev_queue_xmit()
path when the SKB has been configured in such a way that the
transmitting device does not support so it should not be relevant
here.  Also I note that __skb_linearize() is not used at all
outside of net/core/dev.c, so we should mark it static some point
soon.  In fact we should do that while fixing this fringe "nohdr"
bug in __skb_linearize().

All the other dataref accesses look safe.

Herbert do you see any holes here?


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Christiaan den Besten <hidden>
Date: 2006-03-30 08:08:46

Hi !

Yes, we still have these errors ... but then, we have not changed the running kernel version for some time now ;)

---
Linux version 2.6.14-rc2-mm2 (root@localhost) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #2 SMP Thu Dec 15 19:06:21 CET 2005
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009b800 (usable)
 BIOS-e820: 000000000009b800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000cff70000 (usable)
 BIOS-e820: 00000000cff70000 - 00000000cff78000 (ACPI data)
 BIOS-e820: 00000000cff78000 - 00000000cff80000 (ACPI NVS)
 BIOS-e820: 00000000cff80000 - 00000000d0000000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)
 BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
3968MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6820
NX (Execute Disable) protection: active
On node 0 totalpages: 1245184
  DMA zone: 4096 pages, LIFO batch:2
  DMA32 zone: 0 pages, LIFO batch:2
  Normal zone: 225280 pages, LIFO batch:64
  HighMem zone: 1015808 pages, LIFO batch:64
DMI present.
ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f6880
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0xcff72d76
ACPI: FADT (v001 INTEL  LINDHRST 0x06040000 PTL  0x00000003) @ 0xcff77e20
ACPI: MADT (v001 PTLTD           APIC   0x06040000  LTP 0x00000000) @ 0xcff77e94
ACPI: BOOT (v001 PTLTD  $SBFTBL$ 0x06040000  LTP 0x00000001) @ 0xcff77f48
ACPI: SPCR (v001 PTLTD  $UCRTBL$ 0x06040000 PTL  0x00000001) @ 0xcff77f70
ACPI: MCFG (v001 PTLTD           MCFG   0x06040000  LTP 0x00000000) @ 0xcff77fc0
ACPI: SSDT (v001  PmRef    CpuPm 0x00003000 INTL 0x20030224) @ 0xcff72db2
ACPI: DSDT (v001  Intel LINDHRST 0x06040000 MSFT 0x0100000e) @ 0x00000000
ACPI: PM-Timer IO Port: 0x1008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x06] enabled)
Processor #6 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x07] enabled)
Processor #7 15:4 APIC version 20
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
ACPI: IOAPIC (id[0x03] address[0xfec80000] gsi_base[24])
IOAPIC[1]: apic_id 3, version 32, address 0xfec80000, GSI 24-47
ACPI: IOAPIC (id[0x04] address[0xfec80400] gsi_base[48])
IOAPIC[2]: apic_id 4, version 32, address 0xfec80400, GSI 48-71
ACPI: IOAPIC (id[0x05] address[0xfec84000] gsi_base[72])
IOAPIC[3]: apic_id 5, version 32, address 0xfec84000, GSI 72-95
ACPI: IOAPIC (id[0x08] address[0xfec84400] gsi_base[96])
IOAPIC[4]: apic_id 8, version 32, address 0xfec84400, GSI 96-119
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode:  Flat.  Using 5 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at d1000000 (gap: d0000000:10000000)
Built 1 zonelists
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
mapped IOAPIC to ffffb000 (fec80000)
mapped IOAPIC to ffffa000 (fec80400)
mapped IOAPIC to ffff9000 (fec84000)
mapped IOAPIC to ffff8000 (fec84400)
Initializing CPU#0
Kernel command line: ro root=LABEL=/
PID hash table entries: 4096 (order: 12, 65536 bytes)
Detected 2801.358 MHz processor.
Using pmtmr for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 4146392k/4980736k available (2757k kernel code, 45216k reserved, 783k data, 216k init, 3276224k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 5603.74 BogoMIPS (lpj=2801871)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
using mwait in idle threads.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000080 0000641d 00000000 00000000
mtrr: v2.0 (20020519)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
CPU0: Intel(R) Xeon(TM) CPU 2.80GHz stepping 01
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 5599.54 BogoMIPS (lpj=2799774)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000080 0000641d 00000000 00000000
CPU1: Intel(R) Xeon(TM) CPU 2.80GHz stepping 01
Booting processor 2/6 eip 2000
Initializing CPU#2
Calibrating delay using timer specific routine.. 5571.21 BogoMIPS (lpj=2785607)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000080 0000641d 00000000 00000000
CPU2: Intel(R) Xeon(TM) CPU 2.80GHz stepping 01
Booting processor 3/7 eip 2000
Initializing CPU#3
Calibrating delay using timer specific routine.. 5599.55 BogoMIPS (lpj=2799778)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000080 0000641d 00000000 00000000
CPU3: Intel(R) Xeon(TM) CPU 2.80GHz stepping 01
Total of 4 processors activated (22374.06 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 pin1=2 pin2=-1
checking TSC synchronization across 4 CPUs: passed.
Brought up 4 CPUs
checking if image is initramfs... it is
Freeing initrd memory: 296k freed
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfd830, last bus=9
PCI: Using MMCONFIG
usbcore: registered new driver usbfs
usbcore: registered new driver hub
ACPI: Subsystem revision 20050916
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
PCI: PXH quirk detected, disabling MSI for SHPC device
PCI: PXH quirk detected, disabling MSI for SHPC device
PCI: PXH quirk detected, disabling MSI for SHPC device
PCI: PXH quirk detected, disabling MSI for SHPC device
Boot video device is 0000:09:01.0
PCI: Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0.PXH0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0.PXH1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEY0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEZ0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEZ0.PXH0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEZ0.PXH1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 *7 10 11 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKF] (IRQs 4 5 6 7 10 11 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 4 5 6 7 *10 11 14 15)
ACPI: Device [PRT] status [0000000c]: functional but not present; setting present
SCSI subsystem initialized
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Bridge: 0000:01:00.0
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Bridge: 0000:01:00.2
  IO window: 2000-2fff
  MEM window: dd200000-dd2fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:02.0
  IO window: 2000-2fff
  MEM window: dd100000-dd2fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:04.0
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Bridge: 0000:06:01.0
  IO window: disabled.
  MEM window: dd400000-dd4fffff
  PREFETCH window: d1000000-d10fffff
PCI: Bridge: 0000:05:00.0
  IO window: disabled.
  MEM window: dd400000-dd4fffff
  PREFETCH window: d1000000-d10fffff
PCI: Bridge: 0000:05:00.2
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:06.0
  IO window: disabled.
  MEM window: dd300000-dd4fffff
  PREFETCH window: d1000000-d10fffff
PCI: Bridge: 0000:00:1e.0
  IO window: 3000-3fff
  MEM window: dd500000-deffffff
  PREFETCH window: d1100000-d11fffff
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:02.0 to 64
PCI: Setting latency timer of device 0000:01:00.0 to 64
PCI: Setting latency timer of device 0000:01:00.2 to 64
ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:04.0 to 64
ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:06.0 to 64
PCI: Setting latency timer of device 0000:05:00.0 to 64
PCI: Setting latency timer of device 0000:05:00.2 to 64
PCI: Setting latency timer of device 0000:00:1e.0 to 64
Simple Boot Flag at 0x39 set to 0x1
highmem bounce pool size: 64 pages
Total HugeTLB memory allocated, 0
SGI XFS with large block numbers, no debug enabled
Initializing Cryptographic API
ACPI: PCI Interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: EHCI Host Controller
ehci_hcd 0000:00:1d.7: debug port 1
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:1d.7: irq 17, io mem 0xdd001000
PCI: cache line size of 128 is not supported by device 0000:00:1d.7
ehci_hcd 0000:00:1d.7: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
usbcore: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic
usbcore: registered new driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
ACPI: Power Button (FF) [PWRF]
ACPI: Power Button (CM) [PWRB]
ACPI: CPU0 (power states: C1[C1])
ACPI: CPU2 (power states: C1[C1])
ACPI: CPU1 (power states: C1[C1])
ACPI: CPU3 (power states: C1[C1])
Real Time Clock Driver v1.12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
mice: PS/2 mouse device common for all mice
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
loop: loaded (max 8 devices)
Intel(R) PRO/1000 Network Driver - version 6.0.60-k2
Copyright (c) 1999-2005 Intel Corporation.
ACPI: PCI Interrupt 0000:03:02.0[A] -> GSI 54 (level, low) -> IRQ 18
e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
ACPI: PCI Interrupt 0000:03:02.1[B] -> GSI 55 (level, low) -> IRQ 19
e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH5: IDE controller at PCI slot 0000:00:1f.1
ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 20
ICH5: chipset revision 2
ICH5: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x14a0-0x14a7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0x14a8-0x14af, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: SR244W, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
Probing IDE interface ide1...
hda: ATAPI 24X CD-ROM drive, 128kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
ACPI: PCI Interrupt 0000:07:0e.0[A] -> GSI 74 (level, low) -> IRQ 21
ARECA RAID ADAPTER0: 64BITS PCI BUS DMA ADDRESSING SUPPORTED
ARECA RAID ADAPTER0: FIRMWARE VERSION V1.38 2005-10-4
scsi0 : ARECA ARC1160 PCI-X 16 PORTS SATA RAID CONTROLLER (RAID6-ENGINE Inside)
        Driver Version 1.20.00.12
  Vendor: Areca     Model: ARC-1160-VOL#00   Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
  Vendor: Areca     Model: DATA1             Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
  Vendor: Areca     Model: DATA2             Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
arcmsr device major number 254
libata version 1.12 loaded.
SCSI device sda: 312499712 512-byte hdwr sectors (160000 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 312499712 512-byte hdwr sectors (160000 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4 < sda5 sda6 >
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sdb: 820310016 512-byte hdwr sectors (419999 MB)
SCSI device sdb: drive cache: write back
SCSI device sdb: 820310016 512-byte hdwr sectors (419999 MB)
SCSI device sdb: drive cache: write back
 sdb: sdb1
Attached scsi disk sdb at scsi0, channel 0, id 1, lun 0
SCSI device sdc: 820310016 512-byte hdwr sectors (419999 MB)
SCSI device sdc: drive cache: write back
SCSI device sdc: 820310016 512-byte hdwr sectors (419999 MB)
SCSI device sdc: drive cache: write back
 sdc: sdc1
Attached scsi disk sdc at scsi0, channel 0, id 2, lun 0
md: md driver 0.90.2 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: bitmap version 3.39
device-mapper: 4.4.0-ioctl (2005-01-12) initialised: dm-devel@redhat.com
NET: Registered protocol family 2
IP route cache hash table entries: 262144 (order: 8, 1048576 bytes)
TCP established hash table entries: 524288 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 524288 bind 65536)
TCP reno registered
ip_conntrack version 2.3 (8192 buckets, 65536 max) - 172 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
802.1Q VLAN Support v1.8 Ben Greear [off-list ref]
All bugs added by David S. Miller [off-list ref]
Starting balanced_irq
Using IPI Shortcut mode
Freeing unused kernel memory: 216k freed
EXT3-fs: INFO: recovery required on readonly filesystem.
EXT3-fs: write access will be enabled during recovery.
kjournald starting.  Commit interval 5 seconds
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
EXT3 FS on sda1, internal journal
hda: packet command error: status=0x51 { DriveReady SeekComplete Error }
hda: packet command error: error=0x50 { LastFailedSense=0x05 }
ide: failed opcode was: unknown
cdrom: open failed.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda5, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda6, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
XFS mounting filesystem sdb1
Starting XFS recovery on filesystem: sdb1 (dev: sdb1)
Ending XFS recovery on filesystem: sdb1 (dev: sdb1)
XFS mounting filesystem sdc1
Starting XFS recovery on filesystem: sdc1 (dev: sdc1)
Ending XFS recovery on filesystem: sdc1 (dev: sdc1)
e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
e1000: eth1: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (279)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c (148)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (279)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c (148)
---

iptables : YES

routing : NO (3 routes at present)

traffic : A lot ;) ... 24x7 300mbit on eth0 and 450 mbit on eth1.

bye,
Chris

----- Original Message ----- 
From: "Brandeburg, Jesse" <redacted>
To: <redacted>; <redacted>; <redacted>; <redacted>; <redacted>; 
[off-list ref]; [off-list ref]; [off-list ref]; [off-list ref]; [off-list ref]
Cc: <redacted>; "Jesse Brandeburg" <redacted>; <davem@davemloft.net>; 
[off-list ref]; "Brandeburg, Jesse" [off-list ref]
Sent: Thursday, March 30, 2006 4:53 AM
Subject: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...


Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)

As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.

To do this we have code like so in e1000_tso:
2529         if (skb_shinfo(skb)->tso_size) {
2530                 if (skb_header_cloned(skb)) {
2531                         err = pskb_expand_head(skb, 0, 0,
GFP_ATOMIC);
2532                         if (err)
2533                                 return err;
2534                 }
2535
2536                 hdr_len = ((skb->h.raw - skb->data) +
(skb->h.th->doff << 2));
2537                 mss = skb_shinfo(skb)->tso_size;
2538                 if (skb->protocol == ntohs(ETH_P_IP)) {
2539                         skb->nh.iph->tot_len = 0;
2540                         skb->nh.iph->check = 0;

Thanks for your assistance

Jesse





-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Mark Nipper <hidden>
Date: 2006-03-30 08:24:41

On 29 Mar 2006, Brandeburg, Jesse wrote:
What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)
        Unfortunately, my problem machine is a remote, leased
server, so I'd have to ask my provider for information on the
motherboard.  I have no specific idea what causes the problem as
the assertions simply show up after the fact in my logcheck
output.  I am not using iptables or routing.  And I'm fairly
certain the e1000 chip is just an integrated PCI device on the
motherboard.
As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.
        I'll be happy to test any patches you may have to narrow
down the problem.  I was actually considering running tcpdump or
ethereal or some such to try to capture the event on the network
side, but this probably isn't a wise idea considering it's a
production server and I do not have hands-on access to it.  A
patch which simply increased the verbosity of the event
(including counters and registers maybe?) would be preferable to
trying to capture an arbitrary amount of network traffic simply
waiting for the next time the assertion is triggered.

        Sorry for the real lack of data on this end.  But as I
said, any patch to help debug this is welcome.

-- 
Mark Nipper                                                e-contacts:
832 Tanglewood Drive                                nipsy@bitgnome.net
Bryan, Texas 77802-4013                     http://nipsy.bitgnome.net/
(979)575-3193                      AIM/Yahoo: texasnipsy ICQ: 66971617

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GG/IT d- s++:+ a- C++$ UBL++++$ P--->+++ L+++$ !E---
W++(--) N+ o K++ w(---) O++ M V(--) PS+++(+) PE(--)
Y+ PGP t+ 5 X R tv b+++@ DI+(++) D+ G e h r++ y+(**)
------END GEEK CODE BLOCK------

---begin random quote of the moment---
I lost interest in "blade servers" when I found they didn't throw
knives at people who weren't supposed to be in your machine room.
  -- Anthony de Boer
----end random quote of the moment----


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-30 08:39:37

Hello, Brandeburg, Jesse.

On 30.03.2006 06:53 you said the following:
Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)

As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.

Jesse, I'd like to try your patches to help get rid of this annoying 
problem. I want to say, that this problem 100% reproucible on my 
hard-loading webserver based on RHEL4 with kernels 2.6.9 (rhel4 
original) - 2.6.15.7 (i.e. all releases from 2.6.9 to 2.6.15.7 affected).

  I have an asus 1unit server with double P4@2.8Ghz processors with 
enabled HyperThreading and 3Gb RAM, but with 1Gb RAM I have the same 
problem, thus it's not a RAM issue. This is really high load server, 
serving about 1000-1500 http requests per second plus about 500-1000 ftp 
requests per second.

  dmesg, lspci -vv, iptables -nL and ip route show in attached files. 
Wating for your instructions.


P.S. I use two e1000 adapters at the same time with advanced routing 
like this:

[root@msk4 ~]# cat /etc/rc.local |grep ip
# This script will be executed *after* all the other init scripts.
/sbin/ip rule add from 83.102.130.174 table NEW
/sbin/ip route add default via 83.102.130.173 dev eth0 table NEW



And also I have some hardcored sysctl options like this:

net.core.somaxconn=1024
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_max_tw_buckets=720000
net.core.rmem_default=215040
net.core.rmem_max=262144
net.core.wmem_default=215040
net.core.wmem_max=262144
net.core.optmem_max=81920
net.core.netdev_max_backlog=8192
net.ipv4.neigh.default.gc_thresh1=512
net.ipv4.neigh.default.gc_thresh2=2048
net.ipv4.neigh.default.gc_thresh3=4096
net.ipv4.neigh.default.unres_qlen=64
net.ipv4.neigh.default.proxy_qlen=256
net.ipv4.tcp_rmem = 4096 131072 262144
net.ipv4.tcp_wmem = 4096 131072 262144
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_sack=0
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_window_scaling=0
net.ipv4.tcp_keepalive_probes=3
kernel.sem=250 32000 100 128



-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Johan Lundgren <hidden>
Date: 2006-03-30 09:49:35

Hi,
What seems to cause this problem?
That I cannot say but the problem was fixed by removing one e1000 card
from the server (I initially had two e1000 cards installed in addition
to the two tg3 cards on the board).

Another fix was to disable TSO with ethtool.
What motherboards are you using?
Supermicro H8DAE (dual Opteron)
Are you all using iptables?  Are you all routing?
Iptables yes, routing no.
none of you are using an 82571/2/3 (pci express)
Correct.

Regards,
Johan


On 3/30/06, Brandeburg, Jesse [off-list ref] wrote:
Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)

As far as I know e1000 has the same requirement as tg3 and some others
where we have to modify the header of the skb in the case of transmits
using TSO.  I don't see anywhere else that the driver modifies the skb.
Tomorrow I'll generate a patch to try a more paranoid copying of the
skb, I hope some of you can test.

To do this we have code like so in e1000_tso:
2529         if (skb_shinfo(skb)->tso_size) {
2530                 if (skb_header_cloned(skb)) {
2531                         err = pskb_expand_head(skb, 0, 0,
GFP_ATOMIC);
2532                         if (err)
2533                                 return err;
2534                 }
2535
2536                 hdr_len = ((skb->h.raw - skb->data) +
(skb->h.th->doff << 2));
2537                 mss = skb_shinfo(skb)->tso_size;
2538                 if (skb->protocol == ntohs(ETH_P_IP)) {
2539                         skb->nh.iph->tot_len = 0;
2540                         skb->nh.iph->check = 0;

Thanks for your assistance

Jesse

-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-30 09:52:45

On Wed, Mar 29, 2006 at 08:44:09PM -0800, David S. Miller wrote:
Herbert do you see any holes here?
Well I started from the beginning again, and found this.  This may be
the smoking gun that we're after :)

The xmit routine is lockless but checks last_tx_tso outside the locked
section.  So if a TSO packet wins a race against a non-TSO packet with
last_tx_tso == 0 then we'll have memory corruption.

Everyone, please try this patch and let us know whether the problem
goes away.

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-30 10:02:01

Hello, Herbert Xu.

On 30.03.2006 13:52 you said the following:
On Wed, Mar 29, 2006 at 08:44:09PM -0800, David S. Miller wrote:
quoted
Herbert do you see any holes here?

Well I started from the beginning again, and found this.  This may be
the smoking gun that we're after :)

The xmit routine is lockless but checks last_tx_tso outside the locked
section.  So if a TSO packet wins a race against a non-TSO packet with
last_tx_tso == 0 then we'll have memory corruption.

Everyone, please try this patch and let us know whether the problem
goes away.

Thanks,


[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch 

patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]


Herbert, is that patch already included in 2.6.16.1?

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-30 10:12:18

On Thu, Mar 30, 2006 at 10:02:01AM +0000, Boris B. Zhmurov wrote:
[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch 

patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]

Herbert, is that patch already included in 2.6.16.1?
Not really.  It's just patch being silly (or too smart :)

Here it is again rediffed against 2.6.16.
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Krzysztof Oledzki <hidden>
Date: 2006-03-30 10:27:36


On Wed, 29 Mar 2006, Brandeburg, Jesse wrote:
Hi all, I've identified you as people who have at some point in the past
emailed one of the Linux lists with problems with e1000 and
sk_forward_alloc.  It seems to be fairly widespread, but only seems to
have appeared with recent kernel changes (after 2.6.12...)

What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?
RIOWORKS/PDRCA.

# lspci
00:00.0 Host bridge: ServerWorks GCNB-LE Host Bridge (rev 32)
00:00.1 Host bridge: ServerWorks GCNB-LE Host Bridge
00:02.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 I2O: Adaptec (formerly DPT) SmartRAID V Controller (rev 01)
00:04.1 PCI bridge: Adaptec (formerly DPT) PCI Bridge (rev 01)
00:06.0 Ethernet controller: D-Link System Inc DL2000-based Gigabit Ethernet (rev 0c)
00:08.0 SCSI storage controller: Initio Corporation INI-A100U2W (rev 01)
00:0e.0 IDE interface: ServerWorks CSB6 IDE Controller (rev a0)
00:0f.0 Host bridge: ServerWorks CSB6 South Bridge (rev a0)
00:0f.1 IDE interface: ServerWorks CSB6 RAID/IDE Controller (rev a0)
00:0f.2 USB Controller: ServerWorks CSB6 OHCI USB Controller (rev 05)
00:0f.3 ISA bridge: ServerWorks GCLE-2 Host Bridge
What seems to cause this problem?
Don't known as this problem occurs only occasionally.
Are you all using iptables?
Yes, this is a www proxy server with "-j REDIRECT".
 Are you all routing?
Some kind as this is a transparent www proxy.
From the reports I assume none of you are using an 82571/2/3 (pci 
express)

00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
         Subsystem: Rioworks: Unknown device 3011
         Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 169
         Memory at d0000000 (32-bit, non-prefetchable) [size=128K]
         I/O ports at 2c00 [size=64]
         Capabilities: [dc] Power Management version 2
         Capabilities: [e4] PCI-X non-bridge device.
         Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

Thank you.

Best regards,

 			Krzysztof Olędzki

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Krzysztof Oledzki <hidden>
Date: 2006-03-30 10:29:36


On Thu, 30 Mar 2006, Mark Nipper wrote:
On 29 Mar 2006, Brandeburg, Jesse wrote:
quoted
What I need from you is a reproducible test, and some information.  I
have never been able to reproduce this, and I'm trying to isolate the
problem a bit.  What motherboards are you using?  What seems to cause
this problem?  Are you all using iptables?  Are you all routing? From
the reports I assume none of you are using an 82571/2/3 (pci express)
       Unfortunately, my problem machine is a remote, leased
server, so I'd have to ask my provider for information on the
motherboard.
You can probably check this with the dmidecode tool.

Best regards,

 				Krzysztof Olędzki

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: JaniD++ <hidden>
Date: 2006-03-30 12:53:02

Hello,
Motherboard?
Intel SE7520AF2 (Dual Xeon)
Are you all using iptables?
YES
Are you all routing?
NO

From the reports I assume none of you are using an 82571/2/3 (pci express)?
08:04.0 Ethernet controller: Intel Corp.: Unknown device 1079 (rev 03)
        Subsystem: Intel Corp.: Unknown device 341a
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (63750ns min), cache line size 10
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fe9c0000 (64-bit, non-prefetchable) [size=128K]
        Region 4: I/O ports at c800 [size=64]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device.
                Command: DPERE- ERO+ RBC=0 OST=0
                Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-,
DC=simple, DMMRBC=0, DMOST=0, DMCRS=0, RSCEM-      Capabi
lities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
                Address: 0000000000000000  Data: 0000

08:04.1 Ethernet controller: Intel Corp.: Unknown device 1079 (rev 03)
        Subsystem: Intel Corp.: Unknown device 341a
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (63750ns min), cache line size 10
        Interrupt: pin B routed to IRQ 22
        Region 0: Memory at fe9e0000 (64-bit, non-prefetchable) [size=128K]
        Region 4: I/O ports at cc00 [size=64]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device.
                Command: DPERE- ERO+ RBC=0 OST=0
                Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-,
DC=simple, DMMRBC=0, DMOST=0, DMCRS=0, RSCEM-      Capabi
lities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
                Address: 0000000000000000  Data: 0000

And, i can see, all testers using the E1000 card to serving web (or web
proxy) directly to internet. (or not?)


My dmesg:  (kernel 2.6.15.7 + nbd-fix + E1000 driver from 2.6.16.1 version
6.3.9-k4)

Linux version 2.6.15.7-NBDFIX (root@dy-xeon-1) (gcc version 4.0.0 20050519
(Red Hat 4.0.0-8)) #2 SMP Wed Mar 29 15:05:41 CEST 2006
BIOS-provided physical RAM map:

BIOS-e820: 0000000000000000 - 000000000009f800 (usable)

BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)

BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)

BIOS-e820: 0000000000100000 - 00000000dffe0000 (usable)

BIOS-e820: 00000000dffe0000 - 00000000dffef000 (ACPI data)

BIOS-e820: 00000000dffef000 - 00000000dfffdc00 (ACPI NVS)

BIOS-e820: 00000000dfffdc00 - 00000000e0000000 (reserved)

BIOS-e820: 00000000fec00000 - 00000000fec86000 (reserved)

BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)

BIOS-e820: 00000000ffc00000 - 0000000100000000 (reserved)

BIOS-e820: 0000000100000000 - 0000000120000000 (usable)

3712MB HIGHMEM available.

896MB LOWMEM available.

found SMP MP-table at 000ff780

On node 0 totalpages: 1179648

DMA zone: 4096 pages, LIFO batch:0

DMA32 zone: 0 pages, LIFO batch:0

Normal zone: 225280 pages, LIFO batch:31

HighMem zone: 950272 pages, LIFO batch:31

DMI 2.3 present.

ACPI: RSDP (v000 ACPIAM ) @ 0x000f7f80

ACPI: RSDT (v001 A M I OEMRSDT 0x10000408 MSFT 0x00000097) @ 0xdffe0000

ACPI: FADT (v002 A M I OEMFACP 0x10000408 MSFT 0x00000097) @ 0xdffe0200

ACPI: MADT (v001 A M I OEMAPIC 0x10000408 MSFT 0x00000097) @ 0xdffe0390

ACPI: MCFG (v001 A M I OEMMCFG 0x10000408 MSFT 0x00000097) @ 0xdffe04a0

ACPI: OEMB (v001 A M I AMI_OEM 0x10000408 MSFT 0x00000097) @ 0xdffef040

ACPI: DSDT (v001 ALIEF ALIEF086 0x00000086 INTL 0x02002026) @ 0x00000000

ACPI: PM-Timer IO Port: 0x408

ACPI: Local APIC address 0xfee00000

ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)

Processor #0 15:4 APIC version 20

ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] enabled)

Processor #6 15:4 APIC version 20

ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled)

Processor #1 15:4 APIC version 20

ACPI: LAPIC (acpi_id[0x04] lapic_id[0x07] enabled)

Processor #7 15:4 APIC version 20

ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])

ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])

ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])

ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])

ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0])

IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23

ACPI: IOAPIC (id[0x09] address[0xfec80000] gsi_base[24])

IOAPIC[1]: apic_id 9, version 32, address 0xfec80000, GSI 24-47

ACPI: IOAPIC (id[0x0a] address[0xfec80400] gsi_base[48])

IOAPIC[2]: apic_id 10, version 32, address 0xfec80400, GSI 48-71

ACPI: IOAPIC (id[0x0b] address[0xfec85000] gsi_base[72])

IOAPIC[3]: apic_id 11, version 32, address 0xfec85000, GSI 72-95

ACPI: IOAPIC (id[0x0c] address[0xfec85400] gsi_base[96])

IOAPIC[4]: apic_id 12, version 32, address 0xfec85400, GSI 96-119

ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)

ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)

ACPI: IRQ0 used by override.

ACPI: IRQ2 used by override.

ACPI: IRQ9 used by override.

Enabling APIC mode: Flat. Using 5 I/O APICs

Using ACPI (MADT) for SMP configuration information

Allocating PCI resources starting at e2000000 (gap: e0000000:1ec00000)

Built 1 zonelists

Kernel command line: root=/dev/nfs,rw nfsroot=192.168.2.1://NFS/ROOT-XEON1/
ip=:::::eth0:autoconf pci=routeirq vga=0x0f05 notsc
BOOT_IMAGE=20060329_XEON_2.6.15.7-NBDFIX-NEWe1000

notsc: Kernel compiled with CONFIG_X86_TSC, cannot disable TSC.

mapped APIC to ffffd000 (fee00000)

mapped IOAPIC to ffffc000 (fec00000)

mapped IOAPIC to ffffb000 (fec80000)

mapped IOAPIC to ffffa000 (fec80400)

mapped IOAPIC to ffff9000 (fec85000)

mapped IOAPIC to ffff8000 (fec85400)

Initializing CPU#0

PID hash table entries: 4096 (order: 12, 65536 bytes)

Detected 2992.695 MHz processor.

Using pmtmr for high-res timesource

Console: colour VGA+ 80x30

Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

Memory: 4149096k/4718592k available (3675k kernel code, 43856k reserved,
1225k data, 248k init, 3276672k highmem)

Checking if this processor honours the WP bit even in supervisor mode... Ok.

Calibrating delay using timer specific routine.. 5989.80 BogoMIPS
(lpj=29949038)

Security Framework v1.0.0 initialized

Capability LSM initialized

Mount-cache hash table entries: 512

CPU: After generic identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

CPU: After vendor identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

monitor/mwait feature present.

using mwait in idle threads.

CPU: Trace cache: 12K uops, L1 D cache: 16K

CPU: L2 cache: 1024K

CPU: Physical Processor ID: 0

CPU: After all inits, caps: bfebfbff 20000000 00000000 00000080 0000641d
00000000 00000000

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#0.

CPU0: Intel P4/Xeon Extended MCE MSRs (24) available

CPU0: Thermal monitoring enabled

mtrr: v2.0 (20020519)

Enabling fast FPU save and restore... done.

Enabling unmasked SIMD FPU exception support... done.

Checking 'hlt' instruction... OK.

CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 01

Booting processor 1/1 eip 2000

Initializing CPU#1

Calibrating delay using timer specific routine.. 5985.20 BogoMIPS
(lpj=29926009)

CPU: After generic identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

CPU: After vendor identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

monitor/mwait feature present.

CPU: Trace cache: 12K uops, L1 D cache: 16K

CPU: L2 cache: 1024K

CPU: Physical Processor ID: 0

CPU: After all inits, caps: bfebfbff 20000000 00000000 00000080 0000641d
00000000 00000000

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#1.

CPU1: Intel P4/Xeon Extended MCE MSRs (24) available

CPU1: Thermal monitoring enabled

CPU1: Intel(R) Xeon(TM) CPU 3.00GHz stepping 01

Booting processor 2/6 eip 2000

Initializing CPU#2

Calibrating delay using timer specific routine.. 5985.22 BogoMIPS
(lpj=29926134)

CPU: After generic identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

CPU: After vendor identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

monitor/mwait feature present.

CPU: Trace cache: 12K uops, L1 D cache: 16K

CPU: L2 cache: 1024K

CPU: Physical Processor ID: 3

CPU: After all inits, caps: bfebfbff 20000000 00000000 00000080 0000641d
00000000 00000000

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#2.

CPU2: Intel P4/Xeon Extended MCE MSRs (24) available

CPU2: Thermal monitoring enabled

CPU2: Intel(R) Xeon(TM) CPU 3.00GHz stepping 01

Booting processor 3/7 eip 2000

Initializing CPU#3

Calibrating delay using timer specific routine.. 5985.23 BogoMIPS
(lpj=29926183)

CPU: After generic identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

CPU: After vendor identify, caps: bfebfbff 20000000 00000000 00000000
0000641d 00000000 00000000

monitor/mwait feature present.

CPU: Trace cache: 12K uops, L1 D cache: 16K

CPU: L2 cache: 1024K

CPU: Physical Processor ID: 3

CPU: After all inits, caps: bfebfbff 20000000 00000000 00000080 0000641d
00000000 00000000

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#3.

CPU3: Intel P4/Xeon Extended MCE MSRs (24) available

CPU3: Thermal monitoring enabled

CPU3: Intel(R) Xeon(TM) CPU 3.00GHz stepping 01

Total of 4 processors activated (23945.47 BogoMIPS).

ENABLING IO-APIC IRQs

..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1

checking TSC synchronization across 4 CPUs: passed.

Brought up 4 CPUs

NET: Registered protocol family 16

ACPI: bus type pci registered

PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=9

PCI: Using MMCONFIG

ACPI: Subsystem revision 20050902

ACPI: Interpreter enabled

ACPI: Using IOAPIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (0000:00)

PCI: Probing PCI hardware (bus 00)

PCI quirk: region 0400-047f claimed by ICH4 ACPI/GPIO/TCO

PCI quirk: region 0500-053f claimed by ICH4 GPIO

PCI: PXH quirk detected, disabling MSI for SHPC device

PCI: PXH quirk detected, disabling MSI for SHPC device

Boot video device is 0000:01:0c.0

PCI: Transparent bridge - 0000:00:1e.0

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPA0.PXHA._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPA0.PXHB._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPB0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPC0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPC1.DBSA._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EPC1.DBSB._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs *7)

ACPI: PCI Interrupt Link [LNKB] (IRQs *7)

ACPI: PCI Interrupt Link [LNKC] (IRQs *7)

ACPI: PCI Interrupt Link [LNKD] (IRQs *7)

ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0,
disabled.

ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 14 15) *0,
disabled.

ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 14 15) *0,
disabled.

ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 *10 11 12 14 15)

Linux Plug and Play Support v0.97 (c) Adam Belay

pnp: PnP ACPI init

pnp: PnP ACPI: found 12 devices

SCSI subsystem initialized

usbcore: registered new driver usbfs

usbcore: registered new driver hub

PCI: Using ACPI for IRQ routing

PCI: Routing PCI interrupts for all devices because "pci=routeirq" specified

ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:07.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:00:1d.1[B] -> GSI 19 (level, low) -> IRQ 17

ACPI: PCI Interrupt 0000:00:1d.2[C] -> GSI 18 (level, low) -> IRQ 18

ACPI: PCI Interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 19

ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 18 (level, low) -> IRQ 18

ACPI: PCI Interrupt 0000:00:1f.3[B] -> GSI 17 (level, low) -> IRQ 20

ACPI: PCI Interrupt 0000:08:04.0[A] -> GSI 52 (level, low) -> IRQ 21

ACPI: PCI Interrupt 0000:08:04.1[B] -> GSI 53 (level, low) -> IRQ 22

ACPI: PCI Interrupt 0000:01:0c.0[A] -> GSI 17 (level, low) -> IRQ 20

pnp: 00:09: ioport range 0x680-0x69f has been reserved

pnp: 00:09: ioport range 0x640-0x65f has been reserved

pnp: 00:09: ioport range 0x600-0x60f has been reserved

pnp: 00:09: ioport range 0x6c0-0x6df has been reserved

pnp: 00:09: ioport range 0x700-0x71f has been reserved

pnp: 00:09: ioport range 0x720-0x73f has been reserved

pnp: 00:09: ioport range 0x740-0x74f has been reserved

PCI: Bridge: 0000:07:00.0

IO window: disabled.

MEM window: disabled.

PREFETCH window: disabled.

PCI: Bridge: 0000:07:00.2

IO window: c000-cfff

MEM window: fe900000-fe9fffff

PREFETCH window: disabled.

PCI: Bridge: 0000:00:02.0

IO window: c000-cfff

MEM window: fe900000-feafffff

PREFETCH window: disabled.

PCI: Bridge: 0000:00:04.0

IO window: disabled.

MEM window: disabled.

PREFETCH window: disabled.

PCI: Bridge: 0000:00:06.0

IO window: disabled.

MEM window: disabled.

PREFETCH window: disabled.

PCI: Bridge: 0000:02:00.0

IO window: disabled.

MEM window: disabled.

PREFETCH window: disabled.

PCI: Bridge: 0000:02:00.2

IO window: disabled.

MEM window: disabled.

PREFETCH window: disabled.

PCI: Bridge: 0000:00:07.0

IO window: disabled.

MEM window: fe800000-fe8fffff

PREFETCH window: disabled.

PCI: Bridge: 0000:00:1e.0

IO window: b000-bfff

MEM window: fc700000-fe7fffff

PREFETCH window: e2000000-e20fffff

ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:02.0 to 64

PCI: Setting latency timer of device 0000:07:00.0 to 64

PCI: Setting latency timer of device 0000:07:00.2 to 64

ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:04.0 to 64

ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:06.0 to 64

ACPI: PCI Interrupt 0000:00:07.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:07.0 to 64

PCI: Setting latency timer of device 0000:02:00.0 to 64

PCI: Setting latency timer of device 0000:02:00.2 to 64

PCI: Setting latency timer of device 0000:00:1e.0 to 64

Machine check exception polling timer started.

apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)

apm: disabled - APM is not SMP safe.

audit: initializing netlink socket (disabled)

audit(1143712094.670:1): initialized

highmem bounce pool size: 64 pages

VFS: Disk quotas dquot_6.5.1

Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

Coda Kernel/Venus communications, v5.3.20, coda@cs.cmu.edu

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

NTFS driver 2.1.25 [Flags: R/W].

SGI XFS with ACLs, large block numbers, no debug enabled

SGI XFS Quota Management subsystem

Initializing Cryptographic API

io scheduler noop registered

io scheduler anticipatory registered

io scheduler deadline registered

io scheduler cfq registered

ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:02.0 to 64

Allocate Port Service[pcie00]

Allocate Port Service[pcie01]

ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:04.0 to 64

Allocate Port Service[pcie00]

Allocate Port Service[pcie01]

ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:06.0 to 64

Allocate Port Service[pcie00]

Allocate Port Service[pcie01]

ACPI: PCI Interrupt 0000:00:07.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:07.0 to 64

Allocate Port Service[pcie00]

Allocate Port Service[pcie01]

kobject_register failed for radeonfb (-17)

[<c010360c>] dump_stack+0x16/0x1a

[<c02ad2d5>] kobject_register+0x37/0x4f

[<c0319cbb>] bus_add_driver+0x46/0xa6

[<c031a523>] driver_register+0x41/0x46

[<c02b5047>] __pci_register_driver+0x86/0x97

[<c05e01ef>] radeonfb_old_init+0x38/0x41

[<c05cc848>] do_initcalls+0x46/0x96

[<c05cc8cd>] do_basic_setup+0x21/0x23

[<c01003a5>] init+0xa2/0x199

[<c0100ea5>] kernel_thread_helper+0x5/0xb

Real Time Clock Driver v1.12

ipmi message handler version 38.0

PNP: PS/2 Controller [PNP0f03:PS2M] at 0x60,0x64 irq 12

PNP: PS/2 controller doesn't have KBD irq; using default 1

serio: i8042 AUX port at 0x60,0x64 irq 12

serio: i8042 KBD port at 0x60,0x64 irq 1

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled

serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

00:04: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

00:05: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

loop: loaded (max 8 devices)

ibmasm: IBM ASM Service Processor Driver version 1.0 loaded

Intel(R) PRO/1000 Network Driver - version 6.3.9-k4

Copyright (c) 1999-2005 Intel Corporation.

ACPI: PCI Interrupt 0000:08:04.0[A] -> GSI 52 (level, low) -> IRQ 21

e1000: 0000:08:04.0: e1000_probe: (PCI-X:100MHz:64-bit) 00:07:e9:32:e6:d8

e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection

ACPI: PCI Interrupt 0000:08:04.1[B] -> GSI 53 (level, low) -> IRQ 22

e1000: 0000:08:04.1: e1000_probe: (PCI-X:100MHz:64-bit) 00:07:e9:32:e6:d9

e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection

Ethernet Channel Bonding Driver: v2.6.5 (November 4, 2005)

bonding: Warning: either miimon or arp_interval and arp_ip_target module
parameters must be specified, otherwise bonding will not detect link
failures! see bonding.txt for details.

e100: Intel(R) PRO/100 Network Driver, 3.4.14-k4-NAPI

e100: Copyright(c) 1999-2005 Intel Corporation

tun: Universal TUN/TAP device driver, 1.6

tun: (C) 1999-2004 Max Krasnyansky [off-list ref]

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

Probing IDE interface ide0...

Probing IDE interface ide1...

3ware 9000 Storage Controller device driver for Linux v2.26.02.004.

libata version 1.20 loaded.

ata_piix 0000:00:1f.2: version 1.05

ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 18 (level, low) -> IRQ 18

PCI: Setting latency timer of device 0000:00:1f.2 to 64

ata1: SATA max UDMA/133 cmd 0xEC00 ctl 0xE802 bmdma 0xDC00 irq 18

ata2: SATA max UDMA/133 cmd 0xE400 ctl 0xE002 bmdma 0xDC08 irq 18

ata1: dev 0 cfg 49:2f00 82:346b 83:7f61 84:4003 85:3469 86:3c41 87:4003
88:407f

ata1: dev 0 ATA-6, max UDMA/133, 390721968 sectors: LBA48

ata1: dev 0 configured for UDMA/133

scsi0 : ata_piix

ata2: dev 0 cfg 49:2f00 82:346b 83:7f61 84:4003 85:3469 86:3c41 87:4003
88:407f

ata2: dev 0 ATA-6, max UDMA/133, 390721968 sectors: LBA48

ata2: dev 0 configured for UDMA/133

scsi1 : ata_piix

Vendor: ATA Model: WDC WD2000JD-19H Rev: 08.0

Type: Direct-Access ANSI SCSI revision: 05

Vendor: ATA Model: WDC WD2000JD-19H Rev: 08.0

Type: Direct-Access ANSI SCSI revision: 05

SCSI device sda: 390721968 512-byte hdwr sectors (200050 MB)

SCSI device sda: drive cache: write back

SCSI device sda: 390721968 512-byte hdwr sectors (200050 MB)

SCSI device sda: drive cache: write back

sda: sda1 sda2

sd 0:0:0:0: Attached scsi disk sda

SCSI device sdb: 390721968 512-byte hdwr sectors (200050 MB)

SCSI device sdb: drive cache: write back

SCSI device sdb: 390721968 512-byte hdwr sectors (200050 MB)

SCSI device sdb: drive cache: write back

sdb: sdb1 sdb2

sd 1:0:0:0: Attached scsi disk sdb

sd 0:0:0:0: Attached scsi generic sg0 type 0

sd 1:0:0:0: Attached scsi generic sg1 type 0

aoe: aoe_init: AoE v2.6-14 initialised.

usbmon: debugfs is not available

ACPI: PCI Interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 19

PCI: Setting latency timer of device 0000:00:1d.7 to 64

ehci_hcd 0000:00:1d.7: EHCI Host Controller

ehci_hcd 0000:00:1d.7: debug port 1

PCI: cache line size of 128 is not supported by device 0000:00:1d.7

ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1

ehci_hcd 0000:00:1d.7: irq 19, io mem 0xfebffc00

ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 6 ports detected

ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)

USB Universal Host Controller Interface driver v2.3

ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 16 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:1d.0 to 64

uhci_hcd 0000:00:1d.0: UHCI Host Controller

uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2

uhci_hcd 0000:00:1d.0: irq 16, io base 0x0000d000

hub 2-0:1.0: USB hub found

hub 2-0:1.0: 2 ports detected

ACPI: PCI Interrupt 0000:00:1d.1[B] -> GSI 19 (level, low) -> IRQ 17

PCI: Setting latency timer of device 0000:00:1d.1 to 64

uhci_hcd 0000:00:1d.1: UHCI Host Controller

uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3

uhci_hcd 0000:00:1d.1: irq 17, io base 0x0000d400

hub 3-0:1.0: USB hub found

hub 3-0:1.0: 2 ports detected

ACPI: PCI Interrupt 0000:00:1d.2[C] -> GSI 18 (level, low) -> IRQ 18

PCI: Setting latency timer of device 0000:00:1d.2 to 64

uhci_hcd 0000:00:1d.2: UHCI Host Controller

uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4

uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000d800

hub 4-0:1.0: USB hub found

hub 4-0:1.0: 2 ports detected

sl811: driver sl811-hcd, 19 May 2005

Initializing USB Mass Storage driver...

usbcore: registered new driver usb-storage

USB Mass Storage support registered.

mice: PS/2 mouse device common for all mice

I2O subsystem v1.288

i2o: max drivers = 8

I2O ProcFS OSM v1.145

i2c /dev entries driver

i2c-sis96x version 1.0.0

pc87360: PC8736x not detected, module not inserted.

md: linear personality registered as nr 1

md: raid0 personality registered as nr 2

md: raid1 personality registered as nr 3

md: raid5 personality registered as nr 4

raid5: automatically using best checksumming function: pIII_sse

pIII_sse : 4862.400 MB/sec

raid5: using function: pIII_sse (4862.400 MB/sec)

md: multipath personality registered as nr 7

md: faulty personality registered as nr 10

md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27

md: bitmap version 4.39

device-mapper: 4.4.0-ioctl (2005-01-12) initialised: dm-devel@redhat.com

device-mapper: dm-multipath version 1.0.4 loaded

device-mapper: dm-round-robin version 1.0.0 loaded

device-mapper: dm-emc version 0.0.3 loaded

NET: Registered protocol family 2

IP route cache hash table entries: 262144 (order: 8, 1048576 bytes)

TCP established hash table entries: 524288 (order: 10, 4194304 bytes)

TCP bind hash table entries: 65536 (order: 7, 524288 bytes)

TCP: Hash tables configured (established 524288 bind 65536)

TCP reno registered

ip_conntrack version 2.4 (8192 buckets, 65536 max) - 232 bytes per conntrack

ip_tables: (C) 2000-2002 Netfilter core team

ipt_recent v0.3.1: Stephen Frost [off-list ref].
http://snowman.net/projects/ipt_recent/

arp_tables: (C) 2002 David S. Miller

TCP bic registered

NET: Registered protocol family 1

NET: Registered protocol family 10

lo: Disabled Privacy Extensions

IPv6 over IPv4 tunneling driver

ip6_tables: (C) 2000-2002 Netfilter core team

registering ipv6 mark target

NET: Registered protocol family 17

p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available

Using IPI Shortcut mode

ADDRCONF(NETDEV_UP): eth0: link is not ready

e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex

ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Sending DHCP requests ., OK

IP-Config: Got DHCP answer from 192.168.2.1, my address is 192.168.2.50

IP-Config: Complete:

device=eth0, addr=192.168.2.50, mask=255.255.255.0, gw=192.168.2.100,

host=xeon, domain=, nis-domain=(none),

bootserver=192.168.2.1, rootserver=192.168.2.1, rootpath=/NFS/ROOT-XEON1/

md: Autodetecting RAID arrays.

md: invalid raid superblock magic on sda2

md: sda2 has invalid sb, not importing!

md: invalid raid superblock magic on sdb2

md: sdb2 has invalid sb, not importing!

md: autorun ...

md: considering sdb1 ...

md: adding sdb1 ...

md: adding sda1 ...

md: created md10

md: bind<sda1>

md: bind<sdb1>

md: running: <sdb1><sda1>

md10: bitmap initialized from disk: read 9/9 pages, set 0 bits, status: 0

created bitmap (131 pages) for device md10

raid1: raid set md10 active with 2 out of 2 mirrors

md: ... autorun DONE.

Looking up port of RPC 100003/2 on 192.168.2.1

Looking up port of RPC 100005/1 on 192.168.2.1

VFS: Mounted root (nfs filesystem) readonly.

Freeing unused kernel memory: 248k freed

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

program scsi_unique_id is using a deprecated SCSI ioctl, please convert it
to SG_IO

eth0: no IPv6 routers present


Cheers,
Janos



----- Original Message ----- 
From: "Herbert Xu" <herbert@gondor.apana.org.au>
To: "Boris B. Zhmurov" <redacted>
Cc: "David S. Miller" <davem@davemloft.net>; <redacted>;
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref];
[off-list ref]
Sent: Thursday, March 30, 2006 12:12 PM
Subject: Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

On Thu, Mar 30, 2006 at 10:02:01AM +0000, Boris B. Zhmurov wrote:
quoted
[zhmurov@builds linux-2.6.16]$ patch -p1 <
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_fa
iled_by_Herbert_Xu.patch
quoted
patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]

Herbert, is that patch already included in 2.6.16.1?
Not really.  It's just patch being silly (or too smart :)

Here it is again rediffed against 2.6.16.
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


 _____________ NOD32 1.584 (20031220) Információ _____________

Az üzenetet a NOD32 Antivirus System megvizsgálta.
http://www.nod32.hu


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-30 13:29:09

Hello, Herbert Xu.

On 30.03.2006 14:12 you said the following:
On Thu, Mar 30, 2006 at 10:02:01AM +0000, Boris B. Zhmurov wrote:
quoted
[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch 

patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]

Herbert, is that patch already included in 2.6.16.1?

Not really.  It's just patch being silly (or too smart :)

Here it is again rediffed against 2.6.16.

Nope, with this patch the problem still exists. After 25 min. uptime 
with patched kernel 2.6.16.1, I have:

Mar 30 16:30:31 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/core/stream.c (283)
Mar 30 16:30:31 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/ipv4/af_inet.c (150)
Mar 30 17:05:42 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/core/stream.c (283)
Mar 30 17:05:42 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/ipv4/af_inet.c (150)


-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Phil Oester <hidden>
Date: 2006-03-30 16:22:13

On 29 Mar 2006, Brandeburg, Jesse wrote:
What I need from you is a reproducible test, and some information.  I
From all the reports which have come in thus far, it seems everyone
has > 1 e1000.  One person even reported that removing one of the two
nics solved the problem for him.  Does this help narrow down the search
area?

Phil


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Krzysztof Oledzki <hidden>
Date: 2006-03-30 17:21:36


On Thu, 30 Mar 2006, Phil Oester wrote:
quoted
On 29 Mar 2006, Brandeburg, Jesse wrote:
What I need from you is a reproducible test, and some information.  I
From all the reports which have come in thus far, it seems everyone
has > 1 e1000.  One person even reported that removing one of the two
nics solved the problem for him.  Does this help narrow down the search
area?
I have only one. Anyway, this massage happens _very_ occasionally in my
case.


Best regrads,

 				Krzysztof Olędzki

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Ingo Oeser <hidden>
Date: 2006-03-31 08:57:06

Hi Jesse,

More datapoints.

First of all, I don't see the problem, so this is an exclusion data point.

Machine is up 1 day, 19:02

I use 2.6.16 and I'm NBOT running at Gigabit speed.
(just couldn't get e100 cards anymore, they are not sold anymore here)

Version: vendor 00:aa:00, model 56 rev 0

Services: I'm routing, run IPsec, do firewalling/nat with iptables, do PPPoE
	on this machine but all not on that interface. 

The card is exposed to the local LAN interface.

[4294671.426000] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[4294671.447000] e100: eth1: e100_probe: addr 0xe3140000, irq 10, MAC addr 00:D0:B7:XX:XX:XX
[4294671.447000] eth2: VIA Rhine II at 0xe3142000, 00:0f:ea:XX:XX:XX, IRQ 11.
[4294671.448000] eth2: MII PHY found at address 1, status 0x786d advertising 05e1 Link 41e1.
[4294671.448000] forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.49.
[4294679.125000] e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex
[4294679.165000] e100: eth1: e100_watchdog: link up, 10Mbps, half-duplex
[4294679.201000] eth2: link up, 100Mbps, full-duplex, lpa 0x41E1

lspci with info for this card.

0000:00:0c.0 Ethernet controller: Intel Corp. 82541GI/PI Gigabit Ethernet Controller
        Subsystem: Intel Corp. PRO/1000 MT Desktop Adapter
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (63750ns min), Cache Line Size: 0x08 (32 bytes)
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at e3100000 (32-bit, non-prefetchable) [size=128K]
        Region 1: Memory at e3120000 (32-bit, non-prefetchable) [size=128K]
        Region 2: I/O ports at d400 [size=64]
        Expansion ROM at 20100000 [disabled] [size=128K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device.
                Command: DPERE- ERO+ RBC=0 OST=0
                Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-, DC=simple, DMMRBC=2, DMOST=0, DMCRS=0, RSCEM-
        Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
                Address: 0000000000000000  Data: 0000

ip -s -s link dev eth0
1: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0e:0c:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    648259157  1081155  0       0       0       115
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    393218241  933436   0       0       0       0
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0

My config is attached, more data on request.
I can play with parameters, but cannot test patches.


Regards

Ingo Oeser

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-31 09:12:01

From: Ingo Oeser <redacted>
Date: Fri, 31 Mar 2006 10:57:06 +0200
Hi Jesse,

More datapoints.

First of all, I don't see the problem, so this is an exclusion data point.

Machine is up 1 day, 19:02

I use 2.6.16 and I'm NBOT running at Gigabit speed.
If you're not running at gigabit speed, TSO is turned off
by the e1000 driver.

So that could by why you're not seeing the problem.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-31 09:12:45

From: "Boris B. Zhmurov" <redacted>
Date: Thu, 30 Mar 2006 17:29:09 +0400
Hello, Herbert Xu.

On 30.03.2006 14:12 you said the following:
quoted
On Thu, Mar 30, 2006 at 10:02:01AM +0000, Boris B. Zhmurov wrote:
quoted
[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch 

patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]

Herbert, is that patch already included in 2.6.16.1?

Not really.  It's just patch being silly (or too smart :)

Here it is again rediffed against 2.6.16.

Nope, with this patch the problem still exists. After 25 min. uptime 
with patched kernel 2.6.16.1, I have:
Can you please double and triple check that you're really running a
kernel with the fix from Herbert applied?  I make this mistake all
the time :-)

Thanks.



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-31 09:13:24

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Thu, 30 Mar 2006 20:52:45 +1100
Well I started from the beginning again, and found this.  This may be
the smoking gun that we're after :)

The xmit routine is lockless but checks last_tx_tso outside the locked
section.  So if a TSO packet wins a race against a non-TSO packet with
last_tx_tso == 0 then we'll have memory corruption.
Regardless of whether this fixes the bug being discussed, this
fix should go into the e1000 driver ASAP.

Good spotting Herbert.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-31 09:16:53

Ingo Oeser [off-list ref] wrote:
More datapoints.

First of all, I don't see the problem, so this is an exclusion data point.
Great.  I think so far all the configurations that have this problem
are

e1000 + SMP + TSO

Since your machine is not SMP but has the other two things it would
indicate that this is an SMP race.

If there are anyone else out there who do have this problem and are
either using something other than e1000, have disabled TSO, or are UP,
please speak up now.

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-31 09:35:40

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Fri, 31 Mar 2006 20:16:53 +1100
Ingo Oeser [off-list ref] wrote:
quoted
More datapoints.

First of all, I don't see the problem, so this is an exclusion data point.
Great.  I think so far all the configurations that have this problem
are

e1000 + SMP + TSO

Since your machine is not SMP but has the other two things it would
indicate that this is an SMP race.
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.

You'll see something like the following in your logs:

e1000: eth0: e1000_watchdog_task: 10/100 speed: disabling TSO


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-31 09:42:40

On Fri, Mar 31, 2006 at 01:35:40AM -0800, David S. Miller wrote:
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.
Indeed.  But I think that only happens on PCI Express and I don't think
Ingo is using PCI Express.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 10:16:38

Hello, David S. Miller.

On 31.03.2006 13:12 you said the following:
From: "Boris B. Zhmurov" <redacted>
Date: Thu, 30 Mar 2006 17:29:09 +0400

quoted
Hello, Herbert Xu.

On 30.03.2006 14:12 you said the following:

quoted
On Thu, Mar 30, 2006 at 10:02:01AM +0000, Boris B. Zhmurov wrote:

quoted
[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch 

patching file drivers/net/e1000/e1000_main.c
Reversed (or previously applied) patch detected!  Assume -R? [n]

Herbert, is that patch already included in 2.6.16.1?

Not really.  It's just patch being silly (or too smart :)

Here it is again rediffed against 2.6.16.

Nope, with this patch the problem still exists. After 25 min. uptime 
with patched kernel 2.6.16.1, I have:

Can you please double and triple check that you're really running a
kernel with the fix from Herbert applied?  I make this mistake all
the time :-)

Thanks.

[zhmurov@builds redhat]$ rpmbuild --sign --rebuild --target=i686 
/usr/src/redhat/SRPMS/kernel-2.6.16-1.14.bbel4.src.rpm
Enter pass phrase:
Pass phrase is good.
..... SKIP.....
+ echo 'Patch #295 
(linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch):'
Patch #295 
(linux-2.6.16-e1000-try-to-fix-assertion_sk_forward_alloc_failed_by_Herbert_Xu.patch):
+ patch -p1 -s
...... SKIP .....


And xdelta tells, that e1000.ko was modified :)


P.S.
there is src.rpm of my kernel for RHEL4 and my RHEL4-clone:
ftp://builds.kernelpanic.ru/pub/linux/BBEL/updates/kernel_of_the_day/4/SRPMS/

and yum'able repo of 2.6.16 kernels _with_ Herbert's patch :), if 
anybody interested:
ftp://builds.kernelpanic.ru/pub/linux/BBEL/updates/kernel_of_the_day/4/


-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-31 10:39:56

On Fri, Mar 31, 2006 at 02:16:38PM +0400, Boris B. Zhmurov wrote:
And xdelta tells, that e1000.ko was modified :)
Thanks for checking again.

Anyway, it didn't take long to find another bug in the same area.
I'm afraid this driver does seem to be full of them :)

It sets last_tx_tso in between computing the number of descriptors and
calling e1000_tx_map.  This is bad because e1000_tx_map gets the wrong
value for last_tx_tso and therefore may corrupt memory for every TSO
packet when the ring is almost full.

This bug exists on UP as well as SMP.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Please try this in conjunction with the previous patch.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-03-31 10:45:44

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Fri, 31 Mar 2006 21:39:56 +1100
Anyway, it didn't take long to find another bug in the same area.
I'm afraid this driver does seem to be full of them :)
Indeed.

Thanks for picking through this some more Herbert.  I hope we got it
this time.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 10:51:15

Hello, David S. Miller.

On 31.03.2006 14:45 you said the following:
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Fri, 31 Mar 2006 21:39:56 +1100

quoted
Anyway, it didn't take long to find another bug in the same area.
I'm afraid this driver does seem to be full of them :)

Indeed.

Thanks for picking through this some more Herbert.  I hope we got it
this time.

Recompiling the kernel. I need about 2 hours to get the answer...

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Mark Nipper <hidden>
Date: 2006-03-31 10:51:36

On 31 Mar 2006, David S. Miller wrote:
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.

You'll see something like the following in your logs:

e1000: eth0: e1000_watchdog_task: 10/100 speed: disabling TSO
        Um...
---
$ uname -a
Linux king 2.6.16.1 #1 SMP Thu Mar 30 06:11:33 CST 2006 i686 GNU/Linux
$ dmesg | grep -i task
e1000: eth1: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex
$ ethtool -k eth1
Offload parameters for eth1:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
---

        I know for a fact the link is 100Mbps (other than the
output from the driver itself) and I have been bitten by the
assertion.

        I've been running the first patch for about the last 24
hours and have not seen any assertions yet (although they don't
occur that frequently on this server).  I'll be adding the
second, most recent patch in a bit and rebooting again.
Hopefully between the two of them, that will have fixed the
problem.

-- 
Mark Nipper                                                e-contacts:
832 Tanglewood Drive                                nipsy@bitgnome.net
Bryan, Texas 77802-4013                     http://nipsy.bitgnome.net/
(979)575-3193                      AIM/Yahoo: texasnipsy ICQ: 66971617

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GG/IT d- s++:+ a- C++$ UBL++++$ P--->+++ L+++$ !E---
W++(--) N+ o K++ w(---) O++ M V(--) PS+++(+) PE(--)
Y+ PGP t+ 5 X R tv b+++@ DI+(++) D+ G e h r++ y+(**)
------END GEEK CODE BLOCK------

---begin random quote of the moment---
And if I close my mind in fear, please pry it open.
----end random quote of the moment----


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-31 10:52:49

Boris B. Zhmurov [off-list ref] wrote:
Recompiling the kernel. I need about 2 hours to get the answer...
BTW, if you kept the built tree it is possible to apply the patch and
then do a make which should compile just the e1000 driver.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 11:02:33

Hello, Herbert Xu.

On 31.03.2006 14:52 you said the following:
BTW, if you kept the built tree it is possible to apply the patch and
then do a make which should compile just the e1000 driver.

Cheers,
Thank's for the tip, actually I knew that :) First of, I've already 
applied some other new patches from bk-commits-head. Not for the e1000 
driver. And second - I didn't keep the tree, rpmbuild cleaned it up :) 
That's why I'm recompiling entire kernel.

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Andi Kleen <hidden>
Date: 2006-03-31 11:15:27

On Friday 31 March 2006 14:07, Boris B. Zhmurov wrote:
David, Herbert - FYI. One of my colleague confirmed, that idea "bug
reproducible only if there is more then one e1000 adapter onboard" is
true. He has a 3 servers with double intel pro 1000 adapters, and that
bug occurs. Also, he has 4 servers with double intel pro 1000 adapters
onboard, but _only one_ of them is up. And there is no such messages in
dmesg at all! Inetresting...
At least all our systems with troubles seem to have more than one e1000
though. Usually only one is active though.

We're still not 100% it is actually the E1000, it is a bit hard to reproduce 
the memory corruption :/

-Andi


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: JaniD++ <hidden>
Date: 2006-03-31 12:02:04

----- Original Message ----- 
From: "Herbert Xu" <herbert@gondor.apana.org.au>
To: "David S. Miller" <davem@davemloft.net>
Cc: <redacted>; <redacted>; <redacted>;
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref];
[off-list ref]
Sent: Friday, March 31, 2006 11:42 AM
Subject: Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

On Fri, Mar 31, 2006 at 01:35:40AM -0800, David S. Miller wrote:
quoted
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.
Indeed.  But I think that only happens on PCI Express and I don't think
Ingo is using PCI Express.
No, my card is "64-bit PCI-X Rev. 1.0 master interface".  - from the
datasheet
Number : "82546GB"
This is not PCI Express issue!

Cheers,
Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

 _____________ NOD32 1.584 (20031220) Információ _____________

Az üzenetet a NOD32 Antivirus System megvizsgálta.
http://www.nod32.hu


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 12:07:03

Hello, Herbert Xu.

On 31.03.2006 14:39 you said the following:
On Fri, Mar 31, 2006 at 02:16:38PM +0400, Boris B. Zhmurov wrote:
quoted
And xdelta tells, that e1000.ko was modified :)

Thanks for checking again.

Anyway, it didn't take long to find another bug in the same area.
I'm afraid this driver does seem to be full of them :)

It sets last_tx_tso in between computing the number of descriptors and
calling e1000_tx_map.  This is bad because e1000_tx_map gets the wrong
value for last_tx_tso and therefore may corrupt memory for every TSO
packet when the ring is almost full.

This bug exists on UP as well as SMP.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Please try this in conjunction with the previous patch.

Cheers,

David, Herbert - FYI. One of my colleague confirmed, that idea "bug 
reproducible only if there is more then one e1000 adapter onboard" is 
true. He has a 3 servers with double intel pro 1000 adapters, and that 
bug occurs. Also, he has 4 servers with double intel pro 1000 adapters 
onboard, but _only one_ of them is up. And there is no such messages in 
dmesg at all! Inetresting...

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Mark Nipper <hidden>
Date: 2006-03-31 12:10:08

On 31 Mar 2006, Boris B. Zhmurov wrote:
David, Herbert - FYI. One of my colleague confirmed, that idea "bug 
reproducible only if there is more then one e1000 adapter onboard" is 
true. He has a 3 servers with double intel pro 1000 adapters, and that 
bug occurs. Also, he has 4 servers with double intel pro 1000 adapters 
onboard, but _only one_ of them is up. And there is no such messages in 
dmesg at all! Inetresting...
        This unfortunately is not the case.  I have two e1000
interfaces but only eth1 is up and in use.  And I still had
assertions.  Hopefully the two already discovered problems will
fix things up for everyone though.

-- 
Mark Nipper                                                e-contacts:
832 Tanglewood Drive                                nipsy@bitgnome.net
Bryan, Texas 77802-4013                     http://nipsy.bitgnome.net/
(979)575-3193                      AIM/Yahoo: texasnipsy ICQ: 66971617

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GG/IT d- s++:+ a- C++$ UBL++++$ P--->+++ L+++$ !E---
W++(--) N+ o K++ w(---) O++ M V(--) PS+++(+) PE(--)
Y+ PGP t+ 5 X R tv b+++@ DI+(++) D+ G e h r++ y+(**)
------END GEEK CODE BLOCK------

---begin random quote of the moment---
Generalizations are usually flawed by exceptions.
 -- seen at http://wunderland.com/
----end random quote of the moment----


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Ingo Oeser <hidden>
Date: 2006-03-31 12:18:46

Hi,

Herbert Xu wrote:
On Fri, Mar 31, 2006 at 01:35:40AM -0800, David S. Miller wrote:
quoted
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.
dmesg|grep eth0
[4294671.426000] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[4294679.125000] e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex


# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on

So this theory doesn't seem to hold :-(
Indeed.  But I think that only happens on PCI Express and I don't think
Ingo is using PCI Express.
Right. PCI-Express is not available in this machine.

Maybe the traffic is not enough to trigger it. External connect is just a 6MBit DSL.


Regards

Ingo Oeser


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 12:23:02

Hello, Mark Nipper.

On 31.03.2006 16:10 you said the following:
        This unfortunately is not the case.  I have two e1000
interfaces but only eth1 is up and in use.  And I still had
assertions.

Can you switch to eth0? There is no problem with _eth0_, my friend says.


 > And I still had
 > assertions.


I'm already using kernel with second Herbert's patch. We'll see...


-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2006-03-31 12:35:14

On Fri, Mar 31, 2006 at 04:23:02PM +0400, Boris B. Zhmurov wrote:
I'm already using kernel with second Herbert's patch. We'll see...
If it still fails, here is a debugging patch which should tell us
whether we need to look elsewhere.

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 12:36:36

Hello, Herbert Xu.

On 31.03.2006 16:35 you said the following:
On Fri, Mar 31, 2006 at 04:23:02PM +0400, Boris B. Zhmurov wrote:
quoted
I'm already using kernel with second Herbert's patch. We'll see...

If it still fails

Not yet. But give it a time :)

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: JaniD++ <hidden>
Date: 2006-03-31 12:45:24

----- Original Message ----- 
From: "Boris B. Zhmurov" <redacted>
To: "Herbert Xu" <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>; <redacted>;
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref]; [off-list ref];
[off-list ref]; [off-list ref];
[off-list ref]; "Andi Kleen" [off-list ref]; "Jeff
Garzik" [off-list ref]
Sent: Friday, March 31, 2006 2:07 PM
Subject: Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

Hello, Herbert Xu.

On 31.03.2006 14:39 you said the following:
quoted
On Fri, Mar 31, 2006 at 02:16:38PM +0400, Boris B. Zhmurov wrote:
quoted
And xdelta tells, that e1000.ko was modified :)

Thanks for checking again.

Anyway, it didn't take long to find another bug in the same area.
I'm afraid this driver does seem to be full of them :)

It sets last_tx_tso in between computing the number of descriptors and
calling e1000_tx_map.  This is bad because e1000_tx_map gets the wrong
value for last_tx_tso and therefore may corrupt memory for every TSO
packet when the ring is almost full.

This bug exists on UP as well as SMP.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Please try this in conjunction with the previous patch.

Cheers,

David, Herbert - FYI. One of my colleague confirmed, that idea "bug
reproducible only if there is more then one e1000 adapter onboard" is
true. He has a 3 servers with double intel pro 1000 adapters, and that
bug occurs. Also, he has 4 servers with double intel pro 1000 adapters
onboard, but _only one_ of them is up. And there is no such messages in
dmesg at all! Inetresting...
This is not an unique thing!

Only _one_ of my 2 equal NIC get this message

NETDEV WATCHDOG: eth0: transmit timed out
e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex

with the old 2.6.15.* e1000 driver!

Not the all e1000 chips ar really equal with the same P/N Number!

This can be hardware based problem, and needs workaround?

Cheers,


-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"

 _____________ NOD32 1.584 (20031220) Információ _____________

Az üzenetet a NOD32 Antivirus System megvizsgálta.
http://www.nod32.hu


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 12:46:34

Hello, Boris B. Zhmurov.

On 31.03.2006 16:23 you said the following:
Hello, Mark Nipper.

On 31.03.2006 16:10 you said the following:
quoted
        This unfortunately is not the case.  I have two e1000
interfaces but only eth1 is up and in use.  And I still had
assertions.


Can you switch to eth0? There is no problem with _eth0_, my friend says.
P.S. I have another high-load server as gateway. Same distro, same 
kernels, but less memory (512Mb lowmem). eth0 up - e100, eth1 up - 
e1000. No errors at all! It kinda looks like assertions happens on 
systems, where the _only_ interface _eth1_ e1000 is up.

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Christiaan den Besten <hidden>
Date: 2006-03-31 13:12:30

Hi !
P.S. I have another high-load server as gateway. Same distro, same kernels, but less memory (512Mb lowmem). eth0 up - e100, eth1 
up - e1000. No errors at all! It kinda looks like assertions happens on systems, where the _only_ interface _eth1_ e1000 is up.
No, we have a couple gateway's asserting.

2x : Usenet feeder : Onboard eth0 and eth1 "Ethernet controller: Intel Corporation 82546GB Gigabit Ethernet Controller (rev 03)" -> 
asserts (lot's of disk activity (writes) as well by the way ... ). SMP, 4Gb RAM. (2.6.14-mm2)

4x : Usenet cache : PCI-X eth0 "Ethernet controller: Intel Corporation 82545GM Gigabit Ethernet Controller (rev 04)" -> no asserts 
(no disk activity). Has 2 extra onboard e1000's, but are not used (Ethernet controller: Intel Corporation 82541GI/PI Gigabit 
Ethernet Controller). SMP, 2Gb RAM (2.6.15.1)

bye,
Chris



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 13:30:30

Hello, Christiaan den Besten.

On 31.03.2006 17:12 you said the following:
Hi !
quoted
P.S. I have another high-load server as gateway. Same distro, same 
kernels, but less memory (512Mb lowmem). eth0 up - e100, eth1 up - 
e1000. No errors at all! It kinda looks like assertions happens on 
systems, where the _only_ interface _eth1_ e1000 is up.

No, we have a couple gateway's asserting.

Yes, my mistake :( My server asserting with eth0 and eth1 is up both...


Herbert, with your second patch still no luck. After an hour of uptime I 
have assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (283) 
again...

Trying your debug patch.


-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 15:08:26

Hello, Boris B. Zhmurov.

On 31.03.2006 17:30 you said the following:
Herbert, with your second patch still no luck. After an hour of uptime I 
have assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (283) 
again...

Trying your debug patch.

Hmm... with lastest debug patch I can't see any of debug info:

e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex
e1000: eth1: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex
e1000: eth1: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (283)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c (150)

Is it normal?

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 15:19:09

Hello, Boris B. Zhmurov.

On 31.03.2006 19:08 you said the following:
Hmm... with lastest debug patch I can't see any of debug info:
But wait a minute. Two days ago, without Herbert's patches, assertion's 
errors was like this:

Mar 29 20:03:23 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/core/stream.c (279)
Mar 29 20:03:23 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/ipv4/af_inet.c (148)


and after appling patches, errors looks like this:

Mar 31 18:21:06 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/core/stream.c (283)
Mar 31 18:21:06 msk4 kernel: KERNEL: assertion (!sk->sk_forward_alloc) 
failed at net/ipv4/af_inet.c (150)


stream.c (279) -> stream.c (283)
af_inet.c (148) -> af_inet.c (150)


Does it really matters?

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Mark Nipper <hidden>
Date: 2006-03-31 16:01:22

On 31 Mar 2006, Boris B. Zhmurov wrote:
stream.c (279) -> stream.c (283)
af_inet.c (148) -> af_inet.c (150)
        That will be because the patches changed the line numbers
in the source I believe.  Nothing helpful unfortunately.

-- 
Mark Nipper                                                e-contacts:
832 Tanglewood Drive                                nipsy@bitgnome.net
Bryan, Texas 77802-4013                     http://nipsy.bitgnome.net/
(979)575-3193                      AIM/Yahoo: texasnipsy ICQ: 66971617

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GG/IT d- s++:+ a- C++$ UBL++++$ P--->+++ L+++$ !E---
W++(--) N+ o K++ w(---) O++ M V(--) PS+++(+) PE(--)
Y+ PGP t+ 5 X R tv b+++@ DI+(++) D+ G e h r++ y+(**)
------END GEEK CODE BLOCK------

---begin random quote of the moment---
"Whiskey-Tango-Foxtrot, over."
 -- anonymous
----end random quote of the moment----


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-03-31 17:19:59

Hello, Mark Nipper.

On 31.03.2006 20:01 you said the following:
On 31 Mar 2006, Boris B. Zhmurov wrote:
quoted
stream.c (279) -> stream.c (283)
af_inet.c (148) -> af_inet.c (150)

        That will be because the patches changed the line numbers
in the source I believe.  Nothing helpful unfortunately.

Ok. Anyway, as assertion is 100% repeatable on my server, I'm ready to 
try any patches to get rid of this.

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-03-31 17:22:32


On Fri, 31 Mar 2006, Ingo Oeser wrote:
Hi,

Herbert Xu wrote:
quoted
On Fri, Mar 31, 2006 at 01:35:40AM -0800, David S. Miller wrote:
quoted
He does not have TSO enabled, e1000 disables TSO when on a link speed
slower than gigabit.
dmesg|grep eth0
[4294671.426000] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[4294679.125000] e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex


# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on

So this theory doesn't seem to hold :-(
quoted
Indeed.  But I think that only happens on PCI Express and I don't think
Ingo is using PCI Express.
Right. PCI-Express is not available in this machine.
First, thanks for all the responses.

6.3.9-k4 in 2.6.16 doesn't turn off TSO for 10/100, 7.0.33 in 2.6.17-pre 
does, I think that will help alleviate some of the confusion.

I've been working hard to try to reproduce here, no luck so far.

Herbert's fixes are interesting and appreciated.  I'm going to try to 
generate tests today that will show that the bugs he's mentioned could 
occur.

Jesse



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Mark Nipper <hidden>
Date: 2006-04-03 21:01:23

On 31 Mar 2006, Herbert Xu wrote:
If it still fails, here is a debugging patch which should tell us
whether we need to look elsewhere.
        After three days and some hours, I finally saw another
event:
---
Apr  3 13:40:53 king kernel: KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (283)
Apr  3 13:40:53 king kernel: KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c (150)
---

but as with the other person who reported recently, I also did
not receive the extra debugging output from Herbert's latest
patch.

        Anyway, this happened with 2.6.16.1 and Herbert's three
patches.  Let me know if you want me to try anything different.

        I guess all of this will just go away with the latest
driver version since those of us running at 100Mbps will no
longer have TSO enabled?

-- 
Mark Nipper                                                e-contacts:
832 Tanglewood Drive                                nipsy@bitgnome.net
Bryan, Texas 77802-4013                     http://nipsy.bitgnome.net/
(979)575-3193                      AIM/Yahoo: texasnipsy ICQ: 66971617

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GG/IT d- s++:+ a- C++$ UBL++++$ P--->+++ L+++$ !E---
W++(--) N+ o K++ w(---) O++ M V(--) PS+++(+) PE(--)
Y+ PGP t+ 5 X R tv b+++@ DI+(++) D+ G e h r++ y+(**)
------END GEEK CODE BLOCK------

---begin random quote of the moment---
He hoped and prayed that there wasn't an afterlife. Then he
realized there was a contradiction involved here and merely
hoped that there wasn't an afterlife.
 -- Douglas Adams
----end random quote of the moment----


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Phil Oester <hidden>
Date: 2006-04-03 21:39:07

On Mon, Apr 03, 2006 at 04:01:23PM -0500, Mark Nipper wrote:
        After three days and some hours, I finally saw another
event:
Ack, same here.  Looked hopeful, but finally saw the error today.

Phil


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-04-03 22:00:31

Hello, Phil Oester.

On 04.04.2006 01:39 you said the following:
On Mon, Apr 03, 2006 at 04:01:23PM -0500, Mark Nipper wrote:
quoted
       After three days and some hours, I finally saw another
event:

Ack, same here.  Looked hopeful, but finally saw the error today.

Phil

[root@msk4 ~]# dmesg |grep assertion |wc -l
176

[root@msk4 ~]# uptime
  02:00:01 up 3 days,  7:31,  2 users,  load average: 1.32, 0.59, 0.41

-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-05 22:05:28


On Mon, 3 Apr 2006, Boris B. Zhmurov wrote:
Hello, Phil Oester.

On 04.04.2006 01:39 you said the following:
quoted
On Mon, Apr 03, 2006 at 04:01:23PM -0500, Mark Nipper wrote:
quoted
       After three days and some hours, I finally saw another
event:

Ack, same here.  Looked hopeful, but finally saw the error today.

Phil

[root@msk4 ~]# dmesg |grep assertion |wc -l
176

[root@msk4 ~]# uptime
  02:00:01 up 3 days,  7:31,  2 users,  load average: 1.32, 0.59, 0.41
Some earlier had proposed that this problem appeared in 2.6.12, which was 
the introduction of the 6.X series e1000 driver.

If someone would like to, can they try the 5.6.10.1 driver from the 
2.6.11.X kernel?

I'd like it if you can stick with your current kernel, and if you have 
trouble building the driver, go ahead and try the 5.6.10.1 driver from 
http://prdownloads.sf.net/e1000

I'll also send a patch today to back-rev the xmit routine to the 5.6.10.1 
state.

Jesse


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-06 00:42:09

On Wed, 5 Apr 2006, Jesse Brandeburg wrote:
I'll also send a patch today to back-rev the xmit routine to the 5.6.10.1 
state.
I'm in a bit of a hurry, but I wanted to send these debug patches out.  
Forgive me if my mailer decides to munge them.
I'd suggest trying the first one and then both together.
The first fixes up the tso function only to be like 5.6.10.1-k2.
The second builds on the first, and incorporates more of the tx changes.
  
I built and tested the driver with patches on 2.6.16, with pci-x adapters.  
I removed some workarounds for PCIe adapters, but I dont think anyone 
having this problem has a PCIe adapter anyway.  I saw no TX hangs and ran 
some bi-directional tests, so i think the driver should work okay.  Just 
warning you I did minimal testing.

*********************
e1000: transmit the old fashioned way

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes only the e1000_tso function

Signed-off-by: Jesse Brandeburg <redacted>

---

 drivers/net/e1000/e1000_main.c |   37 ++++++-------------------------------
 1 files changed, 6 insertions(+), 31 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
old mode 100644
new mode 100755
index e3d3778..2b8fb87
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2519,57 +2519,34 @@ e1000_tso(struct e1000_adapter *adapter,
 {
 #ifdef NETIF_F_TSO
 	struct e1000_context_desc *context_desc;
-	struct e1000_buffer *buffer_info;
 	unsigned int i;
 	uint32_t cmd_length = 0;
 	uint16_t ipcse = 0, tucse, mss;
 	uint8_t ipcss, ipcso, tucss, tucso, hdr_len;
-	int err;
 
 	if (skb_shinfo(skb)->tso_size) {
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (err)
-				return err;
-		}
-
 		hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
 		mss = skb_shinfo(skb)->tso_size;
-		if (skb->protocol == ntohs(ETH_P_IP)) {
-			skb->nh.iph->tot_len = 0;
-			skb->nh.iph->check = 0;
-			skb->h.th->check =
-				~csum_tcpudp_magic(skb->nh.iph->saddr,
+		skb->nh.iph->tot_len = 0;
+		skb->nh.iph->check = 0;
+		skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr,
 						   skb->nh.iph->daddr,
 						   0,
 						   IPPROTO_TCP,
 						   0);
-			cmd_length = E1000_TXD_CMD_IP;
-			ipcse = skb->h.raw - skb->data - 1;
-#ifdef NETIF_F_TSO_IPV6
-		} else if (skb->protocol == ntohs(ETH_P_IPV6)) {
-			skb->nh.ipv6h->payload_len = 0;
-			skb->h.th->check =
-				~csum_ipv6_magic(&skb->nh.ipv6h->saddr,
-						 &skb->nh.ipv6h->daddr,
-						 0,
-						 IPPROTO_TCP,
-						 0);
-			ipcse = 0;
-#endif
-		}
 		ipcss = skb->nh.raw - skb->data;
 		ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data;
+		ipcse = skb->h.raw - skb->data - 1;
 		tucss = skb->h.raw - skb->data;
 		tucso = (void *)&(skb->h.th->check) - (void *)skb->data;
 		tucse = 0;
 
 		cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE |
-			       E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));
+			       E1000_TXD_CMD_IP | E1000_TXD_CMD_TCP |
+			       (skb->len - (hdr_len)));
 
 		i = tx_ring->next_to_use;
 		context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
-		buffer_info = &tx_ring->buffer_info[i];
 
 		context_desc->lower_setup.ip_fields.ipcss  = ipcss;
 		context_desc->lower_setup.ip_fields.ipcso  = ipcso;
@@ -2581,8 +2558,6 @@ e1000_tso(struct e1000_adapter *adapter,
 		context_desc->tcp_seg_setup.fields.hdr_len = hdr_len;
 		context_desc->cmd_and_length = cpu_to_le32(cmd_length);
 
-		buffer_info->time_stamp = jiffies;
-
 		if (++i == tx_ring->count) i = 0;
 		tx_ring->next_to_use = i;
 


*************************************


e1000: implement old xmit_frame

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes the e1000_xmit_frame function, and some ancilliaries

Signed-off-by: Jesse Brandeburg <redacted>

---

 drivers/net/e1000/e1000_main.c |   90 ++--------------------------------------
 1 files changed, 4 insertions(+), 86 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 2b8fb87..18790b6 100755
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2725,10 +2725,7 @@ e1000_tx_queue(struct e1000_adapter *ada
 	if (likely(tx_flags & E1000_TX_FLAGS_TSO)) {
 		txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D |
 		             E1000_TXD_CMD_TSE;
-		txd_upper |= E1000_TXD_POPTS_TXSM << 8;
-
-		if (likely(tx_flags & E1000_TX_FLAGS_IPV4))
-			txd_upper |= E1000_TXD_POPTS_IXSM << 8;
+		txd_upper |= (E1000_TXD_POPTS_IXSM | E1000_TXD_POPTS_TXSM) << 8;
 	}
 
 	if (likely(tx_flags & E1000_TX_FLAGS_CSUM)) {
@@ -2803,41 +2800,6 @@ no_fifo_stall_required:
 	return 0;
 }
 
-#define MINIMUM_DHCP_PACKET_SIZE 282
-static inline int
-e1000_transfer_dhcp_info(struct e1000_adapter *adapter, struct sk_buff *skb)
-{
-	struct e1000_hw *hw =  &adapter->hw;
-	uint16_t length, offset;
-	if (vlan_tx_tag_present(skb)) {
-		if (!((vlan_tx_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) &&
-			( adapter->hw.mng_cookie.status &
-			  E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT)) )
-			return 0;
-	}
-	if ((skb->len > MINIMUM_DHCP_PACKET_SIZE) && (!skb->protocol)) {
-		struct ethhdr *eth = (struct ethhdr *) skb->data;
-		if ((htons(ETH_P_IP) == eth->h_proto)) {
-			const struct iphdr *ip =
-				(struct iphdr *)((uint8_t *)skb->data+14);
-			if (IPPROTO_UDP == ip->protocol) {
-				struct udphdr *udp =
-					(struct udphdr *)((uint8_t *)ip +
-						(ip->ihl << 2));
-				if (ntohs(udp->dest) == 67) {
-					offset = (uint8_t *)udp + 8 - skb->data;
-					length = skb->len - offset;
-
-					return e1000_mng_write_dhcp_info(hw,
-							(uint8_t *)udp + 8,
-							length);
-				}
-			}
-		}
-	}
-	return 0;
-}
-
 #define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1 )
 static int
 e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
@@ -2852,7 +2814,6 @@ e1000_xmit_frame(struct sk_buff *skb, st
 	unsigned int nr_frags = 0;
 	unsigned int mss = 0;
 	int count = 0;
- 	int tso;
 	unsigned int f;
 	len -= skb->data_len;
 
@@ -2876,44 +2837,18 @@ e1000_xmit_frame(struct sk_buff *skb, st
 	 * overrun the FIFO, adjust the max buffer len if mss
 	 * drops. */
 	if (mss) {
-		uint8_t hdr_len;
 		max_per_txd = min(mss << 2, max_per_txd);
 		max_txd_pwr = fls(max_per_txd) - 1;
-
-	/* TSO Workaround for 82571/2 Controllers -- if skb->data
-	 * points to just header, pull a few bytes of payload from
-	 * frags into skb->data */
-		hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
-		if (skb->data_len && (hdr_len == (skb->len - skb->data_len)) &&
-			(adapter->hw.mac_type == e1000_82571 ||
-			adapter->hw.mac_type == e1000_82572)) {
-			unsigned int pull_size;
-			pull_size = min((unsigned int)4, skb->data_len);
-			if (!__pskb_pull_tail(skb, pull_size)) {
-				printk(KERN_ERR "__pskb_pull_tail failed.\n");
-				dev_kfree_skb_any(skb);
-				return NETDEV_TX_OK;
-			}
-			len = skb->len - skb->data_len;
-		}
 	}
 
 	/* reserve a descriptor for the offload context */
 	if ((mss) || (skb->ip_summed == CHECKSUM_HW))
 		count++;
-	count++;
+	count++;	/* for sentinel desc */
 #else
 	if (skb->ip_summed == CHECKSUM_HW)
 		count++;
 #endif
-
-#ifdef NETIF_F_TSO
-	/* Controller Erratum workaround */
-	if (!skb->data_len && tx_ring->last_tx_tso &&
-		!skb_shinfo(skb)->tso_size)
-		count++;
-#endif
-
 	count += TXD_USE_COUNT(len, max_txd_pwr);
 
 	if (adapter->pcix_82544)
@@ -2933,9 +2868,6 @@ e1000_xmit_frame(struct sk_buff *skb, st
 	if (adapter->pcix_82544)
 		count += nr_frags;
 
-	if (adapter->hw.tx_pkt_filtering && (adapter->hw.mac_type == e1000_82573) )
-		e1000_transfer_dhcp_info(adapter, skb);
-
 	local_irq_save(flags);
 	if (!spin_trylock(&tx_ring->tx_lock)) {
 		/* Collision - tell upper layer to requeue */
@@ -2967,25 +2899,11 @@ e1000_xmit_frame(struct sk_buff *skb, st
 
 	first = tx_ring->next_to_use;
 
-	tso = e1000_tso(adapter, tx_ring, skb);
-	if (tso < 0) {
-		dev_kfree_skb_any(skb);
-		spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
-		return NETDEV_TX_OK;
-	}
-
-	if (likely(tso)) {
-		tx_ring->last_tx_tso = 1;
+	if(likely(e1000_tso(adapter, tx_ring, skb)))
 		tx_flags |= E1000_TX_FLAGS_TSO;
-	} else if (likely(e1000_tx_csum(adapter, tx_ring, skb)))
+	else if(likely(e1000_tx_csum(adapter, tx_ring, skb)))
 		tx_flags |= E1000_TX_FLAGS_CSUM;
 
-	/* Old method was to assume IPv4 packet by default if TSO was enabled.
-	 * 82571 hardware supports TSO capabilities for IPv6 as well...
-	 * no longer assume, we must. */
-	if (likely(skb->protocol == ntohs(ETH_P_IP)))
-		tx_flags |= E1000_TX_FLAGS_IPV4;
-
 	e1000_tx_queue(adapter, tx_ring, tx_flags,
 	               e1000_tx_map(adapter, tx_ring, skb, first,
 	                            max_per_txd, nr_frags, mss));


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Boris B. Zhmurov <hidden>
Date: 2006-04-06 11:49:42

Hello, Jesse Brandeburg.

On 06.04.2006 04:42 you said the following:
I built and tested the driver with patches on 2.6.16, with pci-x adapters.  
I removed some workarounds for PCIe adapters, but I dont think anyone 
having this problem has a PCIe adapter anyway.  I saw no TX hangs and ran 
some bi-directional tests, so i think the driver should work okay.  Just 
warning you I did minimal testing.

*********************
e1000: transmit the old fashioned way

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes only the e1000_tso function
With this one still having:

TCP: Treason uncloaked! Peer 80.72.16.78:11460/80 shrinks window 
2223569515:2223569516. Repaired.
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c (283)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c (150)


e1000: implement old xmit_frame

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes the e1000_xmit_frame function, and some ancilliaries

Signed-off-by: Jesse Brandeburg <redacted>


Can't apply this one:

[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-implement_old_xmit_frame.patch
patching file drivers/net/e1000/e1000_main.c
Hunk #1 succeeded at 2620 (offset -105 lines).
Hunk #2 FAILED at 2695.
Hunk #4 FAILED at 2837.
Hunk #5 FAILED at 2868.
Hunk #6 FAILED at 2899.
4 out of 6 hunks FAILED -- saving rejects to file 
drivers/net/e1000/e1000_main.c.rej



-- 
Boris B. Zhmurov
mailto: bb@kernelpanic.ru
"wget http://kernelpanic.ru/bb_public_key.pgp -O - | gpg --import"



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-14 20:28:10

Boris B. Zhmurov wrote:
Hello, Jesse Brandeburg.

On 06.04.2006 04:42 you said the following:
quoted
I built and tested the driver with patches on 2.6.16, with pci-x 
adapters.  I removed some workarounds for PCIe adapters, but I dont 
think anyone having this problem has a PCIe adapter anyway.  I saw no 
TX hangs and ran some bi-directional tests, so i think the driver 
should work okay.  Just warning you I did minimal testing.

*********************
e1000: transmit the old fashioned way

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the 
issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes only the e1000_tso function
With this one still having:

TCP: Treason uncloaked! Peer 80.72.16.78:11460/80 shrinks window 
2223569515:2223569516. Repaired.
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/core/stream.c 
(283)
KERNEL: assertion (!sk->sk_forward_alloc) failed at net/ipv4/af_inet.c 
(150)
This is a very important result.  It shows that the changes to the 
driver to call pskb_expand_head for TSO operations are not the cause of 
this problem.

We also have some new data from the last couple of days.  First, I think 
that this problem is likely not just E1000's fault.  We have multiple 
reports both in bugzilla.kernel.org and from a distro that show this 
problem has occurred on (at least) tg3 driven adapters as well as e1000.

I've been able to reliably reproduce this issue in house (finally) 
thanks to one of our testers.  The test is using the tbench application 
from the dbench package at samba.org.

on the server, start tbench_srv
on the machine you're trying to repro the issue on, start tbench 500 
<server ip>, on another client start tbench 50 <server ip>
I've seen sk_forward_alloc assertions on both server and client both 
running 2.6.16.  We're trying to figure out where there might be a stale 
pointer to an sk that accesses the data after free.  something seems to 
write ff ff ff ff 00 00 00 00 to memory after it is freed maybe?

It does seem that the load (the 500 threads) is important to this 
failure.  I've also seen a report that a memory poisoning kernel caught 
the failure.

Any investigation hints for me?
quoted
e1000: implement old xmit_frame

It seems back in the day of 2.6.11, there were no sk_forward_alloc
asserions.  Forward port that transmit code to see if it fixes the 
issues
in today's kernel.  Unfortunately it doesn't have all the bug fixes that
the current code has, but if we get transmit timeouts we can add in
workarounds appropriately.

this changes the e1000_xmit_frame function, and some ancilliaries

Signed-off-by: Jesse Brandeburg <redacted>


Can't apply this one:

[zhmurov@builds linux-2.6.16]$ patch -p1 < 
../../../SOURCES/linux-2.6.16-e1000-implement_old_xmit_frame.patch
patching file drivers/net/e1000/e1000_main.c
Hunk #1 succeeded at 2620 (offset -105 lines).
Hunk #2 FAILED at 2695.
Hunk #4 FAILED at 2837.
Hunk #5 FAILED at 2868.
Hunk #6 FAILED at 2899.
4 out of 6 hunks FAILED -- saving rejects to file 
drivers/net/e1000/e1000_main.c.rej
well that seems kind of lame, but I think we got the data that we needed 
from the first patch.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-04-14 21:10:56

From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 13:28:10 -0700
We also have some new data from the last couple of days.  First, I think 
that this problem is likely not just E1000's fault.  We have multiple 
reports both in bugzilla.kernel.org and from a distro that show this 
problem has occurred on (at least) tg3 driven adapters as well as e1000.
That's interesting since tg3 does not enable TSO by default for any
chip until very recent versions of the tg3 driver.  And even with
those recent tg3 drivers which will enable TSO by default, it is only
done for a very specific selection of chip revisions.

Where are these reports that precisely implicate tg3?

Note that there were legitimate TSO retransmit bugs in the 2.6.14
timeframe that triggered those messages and did get fixed.  And yes
some of those reports were with tg3.

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-14 22:35:22


On Fri, 14 Apr 2006, David S. Miller wrote:
From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 13:28:10 -0700
quoted
We also have some new data from the last couple of days.  First, I think 
that this problem is likely not just E1000's fault.  We have multiple 
reports both in bugzilla.kernel.org and from a distro that show this 
problem has occurred on (at least) tg3 driven adapters as well as e1000.
That's interesting since tg3 does not enable TSO by default for any
chip until very recent versions of the tg3 driver.  And even with
those recent tg3 drivers which will enable TSO by default, it is only
done for a very specific selection of chip revisions.

Where are these reports that precisely implicate tg3?
well there was one of them here, but the tg3 bit may actually be due to 
the 2.6.14 problems.

http://bugzilla.kernel.org/show_bug.cgi?id=6279

the other one is buried at a distro's bugzilla, so I can't post it.
Note that there were legitimate TSO retransmit bugs in the 2.6.14
timeframe that triggered those messages and did get fixed.  And yes
some of those reports were with tg3.
I've removed the call to pskb_expand_head in e1000 (yes i know its not 
quite right, but it shouldn't be fatal either) and the bug still occurs.

so its something else.  I'm not giving up on this, I just want to post the 
state of the investigation.

Jesse

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-04-14 22:42:54

From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 15:32:55 -0700 (Pacific Daylight Time)
well there was one of them here, but the tg3 bit may actually be due to 
the 2.6.14 problems.

http://bugzilla.kernel.org/show_bug.cgi?id=6279
There are 2 e1000 gigabit devices in that person's system, and
not one tg3 device.

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-14 22:48:42

On Fri, 14 Apr 2006, David S. Miller wrote:
From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 15:32:55 -0700 (Pacific Daylight Time)
quoted
well there was one of them here, but the tg3 bit may actually be due to 
the 2.6.14 problems.

http://bugzilla.kernel.org/show_bug.cgi?id=6279
There are 2 e1000 gigabit devices in that person's system, and
not one tg3 device.
sure, thats fine, but we just reproduced it in two seperate systems 
without the e1000 driver loaded, using the instructions as mentioned in a 
previous email.  We used a 5704 with TSO enabled.

I'm willing to try any debug patches you might come up with.

Jesse

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-04-14 22:52:00

From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 15:46:31 -0700 (Pacific Daylight Time)
sure, thats fine, but we just reproduced it in two seperate systems 
without the e1000 driver loaded, using the instructions as mentioned in a 
previous email.  We used a 5704 with TSO enabled.
That I didn't notice, thanks for the datapoint.

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: Jesse Brandeburg <hidden>
Date: 2006-04-14 22:57:56

On Fri, 14 Apr 2006, David S. Miller wrote:
From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 15:46:31 -0700 (Pacific Daylight Time)
quoted
sure, thats fine, but we just reproduced it in two seperate systems 
without the e1000 driver loaded, using the instructions as mentioned in a 
previous email.  We used a 5704 with TSO enabled.
That I didn't notice, thanks for the datapoint.
you're welcome, its "hot off the presses" (we just reproduced it 5 minutes 
ago) 

I'm trying to isolate more of a reproduction case, I'll be sure to post if 
I can find anything with more detail.

Re: [e1000 debug] KERNEL: assertion (!sk_forward_alloc) failed...

From: "David S. Miller" <davem@davemloft.net>
Date: 2006-04-14 23:57:15

From: Jesse Brandeburg <redacted>
Date: Fri, 14 Apr 2006 15:55:10 -0700 (Pacific Daylight Time)
I'm trying to isolate more of a reproduction case, I'll be sure to
post if I can find anything with more detail.
I think I see the bug.

If tbench with large numbers of clients is part of what helps
reproduce it, the key might be hitting the memory limits in tcp_mem[]
and friends, or something to do with concurrent access to
sk->sk_forward_alloc.

I bet there is some race in there.

A lot of the action is in net/core/stream.c  We modify
sk->sk_forward_alloc non-atomically but that should be ok
since we ought to be holding all of the correct locks when
we hit these accesses.  But it is the first thing to audit.

Let's look at sk_stream_rfree() as that is invoked from SKB
freeing callbacks and is the most likely suspect for these
kinds of problems.

It is hooked up to the skb->destructor by sk_stream_set_owner_r() and
then invoked via __kfree_skb().

Nothing here takes any locks, and as stated above we modify
sk->sk_forward_alloc non-atomically, and this is therefore the bug.

Shit.

I'll think of how to fix this in the least invasive manner.  I also
want to search the changelog history to see if this race was always
present or if it was "introduced".

Making sk->sk_forward_alloc an atomic_t would be incredibly expensive
so I'll try to find a way to avoid that.  We may be able to just do
a bh_lock_sock()/bh_unlock_sock() around the body of sk_stream_rfree()
to fix this.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help