summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2008-11-09 22:47:55 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2008-11-09 22:47:55 +0000
commit3bf7f64185222b89ef9fc63e454967e3747198d0 (patch)
treec180ae3e704c3c5f707795480343acf7061e99e8 /sys/dev
parent03f9924939c5e5801781e6fed07792f8e3f15cb2 (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.c7
-rw-r--r--sys/dev/pci/agp_sis.c8
-rw-r--r--sys/dev/pci/agp_via.c13
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);
}