Re: 2.6.6 : bad PCI device ID for SiS ISA bridge => SiS900 eth0: Can not find ISA bridge

From: Eric BENARD / Free
Date: Mon May 17 2004 - 02:22:36 EST


On Monday 17 May 2004 05:50, David Dillow wrote:
> I'm not sure I understand the message, either. I can confirm that SiS's
> LPC-to-ISA bridges can change their device ID based on writes to the PCI
> config space -- 0x08 and 0x18 are both valid ids for that hardware.
>
> Eric, if you'll send me an lspci -xxx on the ISA bridge run under both
> kernels, that may be interesting. Then the fun part will be finding what
> changed in the kernel to cause that.
>
2.6.6
0000:00:01.0 ISA bridge: Silicon Integrated Systems [SiS] SiS85C503/5513 (LPC
Bridge)
00: 39 10 18 00 0f 00 00 02 00 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: c8 80 0a 0c 0b 00 14 19 10 ef 00 00 11 20 04 01
50: 11 28 02 01 60 0a 63 0a a9 04 12 00 4d 17 00 00
60: 00 80 c0 80 40 c1 00 00 00 00 80 00 80 80 00 00
70: 80 00 d8 01 00 50 00 00 00 00 00 00 01 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

2.6.3-rc2
0000:00:01.0 ISA bridge: Silicon Integrated Systems [SiS] SiS85C503/5513 (LPC
Bridge)
00: 39 10 08 00 0f 00 00 02 00 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 88 80 0a 0c 0b 00 14 19 10 ef 00 00 11 20 04 01
50: 11 28 02 01 62 0a 63 0a a9 04 12 00 4d 17 00 00
60: 0c 80 c0 80 40 c1 00 00 00 00 80 00 80 80 00 00
70: 80 00 d8 01 00 50 00 00 00 00 00 00 01 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


> In any event, I think it would be valid to have sis900 check for both
> ids.
>
Here is a patch for this.

Eric
--- linux-2.6.6.orig/drivers/net/sis900.c 2004-05-17 08:41:55.000000000 +0200
+++ linux-2.6.6/drivers/net/sis900.c 2004-05-17 08:37:25.000000000 +0200
@@ -261,8 +261,10 @@
int i;

if ((isa_bridge = pci_find_device(0x1039, 0x0008, isa_bridge)) == NULL) {
- printk("%s: Can not find ISA bridge\n", net_dev->name);
- return 0;
+ if ((isa_bridge = pci_find_device(0x1039, 0x0018, isa_bridge)) == NULL) {
+ printk("%s: Can not find ISA bridge\n", net_dev->name);
+ return 0;
+ }
}
pci_read_config_byte(isa_bridge, 0x48, &reg);
pci_write_config_byte(isa_bridge, 0x48, reg | 0x40);