summaryrefslogtreecommitdiffstats
path: root/sys/dev/buslogic
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2013-08-12 23:30:01 +0000
committerscottl <scottl@FreeBSD.org>2013-08-12 23:30:01 +0000
commit28bd1409da1e9911c4152b06c5c7b89235e2b17a (patch)
tree34ad11c71aadd28f5ff680b63e3f0fd70956bed5 /sys/dev/buslogic
parentc8a53736fe9139a202d17ed7f95389d33326cb61 (diff)
downloadFreeBSD-src-28bd1409da1e9911c4152b06c5c7b89235e2b17a.zip
FreeBSD-src-28bd1409da1e9911c4152b06c5c7b89235e2b17a.tar.gz
Update PCI drivers to no longer look at the MEMIO-enabled bit in the PCI
command register. The lazy BAR allocation code in FreeBSD sometimes disables this bit when it detects a range conflict, and will re-enable it on demand when a driver allocates the BAR. Thus, the bit is no longer a reliable indication of capability, and should not be checked. This results in the elimination of a lot of code from drivers, and also gives the opportunity to simplify a lot of drivers to use a helper API to set the busmaster enable bit. This changes fixes some recent reports of disk controllers and their associated drives/enclosures disappearing during boot. Submitted by: jhb Reviewed by: jfv, marius, achadd, achim MFC after: 1 day
Diffstat (limited to 'sys/dev/buslogic')
-rw-r--r--sys/dev/buslogic/bt_pci.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/sys/dev/buslogic/bt_pci.c b/sys/dev/buslogic/bt_pci.c
index c3a3681..7615ae8 100644
--- a/sys/dev/buslogic/bt_pci.c
+++ b/sys/dev/buslogic/bt_pci.c
@@ -57,24 +57,19 @@ __FBSDID("$FreeBSD$");
static int
bt_pci_alloc_resources(device_t dev)
{
- int command, type = 0, rid, zero;
+ int type = 0, rid, zero;
struct resource *regs = 0;
struct resource *irq = 0;
- command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1);
#if 0
/* XXX Memory Mapped I/O seems to cause problems */
- if (command & PCIM_CMD_MEMEN) {
- type = SYS_RES_MEMORY;
- rid = BT_PCI_MEMADDR;
- regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE);
- }
+ type = SYS_RES_MEMORY;
+ rid = BT_PCI_MEMADDR;
+ regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE);
#else
- if (!regs && (command & PCIM_CMD_PORTEN)) {
- type = SYS_RES_IOPORT;
- rid = BT_PCI_IOADDR;
- regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE);
- }
+ type = SYS_RES_IOPORT;
+ rid = BT_PCI_IOADDR;
+ regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE);
#endif
if (!regs)
return (ENOMEM);
OpenPOWER on IntegriCloud