From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 23:30:10 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 79AA8A6A; Mon, 12 Aug 2013 23:30:10 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 641FD239C; Mon, 12 Aug 2013 23:30:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CNUA3J034423; Mon, 12 Aug 2013 23:30:10 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CNU25k034351; Mon, 12 Aug 2013 23:30:02 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201308122330.r7CNU25k034351@svn.freebsd.org> From: Scott Long Date: Mon, 12 Aug 2013 23:30:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254263 - in head/sys: dev/aacraid dev/advansys dev/aic7xxx dev/amr dev/an dev/arcmsr dev/asr dev/ata dev/bktr dev/buslogic dev/dpt dev/e1000 dev/fatm dev/firewire dev/fxp dev/hatm dev/... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 23:30:10 -0000 Author: scottl Date: Mon Aug 12 23:30:01 2013 New Revision: 254263 URL: http://svnweb.freebsd.org/changeset/base/254263 Log: 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 Modified: head/sys/dev/aacraid/aacraid_pci.c head/sys/dev/advansys/adw_pci.c head/sys/dev/aic7xxx/ahc_pci.c head/sys/dev/aic7xxx/ahd_pci.c head/sys/dev/amr/amr_pci.c head/sys/dev/an/if_an_pci.c head/sys/dev/arcmsr/arcmsr.c head/sys/dev/asr/asr.c head/sys/dev/ata/ata-pci.c head/sys/dev/bktr/bktr_os.c head/sys/dev/buslogic/bt_pci.c head/sys/dev/dpt/dpt_pci.c head/sys/dev/e1000/if_em.c head/sys/dev/e1000/if_igb.c head/sys/dev/e1000/if_lem.c head/sys/dev/fatm/if_fatm.c head/sys/dev/firewire/fwohci_pci.c head/sys/dev/fxp/if_fxp.c head/sys/dev/hatm/if_hatm.c head/sys/dev/ips/ips_pci.c head/sys/dev/isp/isp_pci.c head/sys/dev/iwn/if_iwn.c head/sys/dev/ixgb/if_ixgb.c head/sys/dev/ixgbe/ixv.c head/sys/dev/mfi/mfi_pci.c head/sys/dev/mly/mly.c head/sys/dev/mn/if_mn.c head/sys/dev/mps/mps_pci.c head/sys/dev/mpt/mpt_pci.c head/sys/dev/mwl/if_mwl_pci.c head/sys/dev/mxge/if_mxge.c head/sys/dev/pccbb/pccbb_pci.c head/sys/dev/pst/pst-pci.c head/sys/dev/rp/rp_pci.c head/sys/dev/safe/safe.c head/sys/dev/sound/pci/als4000.c head/sys/dev/sound/pci/aureal.c head/sys/dev/sound/pci/cmi.c head/sys/dev/sound/pci/cs4281.c head/sys/dev/sound/pci/csa.c head/sys/dev/sound/pci/ds1.c head/sys/dev/sound/pci/emu10k1.c head/sys/dev/sound/pci/emu10kx.c head/sys/dev/sound/pci/envy24.c head/sys/dev/sound/pci/envy24ht.c head/sys/dev/sound/pci/es137x.c head/sys/dev/sound/pci/fm801.c head/sys/dev/sound/pci/hdspe.c head/sys/dev/sound/pci/maestro.c head/sys/dev/sound/pci/maestro3.c head/sys/dev/sound/pci/neomagic.c head/sys/dev/sound/pci/solo.c head/sys/dev/sound/pci/t4dwave.c head/sys/dev/sound/pci/via82c686.c head/sys/dev/sound/pci/vibes.c head/sys/dev/stge/if_stge.c head/sys/dev/sym/sym_hipd.c head/sys/dev/tdfx/tdfx_pci.c head/sys/dev/twa/tw_osl_freebsd.c head/sys/dev/tws/tws.c head/sys/dev/ubsec/ubsec.c head/sys/dev/wi/if_wi_pci.c head/sys/pci/ncr.c Modified: head/sys/dev/aacraid/aacraid_pci.c ============================================================================== --- head/sys/dev/aacraid/aacraid_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aacraid/aacraid_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -169,18 +169,12 @@ aacraid_pci_attach(device_t dev) /* * Verify that the adapter is correctly set up in PCI space. */ - command = pci_read_config(sc->aac_dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); + pci_enable_busmaster(dev); command = pci_read_config(sc->aac_dev, PCIR_COMMAND, 2); if (!(command & PCIM_CMD_BUSMASTEREN)) { device_printf(sc->aac_dev, "can't enable bus-master feature\n"); goto out; } - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(sc->aac_dev, "memory window not available\n"); - goto out; - } /* * Detect the hardware interface version, set up the bus interface Modified: head/sys/dev/advansys/adw_pci.c ============================================================================== --- head/sys/dev/advansys/adw_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/advansys/adw_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -199,14 +199,13 @@ adw_pci_attach(device_t dev) { struct adw_softc *adw; struct adw_pci_identity *entry; - u_int32_t command; + u_int16_t command; struct resource *regs; int regs_type; int regs_id; int error; int zero; - command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1); entry = adw_find_pci_device(dev); if (entry == NULL) return (ENXIO); @@ -214,14 +213,11 @@ adw_pci_attach(device_t dev) regs_type = 0; regs_id = 0; #ifdef ADW_ALLOW_MEMIO - if ((command & PCIM_CMD_MEMEN) != 0) { - regs_type = SYS_RES_MEMORY; - regs_id = ADW_PCI_MEMBASE; - regs = bus_alloc_resource_any(dev, regs_type, - ®s_id, RF_ACTIVE); - } + regs_type = SYS_RES_MEMORY; + regs_id = ADW_PCI_MEMBASE; + regs = bus_alloc_resource_any(dev, regs_type, ®s_id, RF_ACTIVE); #endif - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = ADW_PCI_IOBASE; regs = bus_alloc_resource_any(dev, regs_type, @@ -296,6 +292,7 @@ adw_pci_attach(device_t dev) * 'control_flag' CONTROL_FLAG_IGNORE_PERR flag to tell the microcode * to ignore DMA parity errors. */ + command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/2); if ((command & PCIM_CMD_PERRESPEN) == 0) adw_lram_write_16(adw, ADW_MC_CONTROL_FLAG, adw_lram_read_16(adw, ADW_MC_CONTROL_FLAG) Modified: head/sys/dev/aic7xxx/ahc_pci.c ============================================================================== --- head/sys/dev/aic7xxx/ahc_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aic7xxx/ahc_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -139,12 +139,10 @@ int ahc_pci_map_registers(struct ahc_softc *ahc) { struct resource *regs; - u_int command; int regs_type; int regs_id; int allow_memio; - command = aic_pci_read_config(ahc->dev_softc, PCIR_COMMAND, /*bytes*/1); regs = NULL; regs_type = 0; regs_id = 0; @@ -166,7 +164,7 @@ ahc_pci_map_registers(struct ahc_softc * #endif } - if ((allow_memio != 0) && (command & PCIM_CMD_MEMEN) != 0) { + if (allow_memio != 0) { regs_type = SYS_RES_MEMORY; regs_id = AHC_PCI_MEMADDR; @@ -190,16 +188,11 @@ ahc_pci_map_registers(struct ahc_softc * bus_release_resource(ahc->dev_softc, regs_type, regs_id, regs); regs = NULL; - } else { - command &= ~PCIM_CMD_PORTEN; - aic_pci_write_config(ahc->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = AHC_PCI_IOADDR; regs = bus_alloc_resource_any(ahc->dev_softc, regs_type, @@ -217,11 +210,6 @@ ahc_pci_map_registers(struct ahc_softc * bus_release_resource(ahc->dev_softc, regs_type, regs_id, regs); regs = NULL; - } else { - command &= ~PCIM_CMD_MEMEN; - aic_pci_write_config(ahc->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } Modified: head/sys/dev/aic7xxx/ahd_pci.c ============================================================================== --- head/sys/dev/aic7xxx/ahd_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aic7xxx/ahd_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -143,13 +143,11 @@ ahd_pci_map_registers(struct ahd_softc * { struct resource *regs; struct resource *regs2; - u_int command; int regs_type; int regs_id; int regs_id2; int allow_memio; - command = aic_pci_read_config(ahd->dev_softc, PCIR_COMMAND, /*bytes*/1); regs = NULL; regs2 = NULL; regs_type = 0; @@ -165,8 +163,7 @@ ahd_pci_map_registers(struct ahd_softc * allow_memio = 1; } - if ((command & PCIM_CMD_MEMEN) != 0 - && (ahd->bugs & AHD_PCIX_MMAPIO_BUG) == 0 + if ((ahd->bugs & AHD_PCIX_MMAPIO_BUG) == 0 && allow_memio != 0) { regs_type = SYS_RES_MEMORY; @@ -199,15 +196,10 @@ ahd_pci_map_registers(struct ahd_softc * regs_id, regs); regs = NULL; AHD_CORRECTABLE_ERROR(ahd); - } else { - command &= ~PCIM_CMD_PORTEN; - aic_pci_write_config(ahd->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = AHD_PCI_IOADDR0; regs = bus_alloc_resource_any(ahd->dev_softc, regs_type, @@ -233,9 +225,6 @@ ahd_pci_map_registers(struct ahd_softc * } ahd->tags[1] = rman_get_bustag(regs2); ahd->bshs[1] = rman_get_bushandle(regs2); - command &= ~PCIM_CMD_MEMEN; - aic_pci_write_config(ahd->dev_softc, PCIR_COMMAND, - command, /*bytes*/1); ahd->platform_data->regs_res_type[1] = regs_type; ahd->platform_data->regs_res_id[1] = regs_id2; ahd->platform_data->regs[1] = regs2; Modified: head/sys/dev/amr/amr_pci.c ============================================================================== --- head/sys/dev/amr/amr_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/amr/amr_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -184,7 +184,6 @@ amr_pci_attach(device_t dev) struct amr_softc *sc; struct amr_ident *id; int rid, rtype, error; - u_int32_t command; debug_called(1); @@ -204,24 +203,8 @@ amr_pci_attach(device_t dev) if ((id = amr_find_ident(dev)) == NULL) return (ENXIO); - command = pci_read_config(dev, PCIR_COMMAND, 1); if (id->flags & AMR_ID_QUARTZ) { - /* - * Make sure we are going to be able to talk to this board. - */ - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "memory window not available\n"); - return (ENXIO); - } sc->amr_type |= AMR_TYPE_QUARTZ; - } else { - /* - * Make sure we are going to be able to talk to this board. - */ - if ((command & PCIM_CMD_PORTEN) == 0) { - device_printf(dev, "I/O window not available\n"); - return (ENXIO); - } } if ((amr_force_sg32 == 0) && (id->flags & AMR_ID_DO_SG64) && @@ -231,11 +214,7 @@ amr_pci_attach(device_t dev) } /* force the busmaster enable bit on */ - if (!(command & PCIM_CMD_BUSMASTEREN)) { - device_printf(dev, "busmaster bit not set, enabling\n"); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - } + pci_enable_busmaster(dev); /* * Allocate the PCI register window. Modified: head/sys/dev/an/if_an_pci.c ============================================================================== --- head/sys/dev/an/if_an_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/an/if_an_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -141,7 +141,6 @@ static int an_attach_pci(dev) device_t dev; { - u_int32_t command; struct an_softc *sc; int flags, error = 0; @@ -153,19 +152,6 @@ an_attach_pci(dev) sc->mpi350 = 1; sc->port_rid = PCIR_BAR(0); } else { - /* - * Map control/status registers. - */ - command = pci_read_config(dev, PCIR_COMMAND, 4); - command |= PCIM_CMD_PORTEN; - pci_write_config(dev, PCIR_COMMAND, command, 4); - command = pci_read_config(dev, PCIR_COMMAND, 4); - - if (!(command & PCIM_CMD_PORTEN)) { - device_printf(dev, "failed to enable I/O ports!\n"); - error = ENXIO; - goto fail; - } sc->port_rid = AN_PCI_LOIO; } error = an_alloc_port(dev, sc->port_rid, 1); Modified: head/sys/dev/arcmsr/arcmsr.c ============================================================================== --- head/sys/dev/arcmsr/arcmsr.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/arcmsr/arcmsr.c Mon Aug 12 23:30:01 2013 (r254263) @@ -4101,8 +4101,7 @@ static u_int32_t arcmsr_initialize(devic pci_command |= PCIM_CMD_BUSMASTEREN; pci_command |= PCIM_CMD_PERRESPEN; pci_command |= PCIM_CMD_MWRICEN; - /* Enable Busmaster/Mem */ - pci_command |= PCIM_CMD_MEMEN; + /* Enable Busmaster */ pci_write_config(dev, PCIR_COMMAND, pci_command, 2); switch(acb->adapter_type) { case ACB_ADAPTER_TYPE_A: { Modified: head/sys/dev/asr/asr.c ============================================================================== --- head/sys/dev/asr/asr.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/asr/asr.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2428,9 +2428,7 @@ asr_attach(device_t dev) return(ENXIO); } /* Enable if not formerly enabled */ - pci_write_config(dev, PCIR_COMMAND, - pci_read_config(dev, PCIR_COMMAND, sizeof(char)) | - PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN, sizeof(char)); + pci_enable_busmaster(dev); sc->ha_pciBusNum = pci_get_bus(dev); sc->ha_pciDeviceNum = (pci_get_slot(dev) << 3) | pci_get_function(dev); Modified: head/sys/dev/ata/ata-pci.c ============================================================================== --- head/sys/dev/ata/ata-pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ata/ata-pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -98,11 +98,8 @@ ata_pci_attach(device_t dev) ctlr->dev = dev; /* if needed try to enable busmastering */ + pci_enable_busmaster(dev); cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(cmd & PCIM_CMD_BUSMASTEREN)) { - pci_write_config(dev, PCIR_COMMAND, cmd | PCIM_CMD_BUSMASTEREN, 2); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - } /* if busmastering mode "stuck" use it */ if ((cmd & PCIM_CMD_BUSMASTEREN) == PCIM_CMD_BUSMASTEREN) { Modified: head/sys/dev/bktr/bktr_os.c ============================================================================== --- head/sys/dev/bktr/bktr_os.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/bktr/bktr_os.c Mon Aug 12 23:30:01 2013 (r254263) @@ -318,7 +318,6 @@ bktr_attach( device_t dev ) { u_long latency; u_long fun; - u_long val; unsigned int rev; unsigned int unit; int error = 0; @@ -336,9 +335,7 @@ bktr_attach( device_t dev ) /* * Enable bus mastering and Memory Mapped device */ - val = pci_read_config(dev, PCIR_COMMAND, 4); - val |= (PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, val, 4); + pci_enable_busmaster(dev); /* * Map control/status registers. Modified: head/sys/dev/buslogic/bt_pci.c ============================================================================== --- head/sys/dev/buslogic/bt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/buslogic/bt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -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); Modified: head/sys/dev/dpt/dpt_pci.c ============================================================================== --- head/sys/dev/dpt/dpt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/dpt/dpt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -77,23 +77,17 @@ dpt_pci_attach (device_t dev) dpt_softc_t * dpt; int error = 0; - u_int32_t command; - dpt = device_get_softc(dev); dpt->dev = dev; dpt_alloc(dev); - command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1); - #ifdef DPT_ALLOW_MMIO - if ((command & PCIM_CMD_MEMEN) != 0) { - dpt->io_rid = DPT_PCI_MEMADDR; - dpt->io_type = SYS_RES_MEMORY; - dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, - &dpt->io_rid, RF_ACTIVE); - } + dpt->io_rid = DPT_PCI_MEMADDR; + dpt->io_type = SYS_RES_MEMORY; + dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, + &dpt->io_rid, RF_ACTIVE); #endif - if (dpt->io_res == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (dpt->io_res == NULL) { dpt->io_rid = DPT_PCI_IOADDR; dpt->io_type = SYS_RES_IOPORT; dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, Modified: head/sys/dev/e1000/if_em.c ============================================================================== --- head/sys/dev/e1000/if_em.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_em.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2442,16 +2442,8 @@ em_identify_hardware(struct adapter *ada device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, "Memory Access and/or Bus Master bits " - "were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_igb.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2410,16 +2410,8 @@ igb_identify_hardware(struct adapter *ad device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - INIT_DEBUGOUT("Memory Access and/or Bus Master " - "bits were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/e1000/if_lem.c ============================================================================== --- head/sys/dev/e1000/if_lem.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_lem.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2119,16 +2119,8 @@ lem_identify_hardware(struct adapter *ad device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, "Memory Access and/or Bus Master bits " - "were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/fatm/if_fatm.c ============================================================================== --- head/sys/dev/fatm/if_fatm.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/fatm/if_fatm.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2829,21 +2829,13 @@ fatm_attach(device_t dev) ifp->if_linkmiblen = sizeof(IFP2IFATM(sc->ifp)->mib); /* - * Enable memory and bustmaster + * Enable busmaster */ - cfg = pci_read_config(dev, PCIR_COMMAND, 2); - cfg |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cfg, 2); + pci_enable_busmaster(dev); /* * Map memory */ - cfg = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(cfg & PCIM_CMD_MEMEN)) { - if_printf(ifp, "failed to enable memory mapping\n"); - error = ENXIO; - goto fail; - } sc->memid = 0x10; sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, RF_ACTIVE); Modified: head/sys/dev/firewire/fwohci_pci.c ============================================================================== --- head/sys/dev/firewire/fwohci_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/firewire/fwohci_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -242,7 +242,7 @@ fwohci_pci_init(device_t self) uint16_t cmd; cmd = pci_read_config(self, PCIR_COMMAND, 2); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; + cmd |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; #if 1 /* for broken hardware */ cmd &= ~PCIM_CMD_MWRICEN; #endif Modified: head/sys/dev/fxp/if_fxp.c ============================================================================== --- head/sys/dev/fxp/if_fxp.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/fxp/if_fxp.c Mon Aug 12 23:30:01 2013 (r254263) @@ -452,7 +452,6 @@ fxp_attach(device_t dev) * Enable bus mastering. */ pci_enable_busmaster(dev); - val = pci_read_config(dev, PCIR_COMMAND, 2); /* * Figure out which we should try first - memory mapping or i/o mapping? @@ -610,6 +609,7 @@ fxp_attach(device_t dev) * is a valid cacheline size (8 or 16 dwords), then tell * the board to turn on MWI. */ + val = pci_read_config(dev, PCIR_COMMAND, 2); if (val & PCIM_CMD_MWRICEN && pci_read_config(dev, PCIR_CACHELNSZ, 1) != 0) sc->flags |= FXP_FLAG_MWI_ENABLE; Modified: head/sys/dev/hatm/if_hatm.c ============================================================================== --- head/sys/dev/hatm/if_hatm.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/hatm/if_hatm.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1686,7 +1686,7 @@ hatm_attach(device_t dev) * 4.2 BIOS Configuration */ v = pci_read_config(dev, PCIR_COMMAND, 2); - v |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; + v |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; pci_write_config(dev, PCIR_COMMAND, v, 2); /* @@ -1702,12 +1702,6 @@ hatm_attach(device_t dev) /* * Map memory */ - v = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(v & PCIM_CMD_MEMEN)) { - device_printf(dev, "failed to enable memory\n"); - error = ENXIO; - goto failed; - } sc->memid = PCIR_BAR(0); sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, RF_ACTIVE); Modified: head/sys/dev/ips/ips_pci.c ============================================================================== --- head/sys/dev/ips/ips_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ips/ips_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -59,7 +59,6 @@ static int ips_pci_probe(device_t dev) static int ips_pci_attach(device_t dev) { - u_int32_t command; ips_softc_t *sc; @@ -95,22 +94,18 @@ static int ips_pci_attach(device_t dev) } else goto error; /* make sure busmastering is on */ - command = pci_read_config(dev, PCIR_COMMAND, 1); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 1); + pci_enable_busmaster(dev); /* seting up io space */ sc->iores = NULL; - if(command & PCIM_CMD_MEMEN){ - PRINTF(10, "trying MEMIO\n"); - if(pci_get_device(dev) == IPS_COPPERHEAD_DEVICE_ID) - sc->rid = PCIR_BAR(1); - else - sc->rid = PCIR_BAR(0); - sc->iotype = SYS_RES_MEMORY; - sc->iores = bus_alloc_resource_any(dev, sc->iotype, - &sc->rid, RF_ACTIVE); - } - if(!sc->iores && command & PCIM_CMD_PORTEN){ + PRINTF(10, "trying MEMIO\n"); + if(pci_get_device(dev) == IPS_COPPERHEAD_DEVICE_ID) + sc->rid = PCIR_BAR(1); + else + sc->rid = PCIR_BAR(0); + sc->iotype = SYS_RES_MEMORY; + sc->iores = bus_alloc_resource_any(dev, sc->iotype, &sc->rid, + RF_ACTIVE); + if(!sc->iores){ PRINTF(10, "trying PORTIO\n"); sc->rid = PCIR_BAR(0); sc->iotype = SYS_RES_IOPORT; Modified: head/sys/dev/isp/isp_pci.c ============================================================================== --- head/sys/dev/isp/isp_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/isp/isp_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -706,13 +706,10 @@ isp_pci_attach(device_t dev) pcs->irq = pcs->regs = NULL; pcs->rgd = pcs->rtp = pcs->iqd = 0; - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if (cmd & m1) { - pcs->rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; - pcs->rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; - pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); - } - if (pcs->regs == NULL && (cmd & m2)) { + pcs->rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; + pcs->rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; + pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); + if (pcs->regs == NULL) { pcs->rtp = (m2 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; pcs->rgd = (m2 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); @@ -891,6 +888,7 @@ isp_pci_attach(device_t dev) /* * Make sure that SERR, PERR, WRITE INVALIDATE and BUSMASTER are set. */ + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_SEREN | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_INVEN; if (IS_2300(isp)) { /* per QLogic errata */ cmd &= ~PCIM_CMD_INVEN; Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/iwn/if_iwn.c Mon Aug 12 23:30:01 2013 (r254263) @@ -483,12 +483,12 @@ iwn_attach(device_t dev) pci_write_config(dev, 0x41, 0, 1); /* Hardware bug workaround. */ - reg = pci_read_config(dev, PCIR_COMMAND, 1); + reg = pci_read_config(dev, PCIR_COMMAND, 2); if (reg & PCIM_CMD_INTxDIS) { DPRINTF(sc, IWN_DEBUG_RESET, "%s: PCIe INTx Disable set\n", __func__); reg &= ~PCIM_CMD_INTxDIS; - pci_write_config(dev, PCIR_COMMAND, reg, 1); + pci_write_config(dev, PCIR_COMMAND, reg, 2); } /* Enable bus-mastering. */ Modified: head/sys/dev/ixgb/if_ixgb.c ============================================================================== --- head/sys/dev/ixgb/if_ixgb.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ixgb/if_ixgb.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1210,15 +1210,9 @@ ixgb_identify_hardware(struct adapter * device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, - "Memory Access and/or Bus Master bits were not set!\n"); - adapter->hw.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, adapter->hw.pci_cmd_word, 2); - } + /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); adapter->hw.device_id = pci_get_device(dev); Modified: head/sys/dev/ixgbe/ixv.c ============================================================================== --- head/sys/dev/ixgbe/ixv.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ixgbe/ixv.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1561,14 +1561,8 @@ ixv_identify_hardware(struct adapter *ad ** Make sure BUSMASTER is set, on a VM under ** KVM it may not be and will break things. */ + pci_enable_busmaster(dev); pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (pci_cmd_word & PCIM_CMD_MEMEN))) { - INIT_DEBUGOUT("Memory Access and/or Bus Master " - "bits were not set!\n"); - pci_cmd_word |= (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/mfi/mfi_pci.c ============================================================================== --- head/sys/dev/mfi/mfi_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mfi/mfi_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -187,7 +187,6 @@ mfi_pci_attach(device_t dev) { struct mfi_softc *sc; struct mfi_ident *m; - uint32_t command; int count, error; sc = device_get_softc(dev); @@ -196,19 +195,8 @@ mfi_pci_attach(device_t dev) m = mfi_find_ident(dev); sc->mfi_flags = m->flags; - /* Verify that the adapter can be set up in PCI space */ - command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - command = pci_read_config(dev, PCIR_COMMAND, 2); - if ((command & PCIM_CMD_BUSMASTEREN) == 0) { - device_printf(dev, "Can't enable PCI busmaster\n"); - return (ENXIO); - } - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "PCI memory window not available\n"); - return (ENXIO); - } + /* Ensure busmastering is enabled */ + pci_enable_busmaster(dev); /* Allocate PCI registers */ if ((sc->mfi_flags & MFI_FLAGS_1064R) || Modified: head/sys/dev/mly/mly.c ============================================================================== --- head/sys/dev/mly/mly.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mly/mly.c Mon Aug 12 23:30:01 2013 (r254263) @@ -333,7 +333,6 @@ static int mly_pci_attach(struct mly_softc *sc) { int i, error; - u_int32_t command; debug_called(1); @@ -342,21 +341,8 @@ mly_pci_attach(struct mly_softc *sc) /* * Verify that the adapter is correctly set up in PCI space. - * - * XXX we shouldn't do this; the PCI code should. */ - command = pci_read_config(sc->mly_dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(sc->mly_dev, PCIR_COMMAND, command, 2); - command = pci_read_config(sc->mly_dev, PCIR_COMMAND, 2); - if (!(command & PCIM_CMD_BUSMASTEREN)) { - mly_printf(sc, "can't enable busmaster feature\n"); - goto fail; - } - if ((command & PCIM_CMD_MEMEN) == 0) { - mly_printf(sc, "memory window not available\n"); - goto fail; - } + pci_enable_busmaster(sc->mly_dev); /* * Allocate the PCI register window. Modified: head/sys/dev/mn/if_mn.c ============================================================================== --- head/sys/dev/mn/if_mn.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mn/if_mn.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1346,9 +1346,9 @@ mn_attach (device_t self) return(ENXIO); } - u = pci_read_config(self, PCIR_COMMAND, 1); + u = pci_read_config(self, PCIR_COMMAND, 2); printf("%x\n", u); - pci_write_config(self, PCIR_COMMAND, u | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN, 1); + pci_write_config(self, PCIR_COMMAND, u | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN, 2); #if 0 pci_write_config(self, PCIR_COMMAND, 0x02800046, 4); #endif Modified: head/sys/dev/mps/mps_pci.c ============================================================================== --- head/sys/dev/mps/mps_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mps/mps_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -183,7 +183,6 @@ mps_pci_attach(device_t dev) { struct mps_softc *sc; struct mps_ident *m; - uint16_t command; int error; sc = device_get_softc(dev); @@ -193,18 +192,7 @@ mps_pci_attach(device_t dev) sc->mps_flags = m->flags; /* Twiddle basic PCI config bits for a sanity check */ - command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - command = pci_read_config(dev, PCIR_COMMAND, 2); - if ((command & PCIM_CMD_BUSMASTEREN) == 0) { - mps_printf(sc, "Cannot enable PCI busmaster\n"); - return (ENXIO); - } - if ((command & PCIM_CMD_MEMEN) == 0) { - mps_printf(sc, "PCI memory window not available\n"); - return (ENXIO); - } + pci_enable_busmaster(dev); /* Allocate the System Interface Register Set */ sc->mps_regs_rid = PCIR_BAR(1); Modified: head/sys/dev/mpt/mpt_pci.c ============================================================================== --- head/sys/dev/mpt/mpt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mpt/mpt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -389,16 +389,11 @@ mpt_pci_attach(device_t dev) /* Print INFO level (if any) if bootverbose is set */ mpt->verbose += (bootverbose != 0)? 1 : 0; } - /* Make sure memory access decoders are enabled */ - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if ((cmd & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "Memory accesses disabled"); - return (ENXIO); - } /* * Make sure that SERR, PERR, WRITE INVALIDATE and BUSMASTER are set. */ + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_SERRESPEN | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; Modified: head/sys/dev/mwl/if_mwl_pci.c ============================================================================== --- head/sys/dev/mwl/if_mwl_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mwl/if_mwl_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -120,29 +120,6 @@ mwl_pci_probe(device_t dev) return ENXIO; } -static u_int32_t -mwl_pci_setup(device_t dev) -{ - u_int32_t cmd; - - /* - * Enable memory mapping and bus mastering. - */ - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cmd, 4); - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - if ((cmd & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "failed to enable memory mapping\n"); - return 0; - } - if ((cmd & PCIM_CMD_BUSMASTEREN) == 0) { - device_printf(dev, "failed to enable bus mastering\n"); - return 0; - } - return 1; -} - static int mwl_pci_attach(device_t dev) { @@ -152,11 +129,8 @@ mwl_pci_attach(device_t dev) sc->sc_dev = dev; - /* - * Enable memory mapping and bus mastering. - */ - if (!mwl_pci_setup(dev)) - return 0; + pci_enable_busmaster(dev); + /* * Setup memory-mapping of PCI registers. */ @@ -285,8 +259,7 @@ mwl_pci_resume(device_t dev) { struct mwl_pci_softc *psc = device_get_softc(dev); - if (!mwl_pci_setup(dev)) - return ENXIO; + pci_enable_busmaster(dev); mwl_resume(&psc->sc_sc); Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mxge/if_mxge.c Mon Aug 12 23:30:01 2013 (r254263) @@ -3827,7 +3827,7 @@ mxge_setup_cfg_space(mxge_softc_t *sc) { device_t dev = sc->dev; int reg; - uint16_t cmd, lnk, pectl; + uint16_t lnk, pectl; /* find the PCIe link width and set max read request to 4KB*/ if (pci_find_cap(dev, PCIY_EXPRESS, ®) == 0) { @@ -3847,9 +3847,6 @@ mxge_setup_cfg_space(mxge_softc_t *sc) /* Enable DMA and Memory space access */ pci_enable_busmaster(dev); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - cmd |= PCIM_CMD_MEMEN; - pci_write_config(dev, PCIR_COMMAND, cmd, 2); } static uint32_t Modified: head/sys/dev/pccbb/pccbb_pci.c ============================================================================== --- head/sys/dev/pccbb/pccbb_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/pccbb/pccbb_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -471,10 +471,7 @@ cbb_chipinit(struct cbb_softc *sc) pci_write_config(sc->dev, PCIR_SUBBUS_2, sc->subbus, 1); /* Enable memory access */ - PCI_MASK_CONFIG(sc->dev, PCIR_COMMAND, - | PCIM_CMD_MEMEN - | PCIM_CMD_PORTEN - | PCIM_CMD_BUSMASTEREN, 2); + pci_enable_busmaster(sc->dev); /* disable Legacy IO */ switch (sc->chipset) { Modified: head/sys/dev/pst/pst-pci.c ============================================================================== --- head/sys/dev/pst/pst-pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/pst/pst-pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -88,9 +88,7 @@ iop_pci_attach(device_t dev) RF_SHAREABLE | RF_ACTIVE); /* now setup the infrastructure to talk to the device */ - pci_write_config(dev, PCIR_COMMAND, - pci_read_config(dev, PCIR_COMMAND, 1) | - PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN, 1); + pci_enable_busmaster(dev); sc->ibase = rman_get_virtual(sc->r_mem); sc->reg = (struct i2o_registers *)sc->ibase; Modified: head/sys/dev/rp/rp_pci.c ============================================================================== --- head/sys/dev/rp/rp_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/rp/rp_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -151,7 +151,6 @@ rp_pciattach(device_t dev) CONTROLLER_t *ctlp; int unit; int retval; - u_int32_t stcmd; ctlp = device_get_softc(dev); bzero(ctlp, sizeof(*ctlp)); @@ -161,13 +160,6 @@ rp_pciattach(device_t dev) ctlp->aiop2off = rp_pci_aiop2off; ctlp->ctlmask = rp_pci_ctlmask; - /* Wake up the device. */ - stcmd = pci_read_config(dev, PCIR_COMMAND, 4); - if ((stcmd & PCIM_CMD_PORTEN) == 0) { - stcmd |= (PCIM_CMD_PORTEN); - pci_write_config(dev, PCIR_COMMAND, 4, stcmd); - } - /* The IO ports of AIOPs for a PCI controller are continuous. */ ctlp->io_num = 1; ctlp->io_rid = malloc(sizeof(*(ctlp->io_rid)) * ctlp->io_num, M_DEVBUF, M_NOWAIT | M_ZERO); Modified: head/sys/dev/safe/safe.c ============================================================================== --- head/sys/dev/safe/safe.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/safe/safe.c Mon Aug 12 23:30:01 2013 (r254263) @@ -220,28 +220,15 @@ safe_attach(device_t dev) { struct safe_softc *sc = device_get_softc(dev); u_int32_t raddr; - u_int32_t cmd, i, devinfo; + u_int32_t i, devinfo; int rid; bzero(sc, sizeof (*sc)); sc->sc_dev = dev; /* XXX handle power management */ - - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cmd, 4); - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - if (!(cmd & PCIM_CMD_MEMEN)) { - device_printf(dev, "failed to enable memory mapping\n"); - goto bad; - } - - if (!(cmd & PCIM_CMD_BUSMASTEREN)) { - device_printf(dev, "failed to enable bus mastering\n"); - goto bad; - } + pci_enable_busmaster(dev); /* * Setup memory-mapping of PCI registers. Modified: head/sys/dev/sound/pci/als4000.c ============================================================================== --- head/sys/dev/sound/pci/als4000.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/als4000.c Mon Aug 12 23:30:01 2013 (r254263) @@ -806,16 +806,13 @@ static int als_pci_attach(device_t dev) { struct sc_info *sc; - u_int32_t data; char status[SND_STATUSLEN]; sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO); sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_als4000 softc"); sc->dev = dev; - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); + pci_enable_busmaster(dev); /* * By default the power to the various components on the * ALS4000 is entirely controlled by the pci powerstate. We Modified: head/sys/dev/sound/pci/aureal.c ============================================================================== --- head/sys/dev/sound/pci/aureal.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/aureal.c Mon Aug 12 23:30:01 2013 (r254263) @@ -550,7 +550,6 @@ au_pci_probe(device_t dev) static int au_pci_attach(device_t dev) { - u_int32_t data; struct au_info *au; int type[10]; int regid[10]; @@ -565,10 +564,7 @@ au_pci_attach(device_t dev) au = malloc(sizeof(*au), M_DEVBUF, M_WAITOK | M_ZERO); au->unit = device_get_unit(dev); - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN|PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); - data = pci_read_config(dev, PCIR_COMMAND, 2); + pci_enable_busmaster(dev); j=0; /* XXX dfr: is this strictly necessary? */ Modified: head/sys/dev/sound/pci/cmi.c ============================================================================== --- head/sys/dev/sound/pci/cmi.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/cmi.c Mon Aug 12 23:30:01 2013 (r254263) @@ -935,15 +935,11 @@ static int cmi_attach(device_t dev) { struct sc_info *sc; - u_int32_t data; char status[SND_STATUSLEN]; sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO); sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_cmi softc"); - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); - data = pci_read_config(dev, PCIR_COMMAND, 2); + pci_enable_busmaster(dev); sc->dev = dev; sc->regid = PCIR_BAR(0); Modified: head/sys/dev/sound/pci/cs4281.c ============================================================================== --- head/sys/dev/sound/pci/cs4281.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/cs4281.c Mon Aug 12 23:30:01 2013 (r254263) @@ -760,16 +760,13 @@ cs4281_pci_attach(device_t dev) { struct sc_info *sc; struct ac97_info *codec = NULL; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***