diff options
author | Dale Rahn <drahn@cvs.openbsd.org> | 2006-02-27 02:05:20 +0000 |
---|---|---|
committer | Dale Rahn <drahn@cvs.openbsd.org> | 2006-02-27 02:05:20 +0000 |
commit | d14110694d55acb59d2154c4236296724096a3e2 (patch) | |
tree | dd4d2292239b560c1a413d9a377220382bcffbc7 /sys/dev | |
parent | a4f3fcdf4f1ce523c967c019fa787763c0f476ad (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@
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/ppb.c | 11 |
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. |