diff options
author | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-11-09 22:47:55 +0000 |
---|---|---|
committer | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-11-09 22:47:55 +0000 |
commit | 3bf7f64185222b89ef9fc63e454967e3747198d0 (patch) | |
tree | c180ae3e704c3c5f707795480343acf7061e99e8 /sys/dev | |
parent | 03f9924939c5e5801781e6fed07792f8e3f15cb2 (diff) |
Don't attach to the agp bridges on amd64 machines. They have a different
interface (which is currently used by iommu(4) on amd64). I have a
driver for that interface, but it would currently conflict with iommu
and as such has not been commited.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/agp_ali.c | 7 | ||||
-rw-r--r-- | sys/dev/pci/agp_sis.c | 8 | ||||
-rw-r--r-- | sys/dev/pci/agp_via.c | 13 |
3 files changed, 17 insertions, 11 deletions
diff --git a/sys/dev/pci/agp_ali.c b/sys/dev/pci/agp_ali.c index eea5d6b081f..5891cbcb743 100644 --- a/sys/dev/pci/agp_ali.c +++ b/sys/dev/pci/agp_ali.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agp_ali.c,v 1.6 2008/11/09 15:11:19 oga Exp $ */ +/* $OpenBSD: agp_ali.c,v 1.7 2008/11/09 22:47:54 oga Exp $ */ /* $NetBSD: agp_ali.c,v 1.2 2001/09/15 00:25:00 thorpej Exp $ */ @@ -87,8 +87,9 @@ agp_ali_probe(struct device *parent, void *match, void *aux) struct agp_attach_args *aa = aux; struct pci_attach_args *pa = aa->aa_pa; - /* Must be a pchb */ - if (agpbus_probe(aa) == 1 && PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ALI) + /* Must be a pchb, don't attach to iommu-style agp devs */ + if (agpbus_probe(aa) == 1 && PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ALI && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_ALI_M1689) return (1); return (0); } diff --git a/sys/dev/pci/agp_sis.c b/sys/dev/pci/agp_sis.c index 0bc46a241b7..0109988e732 100644 --- a/sys/dev/pci/agp_sis.c +++ b/sys/dev/pci/agp_sis.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agp_sis.c,v 1.8 2008/11/09 15:11:19 oga Exp $ */ +/* $OpenBSD: agp_sis.c,v 1.9 2008/11/09 22:47:54 oga Exp $ */ /* $NetBSD: agp_sis.c,v 1.2 2001/09/15 00:25:00 thorpej Exp $ */ /*- @@ -86,8 +86,10 @@ agp_sis_probe(struct device *parent, void *match, void *aux) struct agp_attach_args *aa = aux; struct pci_attach_args *pa = aa->aa_pa; - /* Must be a pchb */ - if (agpbus_probe(aa) == 1 && PCI_VENDOR(pa->pa_id) == PCI_VENDOR_SIS) + /* Must be a pchb, don't attach to iommu-style agp devs */ + if (agpbus_probe(aa) == 1 && PCI_VENDOR(pa->pa_id) == PCI_VENDOR_SIS && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_SIS_755 && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_SIS_760) return (1); return (0); } diff --git a/sys/dev/pci/agp_via.c b/sys/dev/pci/agp_via.c index db7e92f2143..eb25a67e1f3 100644 --- a/sys/dev/pci/agp_via.c +++ b/sys/dev/pci/agp_via.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agp_via.c,v 1.9 2008/11/09 15:11:19 oga Exp $ */ +/* $OpenBSD: agp_via.c,v 1.10 2008/11/09 22:47:54 oga Exp $ */ /* $NetBSD: agp_via.c,v 1.2 2001/09/15 00:25:00 thorpej Exp $ */ /*- @@ -96,10 +96,13 @@ agp_via_probe(struct device *parent, void *match, void *aux) struct agp_attach_args *aa = aux; struct pci_attach_args *pa = aa->aa_pa; - /* Must be a pchb */ - if (PCI_CLASS(pa->pa_class) == PCI_CLASS_BRIDGE && - PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_BRIDGE_HOST && - PCI_VENDOR(pa->pa_id) == PCI_VENDOR_VIATECH) + /* Must be a pchb don't attach to iommu-style agp devs */ + if (agpbus_probe(aa) == 1 && + PCI_VENDOR(pa->pa_id) == PCI_VENDOR_VIATECH && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_VIATECH_K8M800_0 && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_VIATECH_K8T890_0 && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_VIATECH_K8HTB_0 && + PCI_PRODUCT(pa->pa_id) != PCI_PRODUCT_VIATECH_K8HTB) return (1); return (0); } |