PCI devices scan code error & fix

Stanislav V. Voronyi (stas@cnti.uanet.kharkov.ua)
Sat, 5 Jun 1999 16:35:01 +0300


Hi All, I've bought new motherboard based on VIA MVP3 chipset
with ACPI interface & GL518 sensor chip, but I could not start monitoring
software due to absend apropriate device in list of PCI devices. If I enable
disabled for irq line saving USB it's apear in PCI list together with ACPI
interface. I looked in kernel code & found that if one function on mult-function
PCI device disabled all further function on this device is not checked. In my
case disabling USB (bus 0, dev 7, func 2) lead to lost ACPI interface
(bus 0, dev 7, func 3). After removing this line from pci.c file all works fine:

Bus 0, device 7, function 0:
ISA bridge: VIA Technologies VT 82C586 Apollo ISA (rev 71).
Medium devsel. Master Capable. No bursts.
Bus 0, device 7, function 1:
IDE interface: VIA Technologies VT 82C586 Apollo IDE (rev 6).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=32.
I/O at 0xe000 [0xe001].
Bus 0, device 7, function 3:
Host bridge: VIA Technologies VT 82C586B Apollo ACPI (rev 16).
Medium devsel. Fast back-to-back capable.

Here is the small patch against 2.2.9 to fix it:
-----------------------------------------------------------------------------------
--- linux.dist/drivers/pci/pci.c Wed Mar 10 12:11:27 1999
+++ linux/drivers/pci/pci.c Sat Jun 5 15:06:14 1999
@@ -178,10 +178,8 @@

if (pcibios_read_config_dword(bus->number, devfn, PCI_VENDOR_ID, &l) ||
/* some broken boards return 0 if a slot is empty: */
- l == 0xffffffff || l == 0x00000000 || l == 0x0000ffff || l == 0xffff0000) {
- is_multi = 0;
+ l == 0xffffffff || l == 0x00000000 || l == 0x0000ffff || l == 0xffff0000)
continue;
- }

dev = kmalloc(sizeof(*dev), GFP_ATOMIC);
memset(dev, 0, sizeof(*dev));
-------------------------------------------------------------------------------------

Stanislav Voronyi.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/