[PATCH] PCI probe status cleanup

Tim Hockin (thockin@sun.com)
Mon, 13 Aug 2001 19:10:27 -0700


This is a multi-part message in MIME format.
--------------DC7F21C32BE910220CBDF251
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

All,

Attached is a very small patch against 2.4.8, which I have been sending for
a while. It merely clears the Master Abort bit on a PCI bridge when a
failed probe occurs.

If there is any reason this can't go into the next 2.4.x release, please
let me know. It has been in use here for months.

Tim

-- 
Tim Hockin
Systems Software Engineer
Sun Microsystems, Cobalt Server Appliances
thockin@sun.com
--------------DC7F21C32BE910220CBDF251
Content-Type: text/plain; charset=us-ascii;
 name="pci_bridge_cleanup.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="pci_bridge_cleanup.diff"

diff -ruN dist+patches-2.4.8/drivers/pci/pci.c cobalt-2.4.8/drivers/pci/pci.c --- dist+patches-2.4.8/drivers/pci/pci.c Wed Jul 4 09:41:34 2001 +++ cobalt-2.4.8/drivers/pci/pci.c Mon Aug 13 16:42:12 2001 @@ -1232,8 +1236,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)

--------------DC7F21C32BE910220CBDF251--

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