summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-08-06 19:49:57 +0000
committerjhb <jhb@FreeBSD.org>2012-08-06 19:49:57 +0000
commitdafb325c89bb39f093c248f6ed6909bdbae50340 (patch)
tree6a5ea56705ebca535b58a9252a354daca02a9fd2 /sys/dev/pci
parent2a76acdd2067b22c9561da43e1b9dc8788a09a9e (diff)
downloadFreeBSD-src-dafb325c89bb39f093c248f6ed6909bdbae50340.zip
FreeBSD-src-dafb325c89bb39f093c248f6ed6909bdbae50340.tar.gz
Explicitly enable busmastering on PCI-PCI bridges. Transactions initiated
on the secondary side of a bridge will not be propagated to the primary bus unless this is enabled. Busmastering is not enabled by default (we have relied on firmware to set this bit to date). The OS needs to set it for any bridges not configured by system firmware. Tested by: Steve Polyack korvus comcast net MFC after: 2 weeks
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/pci_pci.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
index 6d058c4..a378a07 100644
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -683,6 +683,13 @@ pcib_attach_common(device_t dev)
* would be more widely routed than absolutely necessary. We could
* then do a walk of the tree later and fix it.
*/
+
+ /*
+ * Always enable busmastering on bridges so that transactions
+ * initiated on the secondary bus are passed through to the
+ * primary bus.
+ */
+ pci_enable_busmaster(dev);
}
int
OpenPOWER on IntegriCloud