Skip to contentSkip to conversation

sky2: re-enable 88E8056 for most motherboards

PATCH Applied Stephen Hemminger 3 participants 11 messages Apr 30, 2007 – May 17, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sky2: re-enable 88E8056 for most motherboards

This fixes the regression in 2.6.21 for users with 88e8056 on motherboard. Allow all but the Gigabyte motherboard has some unresolved bus problems.

---
 drivers/net/sky2.c |   17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)
drivers/net/sky2.c +13 -4
@@ -123,10 +123,7 @@ static const struct pci_device_id sky2_i
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */
-#ifdef broken
-	/* This device causes data corruption problems that are not resolved */
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */
-#endif
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */
 	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */
@@ -3580,10 +3577,21 @@ static int __devinit sky2_probe(struct p
 		goto err_out;
 	}
 
+	/* Some Gigabyte motherboards have 88e8056 but cause problems
+	 * There is some unresolved hardware related problem that causes
+	 * descriptor errors and receive data corruption.
+	 */
+	if (pdev->vendor == PCI_VENDOR_ID_MARVELL &&
+	    pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) {
+		dev_err(&pdev->dev,
+			"88E8056 on Gigabyte motherboards not supported\n");
+		goto err_out_disable;
+	}
+
 	err = pci_request_regions(pdev, DRV_NAME);
 	if (err) {
 		dev_err(&pdev->dev, "cannot obtain PCI resources\n");
-		goto err_out;
+		goto err_out_disable;
 	}
 
 	pci_set_master(pdev);
@@ -3720,6 +3728,7 @@ err_out_free_hw:
 	kfree(hw);
 err_out_free_regions:
 	pci_release_regions(pdev);
+err_out_disable:
 	pci_disable_device(pdev);
 err_out:
 	return err;
#1 lore raw

Hi Stephen,

drivers/net/sky2.c static int __devinit sky2_probe(struct p · line 3587

Quoted 11 lines · Stephen Hemminger

This fixes the regression in 2.6.21 for users with 88e8056 on motherboard. Allow all but the Gigabyte motherboard has some unresolved bus problems.

drivers/net/sky2.c +8 -0
+	/* Some Gigabyte motherboards have 88e8056 but cause problems
+	 * There is some unresolved hardware related problem that causes
+	 * descriptor errors and receive data corruption.
+	 */
+	if (pdev->vendor == PCI_VENDOR_ID_MARVELL &&
+	    pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) {
+		dev_err(&pdev->dev,
+			"88E8056 on Gigabyte motherboards not supported\n");

Gentoo have reports of sky2 working fine on Gigabyte boards which have 88E8056 devices:
https://bugs.gentoo.org/show_bug.cgi?id=176219

Can the patch be refined further?

Specifically:

Gigabyte DQ6
03:00.0 0200: 11ab:4364 (rev 12)
Subsystem: 1458:e000
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort-
<MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 219
Region 0: Memory at f7000000 (64-bit, non-prefetchable) [size=16K] Region 2: I/O ports at 7000 [size=256]
[virtual] Expansion ROM at 40000000 [disabled] [size=128K]
Capabilities: [48] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [50] Vital Product Data
Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0
Enable+
Address: 00000000fee0300c Data: 413a
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0,
ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1,
Port 0
Link: Latency L0s <256ns, L1 unlimited
Link: ASPM Disabled RCB 128 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [100] Advanced Error Reporting
00: ab 11 64 43 07 04 10 00 12 00 00 02 08 00 00 00
10: 04 00 00 f7 00 00 00 00 01 70 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 58 14 00 e0
30: 00 00 00 00 48 00 00 00 00 00 00 00 0a 01 00 00

Gigabyte S3: sorry, no lspci dump available yet

Gigabyte DS3:
04:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. Unknown device [11ab:4364] (rev 12)
Subsystem: Giga-byte Technology Unknown device [1458:e000]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort-
<MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at f8000000 (64-bit, non-prefetchable) [size=16K] Region 2: I/O ports at 8000 [size=256]
[virtual] Expansion ROM at 40000000 [disabled] [size=128K]
Capabilities: [48] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [50] Vital Product Data
Capabilities: [5c] Message Signalled Interrupts: Mask- 64bit+
Queue=0/0
Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0,
ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1,
Port 0
Link: Latency L0s <256ns, L1 unlimited
Link: ASPM Disabled RCB 128 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [100] Advanced Error Reporting
00: ab 11 64 43 07 00 10 00 12 00 00 02 08 00 00 00
10: 04 00 00 f8 00 00 00 00 01 80 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 58 14 00 e0
30: 00 00 00 00 48 00 00 00 00 00 00 00 0b 01 00 00

#2 lore raw
Quoted 99 lines · On Tue, 01 May 2007 09:58:28 -0400 Daniel Drake <[email protected]> wrote:

Hi Stephen,

drivers/net/sky2.c static int __devinit sky2_probe(struct p · line 3587

Quoted 11 lines · Stephen Hemminger

This fixes the regression in 2.6.21 for users with 88e8056 on motherboard. Allow all but the Gigabyte motherboard has some unresolved bus problems.

drivers/net/sky2.c +8 -0
+	/* Some Gigabyte motherboards have 88e8056 but cause problems
+	 * There is some unresolved hardware related problem that causes
+	 * descriptor errors and receive data corruption.
+	 */
+	if (pdev->vendor == PCI_VENDOR_ID_MARVELL &&
+	    pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) {
+		dev_err(&pdev->dev,
+			"88E8056 on Gigabyte motherboards not supported\n");

Gentoo have reports of sky2 working fine on Gigabyte boards which have 88E8056 devices:
https://bugs.gentoo.org/show_bug.cgi?id=176219

Can the patch be refined further?

Specifically:

Gigabyte DQ6
03:00.0 0200: 11ab:4364 (rev 12)
Subsystem: 1458:e000
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort-
<MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 219
Region 0: Memory at f7000000 (64-bit, non-prefetchable) [size=16K] Region 2: I/O ports at 7000 [size=256]
[virtual] Expansion ROM at 40000000 [disabled] [size=128K]
Capabilities: [48] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [50] Vital Product Data
Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0
Enable+
Address: 00000000fee0300c Data: 413a
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0,
ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1,
Port 0
Link: Latency L0s <256ns, L1 unlimited
Link: ASPM Disabled RCB 128 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [100] Advanced Error Reporting
00: ab 11 64 43 07 04 10 00 12 00 00 02 08 00 00 00
10: 04 00 00 f7 00 00 00 00 01 70 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 58 14 00 e0
30: 00 00 00 00 48 00 00 00 00 00 00 00 0a 01 00 00

Gigabyte S3: sorry, no lspci dump available yet

Gigabyte DS3:
04:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. Unknown device [11ab:4364] (rev 12)
Subsystem: Giga-byte Technology Unknown device [1458:e000]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort-
<MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at f8000000 (64-bit, non-prefetchable) [size=16K] Region 2: I/O ports at 8000 [size=256]
[virtual] Expansion ROM at 40000000 [disabled] [size=128K]
Capabilities: [48] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [50] Vital Product Data
Capabilities: [5c] Message Signalled Interrupts: Mask- 64bit+
Queue=0/0
Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0,
ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1,
Port 0

Quoted 8 lines

Link: Latency L0s <256ns, L1 unlimited
Link: ASPM Disabled RCB 128 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [100] Advanced Error Reporting
00: ab 11 64 43 07 00 10 00 12 00 00 02 08 00 00 00
10: 04 00 00 f8 00 00 00 00 01 80 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 58 14 00 e0
30: 00 00 00 00 48 00 00 00 00 00 00 00 0b 01 00 00

The PCI info is basically the same between working/non working Gigabyte boards. Is there any other difference? Kernel config? chip revision?

Signature · 1 line
Stephen Hemminger <[email protected]>
#3 lore raw
Quoted 3 lines · Stephen Hemminger

The PCI info is basically the same between working/non working Gigabyte boards. Is there any other difference? Kernel config? chip revision?

I've never seen any reports of the corruption which you describe, so I can't make the comparison myself. Here's the chip info from a working Gigabyte DS3:

sky2 0000:04:00.0: v1.14 addr 0xf8000000 irq 16 Yukon-EC Ultra (0xb4) rev 2

Daniel

#4 lore raw
In reply to Daniel Drake
Quoted 19 lines · On Tue, 01 May 2007 09:58:28 -0400 Daniel Drake <[email protected]> wrote:

Hi Stephen,

drivers/net/sky2.c static int __devinit sky2_probe(struct p · line 3587

Quoted 11 lines · Stephen Hemminger

This fixes the regression in 2.6.21 for users with 88e8056 on motherboard. Allow all but the Gigabyte motherboard has some unresolved bus problems.

drivers/net/sky2.c +8 -0
+	/* Some Gigabyte motherboards have 88e8056 but cause problems
+	 * There is some unresolved hardware related problem that causes
+	 * descriptor errors and receive data corruption.
+	 */
+	if (pdev->vendor == PCI_VENDOR_ID_MARVELL &&
+	    pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) {
+		dev_err(&pdev->dev,
+			"88E8056 on Gigabyte motherboards not supported\n");

Gentoo have reports of sky2 working fine on Gigabyte boards which have 88E8056 devices:
https://bugs.gentoo.org/show_bug.cgi?id=176219

Quoted 1 line

Can the patch be refined further?

I can use DMI to narrow down to one motherboard.
Or just let everything through and let user's discover what's unstable, it fails relatively quickly.

Could you please get full PCI info lspci -vvxxx for working/non-working 88e8056 (Yukon EC-U) systems? It might be some PCI Express setup by the BIOS, but so far haven't found any difference that mattered.

Have tried newer BIOS and qualified memory as obvious first steps.

Signature · 1 line
Stephen Hemminger <[email protected]>
#5 lore raw
Quoted 6 lines · Stephen Hemminger

I can use DMI to narrow down to one motherboard. Or just let everything through and let user's discover what's unstable, it fails relatively quickly.

Could you please get full PCI info lspci -vvxxx for working/non-working 88e8056 (Yukon EC-U) systems? It might be some PCI Express setup by the BIOS, but so far haven't found any difference that mattered.

I haven't seen any reports of systems affected by the corruption issue so I can't provide any data there.

Here is the full lspci output for a few systems with 88E8056 devices that work fine:

Gigabyte P965-S3
http://bugs.gentoo.org/attachment.cgi?id=118827&action=view

Gigabyte P965-S3 (from another user)
http://bugs.gentoo.org/attachment.cgi?id=118848&action=view

Asus P5B deluxe
http://bugs.gentoo.org/attachment.cgi?id=119038&action=view

Daniel

#6 lore raw
Quoted 18 lines · On Sun, 13 May 2007 11:55:29 -0400 Daniel Drake <[email protected]> wrote:
Quoted 7 lines · Stephen Hemminger

I can use DMI to narrow down to one motherboard.
Or just let everything through and let user's discover what's unstable, it fails relatively quickly.

Could you please get full PCI info lspci -vvxxx for working/non-working 88e8056 (Yukon EC-U) systems? It might be some PCI Express setup by the BIOS, but so far haven't found any difference that mattered.

I haven't seen any reports of systems affected by the corruption issue so I can't provide any data there.

Here is the full lspci output for a few systems with 88E8056 devices that work fine:

Gigabyte P965-S3
http://bugs.gentoo.org/attachment.cgi?id=118827&action=view

Quoted 8 lines

Gigabyte P965-S3 (from another user)
http://bugs.gentoo.org/attachment.cgi?id=118848&action=view

Asus P5B deluxe
http://bugs.gentoo.org/attachment.cgi?id=119038&action=view

Daniel

It looks like these users aren't using MSI?

Also, there maybe some correlation of the problem with IDE AHCI mode. I am using WD Raptor 10K driver with AHCI, that does Native Command Queuing, could be some weird IDE interaction. If I turn off AHCI, it works better (still fails but differently).

Signature · 1 line
Stephen Hemminger <[email protected]>
#7 lore raw
Quoted 1 line · Stephen Hemminger

It looks like these users aren't using MSI?

Possible. Want me to find out?

I just ask as I note yesterday's -stable patch where you remove the #ifdef completely. Is that going to go upstream into 2.6.22 or do you want to continue pursuing the DMI matching path?

Thanks,
Daniel

#8 lore raw
Quoted 6 lines · Daniel Drake
Quoted 1 line · Stephen Hemminger

It looks like these users aren't using MSI?

Possible. Want me to find out?

I just ask as I note yesterday's -stable patch where you remove the #ifdef completely. Is that going to go upstream into 2.6.22 or do you want to continue pursuing the DMI matching path?

Stephen has some sky2 patches I need to push. I accidentally filed them until 'Pending: SATA', and they got missed in my most recent net driver push.

Jeff

#9 lore raw
Quoted 1 line · Jeff Garzik

Stephen has some sky2 patches I need to push. I accidentally filed them until 'Pending: SATA', and they got missed in my most recent net driver push.

Thanks, that clears it up, forgot to check netdev before asking. Looks like the 2.6.22 plans are to drop the machine detection, and enable 88E8056 everywhere.

Daniel