Module Name:    src
Committed By:   dyoung
Date:           Tue May 10 18:31:34 UTC 2011

Modified Files:
        src/sys/dev/pci: if_hme_pci.c if_ral_pci.c machfb.c pci.c
            pciide_common.c viaide.c

Log Message:
Stop abuse of PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED.  The flags
specifically tell a driver that bridges upstream forward PCI I/O (or
memory) transactions to the device."  Only bus drivers have any business
modifying these.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/dev/pci/if_hme_pci.c
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/pci/if_ral_pci.c
cvs rdiff -u -r1.64 -r1.65 src/sys/dev/pci/machfb.c
cvs rdiff -u -r1.138 -r1.139 src/sys/dev/pci/pci.c
cvs rdiff -u -r1.49 -r1.50 src/sys/dev/pci/pciide_common.c
cvs rdiff -u -r1.73 -r1.74 src/sys/dev/pci/viaide.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/if_hme_pci.c
diff -u src/sys/dev/pci/if_hme_pci.c:1.35 src/sys/dev/pci/if_hme_pci.c:1.36
--- src/sys/dev/pci/if_hme_pci.c:1.35	Tue Mar 23 21:54:23 2010
+++ src/sys/dev/pci/if_hme_pci.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_hme_pci.c,v 1.35 2010/03/23 21:54:23 dyoung Exp $	*/
+/*	$NetBSD: if_hme_pci.c,v 1.36 2011/05/10 18:31:33 dyoung Exp $	*/
 
 /*
  * Copyright (c) 2000 Matthew R. Green
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_hme_pci.c,v 1.35 2010/03/23 21:54:23 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_hme_pci.c,v 1.36 2011/05/10 18:31:33 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -155,12 +155,10 @@
 	 */
 	switch (type) {
 	case PCI_MAPREG_TYPE_MEM:
-		pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
 		csr |= PCI_COMMAND_MEM_ENABLE;
 		sc->sc_bustag = pa->pa_memt;
 		break;
 	case PCI_MAPREG_TYPE_IO:
-		pa->pa_flags |= PCI_FLAGS_IO_ENABLED;
 		csr |= PCI_COMMAND_IO_ENABLE;
 		sc->sc_bustag = pa->pa_iot;
 		break;

Index: src/sys/dev/pci/if_ral_pci.c
diff -u src/sys/dev/pci/if_ral_pci.c:1.15 src/sys/dev/pci/if_ral_pci.c:1.16
--- src/sys/dev/pci/if_ral_pci.c:1.15	Tue Jan 19 22:07:01 2010
+++ src/sys/dev/pci/if_ral_pci.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ral_pci.c,v 1.15 2010/01/19 22:07:01 pooka Exp $	*/
+/*	$NetBSD: if_ral_pci.c,v 1.16 2011/05/10 18:31:33 dyoung Exp $	*/
 /*	$OpenBSD: if_ral_pci.c,v 1.6 2006/01/09 20:03:43 damien Exp $  */
 
 /*-
@@ -22,7 +22,7 @@
  * PCI front-end for the Ralink RT2560/RT2561/RT2561S/RT2661 driver.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ral_pci.c,v 1.15 2010/01/19 22:07:01 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ral_pci.c,v 1.16 2011/05/10 18:31:33 dyoung Exp $");
 
 
 #include <sys/param.h>
@@ -144,7 +144,6 @@
 	reg = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG);
 	reg |= PCI_COMMAND_MASTER_ENABLE | PCI_COMMAND_MEM_ENABLE;
 	pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, reg);
-	pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
 
 	/* map control/status registers */
 	error = pci_mapreg_map(pa, RAL_PCI_BAR0, PCI_MAPREG_TYPE_MEM |

Index: src/sys/dev/pci/machfb.c
diff -u src/sys/dev/pci/machfb.c:1.64 src/sys/dev/pci/machfb.c:1.65
--- src/sys/dev/pci/machfb.c:1.64	Wed May  4 23:36:21 2011
+++ src/sys/dev/pci/machfb.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: machfb.c,v 1.64 2011/05/04 23:36:21 macallan Exp $	*/
+/*	$NetBSD: machfb.c,v 1.65 2011/05/10 18:31:33 dyoung Exp $	*/
 
 /*
  * Copyright (c) 2002 Bang Jun-Young
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>
 __KERNEL_RCSID(0, 
-	"$NetBSD: machfb.c,v 1.64 2011/05/04 23:36:21 macallan Exp $");
+	"$NetBSD: machfb.c,v 1.65 2011/05/10 18:31:33 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -521,6 +521,7 @@
 	int setmode, width, height;
 	pcireg_t screg;
 	uint32_t reg;
+	const pcireg_t enables = PCI_COMMAND_MEM_ENABLE|PCI_COMMAND_IO_ENABLE;
 
 	sc->sc_dev = self;
 	sc->sc_pc = pa->pa_pc;
@@ -543,9 +544,8 @@
 	
 	/* enable memory and disable IO access */
 	screg = pci_conf_read(sc->sc_pc, sc->sc_pcitag, PCI_COMMAND_STATUS_REG);
-	if ((screg & PCI_FLAGS_MEM_ENABLED) == 0) {
-		screg |= PCI_FLAGS_IO_ENABLED;
-		screg |= PCI_FLAGS_MEM_ENABLED;
+	if ((screg & enables) != enables) {
+		screg |= enables;
 		pci_conf_write(sc->sc_pc, sc->sc_pcitag,
 		    PCI_COMMAND_STATUS_REG, screg);
 	}

Index: src/sys/dev/pci/pci.c
diff -u src/sys/dev/pci/pci.c:1.138 src/sys/dev/pci/pci.c:1.139
--- src/sys/dev/pci/pci.c:1.138	Tue Apr  5 23:10:52 2011
+++ src/sys/dev/pci/pci.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci.c,v 1.138 2011/04/05 23:10:52 dyoung Exp $	*/
+/*	$NetBSD: pci.c,v 1.139 2011/05/10 18:31:33 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1995, 1996, 1997, 1998
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pci.c,v 1.138 2011/04/05 23:10:52 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pci.c,v 1.139 2011/05/10 18:31:33 dyoung Exp $");
 
 #include "opt_pci.h"
 
@@ -370,10 +370,6 @@
 	 * as appropriate.
 	 */
 	pa.pa_flags = sc->sc_flags;
-	if ((csr & PCI_COMMAND_IO_ENABLE) == 0)
-		pa.pa_flags &= ~PCI_FLAGS_IO_ENABLED;
-	if ((csr & PCI_COMMAND_MEM_ENABLE) == 0)
-		pa.pa_flags &= ~PCI_FLAGS_MEM_ENABLED;
 
 	/*
 	 * If the cache line size is not configured, then

Index: src/sys/dev/pci/pciide_common.c
diff -u src/sys/dev/pci/pciide_common.c:1.49 src/sys/dev/pci/pciide_common.c:1.50
--- src/sys/dev/pci/pciide_common.c:1.49	Mon Apr  4 20:37:56 2011
+++ src/sys/dev/pci/pciide_common.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pciide_common.c,v 1.49 2011/04/04 20:37:56 dyoung Exp $	*/
+/*	$NetBSD: pciide_common.c,v 1.50 2011/05/10 18:31:33 dyoung Exp $	*/
 
 
 /*
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pciide_common.c,v 1.49 2011/04/04 20:37:56 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pciide_common.c,v 1.50 2011/05/10 18:31:33 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -267,12 +267,14 @@
 	pcireg_t csr;
 
 	if ((pa->pa_flags & PCI_FLAGS_IO_ENABLED) == 0) {
-		csr = pci_conf_read(sc->sc_pc, sc->sc_tag,
-		    PCI_COMMAND_STATUS_REG);
 		aprint_normal_dev(sc->sc_wdcdev.sc_atac.atac_dev,
-		    "device disabled (at %s)\n",
-		   (csr & PCI_COMMAND_IO_ENABLE) == 0 ?
-		   "device" : "bridge");
+		    "I/O access disabled at bridge\n");
+		return 0;
+	}
+	csr = pci_conf_read(sc->sc_pc, sc->sc_tag, PCI_COMMAND_STATUS_REG);
+	if ((csr & PCI_COMMAND_IO_ENABLE) == 0) {
+		aprint_normal_dev(sc->sc_wdcdev.sc_atac.atac_dev,
+		    "I/O access disabled at device\n");
 		return 0;
 	}
 	return 1;

Index: src/sys/dev/pci/viaide.c
diff -u src/sys/dev/pci/viaide.c:1.73 src/sys/dev/pci/viaide.c:1.74
--- src/sys/dev/pci/viaide.c:1.73	Sun Apr 10 15:02:01 2011
+++ src/sys/dev/pci/viaide.c	Tue May 10 18:31:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: viaide.c,v 1.73 2011/04/10 15:02:01 jakllsch Exp $	*/
+/*	$NetBSD: viaide.c,v 1.74 2011/05/10 18:31:33 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000, 2001 Manuel Bouyer.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.73 2011/04/10 15:02:01 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.74 2011/05/10 18:31:33 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -837,6 +837,7 @@
 static int
 via_sata_chip_map_common(struct pciide_softc *sc, struct pci_attach_args *pa)
 {
+	pcireg_t csr;
 	int maptype, ret;
 
 	if (pciide_chipen(sc, pa) == 0)
@@ -877,12 +878,11 @@
 		/*
 		 * Enable memory-space access if it isn't already there.
 		 */
-		if ((pa->pa_flags & PCI_FLAGS_MEM_ENABLED) == 0) {
-			pcireg_t csr;
+		csr = pci_conf_read(pa->pa_pc, pa->pa_tag,
+		    PCI_COMMAND_STATUS_REG);
+		if ((csr & PCI_COMMAND_MEM_ENABLE) == 0 &&
+		    (pa->pa_flags & PCI_FLAGS_MEM_ENABLED) != 0) {
 
-			pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
-			csr = pci_conf_read(pa->pa_pc, pa->pa_tag,
-			    PCI_COMMAND_STATUS_REG);
 			pci_conf_write(pa->pa_pc, pa->pa_tag,
 			    PCI_COMMAND_STATUS_REG,
 			    csr | PCI_COMMAND_MEM_ENABLE);

Reply via email to