summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2006-02-27 02:05:20 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2006-02-27 02:05:20 +0000
commitd14110694d55acb59d2154c4236296724096a3e2 (patch)
treedd4d2292239b560c1a413d9a377220382bcffbc7
parenta4f3fcdf4f1ce523c967c019fa787763c0f476ad (diff)
Workaround for bridge attachment where nothing lives behind these 'rare'
bridges and attaching them causes the machine to hang. A better fix needs to be found after release. ok brad@ kettenis@ deraadt@
-rw-r--r--sys/dev/pci/ppb.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/pci/ppb.c b/sys/dev/pci/ppb.c
index a5bfd910f59..888f55a4fd6 100644
--- a/sys/dev/pci/ppb.c
+++ b/sys/dev/pci/ppb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ppb.c,v 1.12 2005/12/05 14:39:23 mickey Exp $ */
+/* $OpenBSD: ppb.c,v 1.13 2006/02/27 02:05:19 drahn Exp $ */
/* $NetBSD: ppb.c,v 1.16 1997/06/06 23:48:05 thorpej Exp $ */
/*
@@ -71,10 +71,13 @@ ppbmatch(parent, match, aux)
struct pci_attach_args *pa = aux;
/*
- * This device is mislabeled. It is not a PCI bridge.
+ * These devices are mislabeled. They are not PCI bridges.
*/
- if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_VIATECH &&
- PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_VIATECH_VT82C586_PWR)
+ if ((PCI_VENDOR(pa->pa_id) == PCI_VENDOR_VIATECH &&
+ PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_VIATECH_VT82C586_PWR) ||
+ (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ATI &&
+ (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ATI_RS480_PCIE_2 ||
+ PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ATI_RS480_PCIE_3)))
return (0);
/*
* Check the ID register to see that it's a PCI bridge.