From d14110694d55acb59d2154c4236296724096a3e2 Mon Sep 17 00:00:00 2001 From: Dale Rahn Date: Mon, 27 Feb 2006 02:05:20 +0000 Subject: 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@ --- sys/dev/pci/ppb.c | 11 +++++++---- 1 file 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. -- cgit v1.2.3