Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Aug 2013 23:30:02 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
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/...
Message-ID:  <201308122330.r7CNU25k034351@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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,
-					      &regs_id, RF_ACTIVE);
-	}
+	regs_type = SYS_RES_MEMORY;
+	regs_id = ADW_PCI_MEMBASE;
+	regs = bus_alloc_resource_any(dev, regs_type, &regs_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, &reg) == 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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308122330.r7CNU25k034351>