Skip to contentSkip to conversation

Yet more PCI fixes for 2.5.70

PATCH New Greg KH 1 participant 10 messages Jun 10, 2003

Subsystems (3)
lore
Share & tools
lore

Greg KH

author
#0 lore raw

PATCH 1/1 Yet more PCI fixes for 2.5.70

Hi,

Here's some more PCI changes against the latest 2.5.70 bk tree. They contain the following:
- remove almost all usages of pci_present(). There are only 2 users of this function left, and I'll continue to work to remove them.
- add sysfs support for pci domains. This is from Matthew Wilcox, and is a bit different from the last patch he sent to lkml. This one supports sparc64 and ppc64 and has been blessed by David Miller.
- updated pci pool CONFIG_DEBUG_SLAB logic
- removed pci_for_each_bus() macro, and added a pci_find_next_bus() function to prevent people from directly walking the PCI bus lists.

Please pull from:

	bk://kernel.bkbits.net/gregkh/linux/pci-2.5

thanks,

greg k-h

p.s. I'll send these as patches in response to this email to lkml for those who want to see them.

 arch/alpha/Kconfig                  |    4 +
 arch/alpha/kernel/pci.c             |    8 --
 arch/i386/pci/common.c              |    6 -
 arch/ia64/Kconfig                   |    4 +
 arch/ia64/hp/common/sba_iommu.c     |    6 -
 arch/ia64/pci/pci.c                 |    4 -
 arch/ppc/Kconfig                    |    4 +
 arch/ppc/kernel/pci.c               |   10 ---
 arch/ppc64/Kconfig                  |    4 +
 arch/ppc64/kernel/pci.c             |    6 -
 arch/sparc/kernel/ebus.c            |    3 
 arch/sparc64/Kconfig                |    4 +
 arch/sparc64/kernel/ebus.c          |    3 
 arch/sparc64/kernel/pci.c           |    6 -
 drivers/atm/ambassador.c            |    3 
 drivers/atm/fore200e.c              |    5 -
 drivers/atm/nicstar.c               |    5 -
 drivers/char/epca.c                 |   13 ----
 drivers/char/ip2main.c              |   58 ++++++++----------
 drivers/char/isicom.c               |    2 
 drivers/char/istallion.c            |    3 
 drivers/char/rio/rio_linux.c        |    3 
 drivers/char/rocket.c               |    8 --
 drivers/char/specialix.c            |    2 
 drivers/char/stallion.c             |    3 
 drivers/char/sx.c                   |  116 ++++++++++++++++++------------------
 drivers/i2c/i2c-elektor.c           |    2 
 drivers/ide/ide.c                   |    5 -
 drivers/isdn/eicon/Divas_mod.c      |   12 ---
 drivers/isdn/hysdn/hysdn_init.c     |    4 -
 drivers/media/radio/radio-maestro.c |    2 
 drivers/mtd/devices/pmc551.c        |    5 -
 drivers/net/acenic.c                |    3 
 drivers/net/dgrs.c                  |   80 +++++++++++-------------
 drivers/net/fc/iph5526.c            |    6 -
 drivers/net/hp100.c                 |    6 +
 drivers/net/saa9730.c               |   39 +++++-------
 drivers/net/sk98lin/skge.c          |    3 
 drivers/net/skfp/skfddi.c           |    4 -
 drivers/net/tc35815.c               |    3 
 drivers/net/tulip/de4x5.c           |    6 -
 drivers/net/wan/lmc/lmc_main.c      |    8 --
 drivers/net/wan/lmc/lmc_ver.h       |    2 
 drivers/net/wan/sbni.c              |    3 
 drivers/net/wan/sdladrv.c           |    8 --
 drivers/pci/pci.c                   |    4 -
 drivers/pci/pool.c                  |   12 ++-
 drivers/pci/power.c                 |   18 +----
 drivers/pci/probe.c                 |    3 
 drivers/pci/proc.c                  |   24 +++----
 drivers/pci/search.c                |   25 ++++++-
 drivers/pci/syscall.c               |    2 
 drivers/scsi/3w-xxxx.c              |    6 -
 drivers/scsi/BusLogic.c             |    3 
 drivers/scsi/aic7xxx_old.c          |    3 
 drivers/scsi/atp870u.c              |    4 -
 drivers/scsi/cpqfcTSinit.c          |    6 -
 drivers/scsi/dmx3191d.c             |    6 -
 drivers/scsi/eata.c                 |    6 -
 drivers/scsi/gdth.c                 |    4 -
 drivers/scsi/inia100.c              |    2 
 drivers/scsi/pci2000.c              |    7 --
 drivers/scsi/pci2220i.c             |    6 -
 drivers/scsi/qla1280.c              |    6 -
 drivers/scsi/qlogicfc.c             |    5 -
 drivers/scsi/qlogicisp.c            |    5 -
 drivers/scsi/sym53c8xx.c            |    8 --
 drivers/scsi/sym53c8xx_2/sym_glue.c |    6 -
 drivers/scsi/sym53c8xx_comm.h       |    8 --
 drivers/scsi/tmscsim.c              |    2 
 drivers/telephony/ixj.c             |    9 --
 drivers/video/pm2fb.c               |    4 -
 include/asm-alpha/pci.h             |    5 -
 include/asm-arm/pci.h               |    8 --
 include/asm-h8300/pci.h             |    3 
 include/asm-i386/pci.h              |    6 -
 include/asm-ia64/pci.h              |    5 -
 include/asm-m68k/pci.h              |    3 
 include/asm-mips/pci.h              |    3 
 include/asm-mips64/pci.h            |    5 -
 include/asm-parisc/pci.h            |    3 
 include/asm-ppc/pci-bridge.h        |    2 
 include/asm-ppc/pci.h               |    2 
 include/asm-ppc64/pci.h             |    3 
 include/asm-sh/pci.h                |    3 
 include/asm-sparc/pci.h             |    3 
 include/asm-sparc64/parport.h       |    3 
 include/asm-sparc64/pci.h           |    2 
 include/asm-v850/rte_cb.h           |    1 
 include/asm-x86_64/pci.h            |    6 -
 include/linux/pci.h                 |   14 +++-
 sound/oss/cmpci.c                   |    4 -
 sound/oss/cs4281/cs4281m.c          |    5 -
 sound/oss/cs46xx.c                  |    5 -
 sound/oss/es1370.c                  |    2 
 sound/oss/es1371.c                  |    2 
 sound/oss/esssolo1.c                |    2 
 sound/oss/i810_audio.c              |    3 
 sound/oss/ite8172.c                 |    2 
 sound/oss/maestro3.c                |    3 
 sound/oss/nec_vrc5477.c             |    2 
 sound/oss/rme96xx.c                 |    3 
 sound/oss/skeleton.c                |    4 -
 sound/oss/sonicvibes.c              |    2 
 sound/oss/trident.c                 |    3 
 105 files changed, 272 insertions(+), 538 deletions(-)

-----

David Brownell:
o PCI: pci pool, poison more like slab code

Greg Kroah-Hartman:
o PCI: remove some pci_bus_b() calls in drivers/pci/power.c
o PCI: remove pci_bus_b() call in arch/i386/pci/common.c
o PCI: remove pci_for_each_bus() macro as there are now no more users of it
o PCI: remove pci_for_each_bus() usage from drivers/pci/pci.c
o PCI: remove pci_for_each_bus() usage from arch/ia64/hp/common/sba_iommu.c
o PCI: add pci_find_next_bus() function to prevent people from walking pci bus lists themselves
o PCI: remove pci_present() from sound/oss/trident.c
o PCI: remove pci_present() from sound/oss/sonicvibes.c
o PCI: remove pci_present() from sound/oss/skeleton.c
o PCI: remove pci_present() from sound/oss/rme96xx.c
o PCI: remove pci_present() from sound/oss/nec_vrc5477.c
o PCI: remove pci_present() from sound/oss/maestro3.c
o PCI: remove pci_present() from sound/oss/ite8172.c
o PCI: remove pci_present() from sound/oss/i810_audio.c
o PCI: remove pci_present() from sound/oss/esssolo1.c
o PCI: remove pci_present() from sound/oss/es1371.c
o PCI: remove pci_present() from sound/oss/es1370.c
o PCI: remove pci_present() from sound/oss/cs46xx.c
o PCI: remove pci_present() from sound/oss/cs4281/cs4281m.c
o PCI: remove pci_present() from sound/oss/cmpci.c
o PCI: remove pci_present() from include/asm-sparc64/parport.h
o PCI: remove pci_present() from drivers/video/pm2fb.c
o PCI: remove pci_present() from drivers/telephony/ixj.c
o PCI: remove pci_present() from drivers/scsi/tmscsim.c
o PCI: remove pci_present() from drivers/scsi/sym53c8xx_comm.h
o PCI: remove pci_present() from drivers/scsi/sym53c8xx_2/sym_glue.c
o PCI: remove pci_present() from drivers/scsi/sym53c8xx.c
o PCI: remove pci_present() from drivers/scsi/qlogicisp.c
o PCI: remove pci_present() from drivers/scsi/qlogicfc.c
o PCI: remove pci_present() from drivers/scsi/qla1280.c
o PCI: remove pci_present() from drivers/scsi/pci2220i.c
o PCI: remove pci_present() from drivers/scsi/pci2000.c
o PCI: remove pci_present() from drivers/scsi/inia100.c
o PCI: remove pci_present() from drivers/scsi/gdth.c
o PCI: remove pci_present() from drivers/scsi/eata.c
o PCI: remove pci_present() from drivers/scsi/dmx3191d.c
o PCI: remove pci_present() from drivers/scsi/cpqfcTSinit.c
o PCI: remove pci_present() from drivers/scsi/atp870u.c
o PCI: remove pci_present() from drivers/scsi/aic7xxx_old.c
o PCI: remove pci_present() from drivers/scsi/BusLogic.c
o PCI: remove pci_present() from drivers/scsi/3w-xxxx.c
o PCI: remove pci_present() from drivers/pci/syscall.c
o PCI: remove pci_present() from drivers/pci/proc.c
o PCI: remove pci_present() from drivers/net/wan/sdladrv.c
o PCI: remove pci_present() from drivers/net/wan/sbni.c
o PCI: remove pci_present() from drivers/net/wan/lmc/lmc_main.c
o PCI: remove pci_present() from drivers/net/tulip/de4x5.c
o PCI: remove pci_present() from drivers/net/tc35815.c
o PCI: remove pci_present() from drivers/net/skfp/skfddi.c
o PCI: remove pci_present() from drivers/net/sk98lin/skge.c
o PCI: remove pci_present() from drivers/net/saa9730.c
o PCI: remove pci_present() from drivers/net/hp100.c
o PCI: remove pci_present() from drivers/net/fc/iph5526.c
o PCI: remove pci_present() from drivers/net/dgrs.c
o PCI: remove pci_present() from drivers/net/acenic.c
o PCI: remove pci_present() from drivers/mtd/devices/pmc551.c
o PCI: remove pci_present() from drivers/media/radio/radio-maestro.c
o PCI: remove pci_present() from drivers/isdn/hysdn/hysdn_init.c
o PCI: remove pci_present() from drivers/isdn/eicon/Divas_mod.c
o PCI: remove pci_present() from drivers/ide/ide.c
o PCI: remove pci_present() from drivers/i2c/i2c-elektor.c
o PCI: remove pci_present() from drivers/char/sx.c
o PCI: remove pci_present() from drivers/char/stallion.c
o PCI: remove pci_present() from drivers/char/specialix.c
o PCI: remove pci_present() from drivers/char/rocket.c
o PCI: remove pci_present() from drivers/char/rio/rio_linux.c
o PCI: remove pci_present() from drivers/char/istallion.c
o PCI: remove pci_present() from drivers/char/isicom.c
o PCI: remove pci_present() from drivers/char/ip2main.c
o PCI: remove pci_present() from drivers/char/epca.c
o PCI: remove pci_present() from drivers/atm/nicstar.c
o PCI: remove pci_present() from drivers/atm/fore200e.c
o PCI: remove pci_present() from drivers/atm/ambassador.c
o PCI: remove pci_present() from arch/sparc64/kernel/ebus.c
o PCI: remove pci_present() from arch/sparc/kernel/ebus.c

Matthew Wilcox:
o PCI: domain support for sysfs

author
#1 lore raw

PATCH 1/1 Yet more PCI fixes for 2.5.70

ChangeSet 1.1316, 2003/06/09 15:27:00-07:00, [email protected]

PCI: remove pci_present() from arch/sparc/kernel/ebus.c

 arch/sparc/kernel/ebus.c |    3 ---
 1 files changed, 3 deletions(-)
arch/sparc/kernel/ebus.c +0 -3
diff -Nru a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c
@@ -267,9 +267,6 @@
 	int reg, nreg;
 	int num_ebus = 0;
 
-	if (!pci_present())
-		return;
-
 	prom_getstring(prom_root_node, "name", lbuf, sizeof(lbuf));
 	for (sp = ebus_blacklist; sp->esname != NULL; sp++) {
 		if (strcmp(lbuf, sp->esname) == 0) {
author
#2 lore raw

ChangeSet 1.1317, 2003/06/09 15:29:23-07:00, [email protected]

PCI: remove pci_present() from arch/sparc64/kernel/ebus.c

 arch/sparc64/kernel/ebus.c |    3 ---
 1 files changed, 3 deletions(-)
arch/sparc64/kernel/ebus.c +0 -3
diff -Nru a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c
@@ -525,9 +525,6 @@
 	int nd, ebusnd, is_rio;
 	int num_ebus = 0;
 
-	if (!pci_present())
-		return;
-
 	pdev = find_next_ebus(NULL, &is_rio);
 	if (!pdev) {
 		printk("ebus: No EBus's found.\n");
author
#3 lore raw

ChangeSet 1.1318, 2003/06/09 15:29:58-07:00, [email protected]

PCI: remove pci_present() from drivers/atm/ambassador.c

 drivers/atm/ambassador.c |    3 ---
 1 files changed, 3 deletions(-)
drivers/atm/ambassador.c +0 -3
diff -Nru a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c
@@ -2509,9 +2509,6 @@
   
   PRINTD (DBG_FLOW, "amb_probe");
   
-  if (!pci_present())
-    return 0;
-  
   devs = 0;
   pci_dev = NULL;
   while ((pci_dev = pci_find_device
author
#4 lore raw

ChangeSet 1.1319, 2003/06/09 15:30:39-07:00, [email protected]

PCI: remove pci_present() from drivers/atm/fore200e.c

 drivers/atm/fore200e.c |    5 -----
 1 files changed, 5 deletions(-)
drivers/atm/fore200e.c +0 -5
diff -Nru a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
@@ -633,11 +633,6 @@
     struct pci_dev*  pci_dev = NULL;
     int              count = index;
     
-    if (pci_present() == 0) {
-	printk(FORE200E "no PCI subsystem\n");
-	return NULL;
-    }
-
     do {
 	pci_dev = pci_find_device(PCI_VENDOR_ID_FORE, PCI_DEVICE_ID_FORE_PCA200E, pci_dev);
 	if (pci_dev == NULL)
author
#5 lore raw

ChangeSet 1.1320, 2003/06/09 15:31:07-07:00, [email protected]

PCI: remove pci_present() from drivers/atm/nicstar.c

 drivers/atm/nicstar.c |    5 -----
 1 files changed, 5 deletions(-)
drivers/atm/nicstar.c +0 -5
diff -Nru a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
@@ -283,11 +283,6 @@
    struct pci_dev *pcidev;
 
    XPRINTK("nicstar: nicstar_module_init() called.\n");
-   if(!pci_present())
-   {
-      printk("nicstar: no PCI subsystem found.\n");
-      return -EIO;
-   }
 
    for(i = 0; i < NS_MAX_CARDS; i++)
       cards[i] = NULL;
author
#6 lore raw

ChangeSet 1.1321, 2003/06/09 15:31:49-07:00, [email protected]

PCI: remove pci_present() from drivers/char/epca.c

 drivers/char/epca.c |   13 +++----------
 1 files changed, 3 insertions(+), 10 deletions(-)
drivers/char/epca.c +3 -10
diff -Nru a/drivers/char/epca.c b/drivers/char/epca.c
@@ -1639,16 +1639,9 @@
 	--------------------------------------------------------------------- */
   
 	pci_boards_found = 0;
-	if (pci_present())
-	{
-		if(num_cards < MAXBOARDS)
-			pci_boards_found += init_PCI();
-		num_cards += pci_boards_found;
-	}
-	else 
-	{
-		printk(KERN_ERR "<Error> - No PCI BIOS found\n");
-	}
+	if(num_cards < MAXBOARDS)
+		pci_boards_found += init_PCI();
+	num_cards += pci_boards_found;
 
 #endif /* ENABLE_PCI */
 
author
#7 lore raw

ChangeSet 1.1322, 2003/06/09 15:32:18-07:00, [email protected]

PCI: remove pci_present() from drivers/char/ip2main.c

 drivers/char/ip2main.c |   58 +++++++++++++++++++++++--------------------------
 1 files changed, 28 insertions(+), 30 deletions(-)
drivers/char/ip2main.c +28 -30
diff -Nru a/drivers/char/ip2main.c b/drivers/char/ip2main.c
@@ -691,41 +691,39 @@
 				} 
 			} 
 #else /* LINUX_VERSION_CODE > 2.1.99 */
-			if (pci_present()) {
-				struct pci_dev *pci_dev_i = NULL;
-				pci_dev_i = pci_find_device(PCI_VENDOR_ID_COMPUTONE,
-							  PCI_DEVICE_ID_COMPUTONE_IP2EX, pci_dev_i);
-				if (pci_dev_i != NULL) {
-					unsigned int addr;
-					unsigned char pci_irq;
+			struct pci_dev *pci_dev_i = NULL;
+			pci_dev_i = pci_find_device(PCI_VENDOR_ID_COMPUTONE,
+						  PCI_DEVICE_ID_COMPUTONE_IP2EX, pci_dev_i);
+			if (pci_dev_i != NULL) {
+				unsigned int addr;
+				unsigned char pci_irq;
 
-					ip2config.type[i] = PCI;
-					status =
-					pci_read_config_dword(pci_dev_i, PCI_BASE_ADDRESS_1, &addr);
-					if ( addr & 1 ) {
-						ip2config.addr[i]=(USHORT)(addr&0xfffe);
-					} else {
-						printk( KERN_ERR "IP2: PCI I/O address error\n");
-					}
-					status =
-					pci_read_config_byte(pci_dev_i, PCI_INTERRUPT_LINE, &pci_irq);
+				ip2config.type[i] = PCI;
+				status =
+				pci_read_config_dword(pci_dev_i, PCI_BASE_ADDRESS_1, &addr);
+				if ( addr & 1 ) {
+					ip2config.addr[i]=(USHORT)(addr&0xfffe);
+				} else {
+					printk( KERN_ERR "IP2: PCI I/O address error\n");
+				}
+				status =
+				pci_read_config_byte(pci_dev_i, PCI_INTERRUPT_LINE, &pci_irq);
 
 //		If the PCI BIOS assigned it, lets try and use it.  If we
 //		can't acquire it or it screws up, deal with it then.
 
-//					if (!is_valid_irq(pci_irq)) {
-//						printk( KERN_ERR "IP2: Bad PCI BIOS IRQ(%d)\n",pci_irq);
-//						pci_irq = 0;
-//					}
-					ip2config.irq[i] = pci_irq;
-				} else {	// ann error
-					ip2config.addr[i] = 0;
-					if (status == PCIBIOS_DEVICE_NOT_FOUND) {
-						printk( KERN_ERR "IP2: PCI board %d not found\n", i );
-					} else {
-						pcibios_strerror(status);
-					}
-				} 
+//				if (!is_valid_irq(pci_irq)) {
+//					printk( KERN_ERR "IP2: Bad PCI BIOS IRQ(%d)\n",pci_irq);
+//					pci_irq = 0;
+//				}
+				ip2config.irq[i] = pci_irq;
+			} else {	// ann error
+				ip2config.addr[i] = 0;
+				if (status == PCIBIOS_DEVICE_NOT_FOUND) {
+					printk( KERN_ERR "IP2: PCI board %d not found\n", i );
+				} else {
+					pcibios_strerror(status);
+				}
 			} 
 #endif	/* ! 2_0_X */
 #else
author
#8 lore raw

ChangeSet 1.1323, 2003/06/09 15:32:51-07:00, [email protected]

PCI: remove pci_present() from drivers/char/isicom.c

 drivers/char/isicom.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/char/isicom.c +1 -1
diff -Nru a/drivers/char/isicom.c b/drivers/char/isicom.c
@@ -1905,7 +1905,7 @@
 		}
 	}	
 	
-	if (pci_present() && (card < BOARD_COUNT)) {
+	if (card < BOARD_COUNT) {
 		for (idx=0; idx < DEVID_COUNT; idx++) {
 			dev = NULL;
 			for (;;){
author
#9 lore raw

ChangeSet 1.1324, 2003/06/09 15:33:18-07:00, [email protected]

PCI: remove pci_present() from drivers/char/istallion.c

 drivers/char/istallion.c |    3 ---
 1 files changed, 3 deletions(-)
drivers/char/istallion.c +0 -3
diff -Nru a/drivers/char/istallion.c b/drivers/char/istallion.c
@@ -4670,9 +4670,6 @@
 	printk("stli_findpcibrds()\n");
 #endif
 
-	if (! pci_present())
-		return(0);
-
 	while ((dev = pci_find_device(PCI_VENDOR_ID_STALLION,
 	    PCI_DEVICE_ID_ECRA, dev))) {
 		if ((rc = stli_initpcibrd(BRD_ECPPCI, dev)))