Messages in this thread Patch in this message |  | | Date | Mon, 09 Jul 2001 23:56:05 -0700 | From | Tim Hockin <> | Subject | [PATCH] PCI probing status cleanup |
| |
Martin et al,
Attached is a tiny patch that clears the master abort bit on bridges when probing PCI devices.
Please let me know if there is any reason this would not be included in the mainline kernel.
Thanks Tim
-- Tim Hockin Systems Software Engineer Sun Microsystems, Cobalt Server Appliances thockin@sun.comdiff -ruN dist-2.4.6/drivers/pci/pci.c cobalt-2.4.6/drivers/pci/pci.c --- dist-2.4.6/drivers/pci/pci.c Mon Jul 2 14:42:53 2001 +++ cobalt-2.4.6/drivers/pci/pci.c Mon Jul 9 11:04:01 2001 @@ -1229,8 +1233,19 @@ return NULL; /* some broken boards return 0 or ~0 if a slot is empty: */ - if (l == 0xffffffff || l == 0x00000000 || l == 0x0000ffff || l == 0xffff0000) + if (l == 0xffffffff || l == 0x00000000 + || l == 0x0000ffff || l == 0xffff0000) { + /* + * host/pci and pci/pci bridges will set Received Master Abort + * (bit 13) on failed configuration access (happens when + * searching for devices). To be safe, clear the status + * register. + */ + unsigned short st; + pci_read_config_word(temp, PCI_STATUS, &st); + pci_write_config_word(temp, PCI_STATUS, st); return NULL; + } dev = kmalloc(sizeof(*dev), GFP_KERNEL); if (!dev) |  |