Skip to contentSkip to conversation

PCI update for 2.6.3

PATCH New Greg KH 3 participants 8 messages Feb 20, 2004

Subsystems (3)
lore
Share & tools
lore

Greg KH

author
#0 lore raw

PATCH 1/1 PCI update for 2.6.3

Hi,

Here are some PCI and PCI hotplug patches for 2.6.3. The majority of these changes are 3 new pci hotplug drivers:
- ppc64 dynamic partition driver
- PCI Express hotplug driver
- SHPC hotplug driver (the "standard" pci hotplug driver.) Should work just fine on most x86-64 boxes too.

There are some other minor bug fixes in here, and the moving of the CONFIG_HOTPLUG declaration so that all archs can now use it.

Please pull from:

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

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.

 Documentation/MSI-HOWTO.txt            |   19 
 arch/alpha/Kconfig                     |   18 
 arch/arm/Kconfig                       |   36 
 arch/arm26/Kconfig                     |   18 
 arch/i386/Kconfig                      |   36 
 arch/ia64/Kconfig                      |   36 
 arch/m68knommu/Kconfig                 |   18 
 arch/mips/Kconfig                      |   18 
 arch/mips/pci/pci-cobalt.c             |    2 
 arch/ppc/Kconfig                       |   18 
 arch/ppc64/Kconfig                     |   18 
 arch/sh/Kconfig                        |   18 
 arch/sparc64/Kconfig                   |   18 
 arch/v850/Kconfig                      |   18 
 arch/x86_64/Kconfig                    |   36 
 drivers/net/gt96100eth.c               |    6 
 drivers/parisc/Kconfig                 |   18 
 drivers/pci/hotplug/Kconfig            |   90 
 drivers/pci/hotplug/Makefile           |   40 
 drivers/pci/hotplug/cpqphp_sysfs.c     |    4 
 drivers/pci/hotplug/pci_hotplug.h      |   21 
 drivers/pci/hotplug/pci_hotplug_core.c |    1 
 drivers/pci/hotplug/pciehp.h           |  386 ++++
 drivers/pci/hotplug/pciehp_core.c      |  707 +++++++
 drivers/pci/hotplug/pciehp_ctrl.c      | 2622 ++++++++++++++++++++++++++++
 drivers/pci/hotplug/pciehp_hpc.c       | 1436 +++++++++++++++
 drivers/pci/hotplug/pciehp_pci.c       |  834 +++++++++
 drivers/pci/hotplug/pciehp_sysfs.c     |  147 +
 drivers/pci/hotplug/pciehprm.h         |   53 
 drivers/pci/hotplug/pciehprm_acpi.c    | 1689 ++++++++++++++++++
 drivers/pci/hotplug/pciehprm_nonacpi.c |  498 +++++
 drivers/pci/hotplug/pciehprm_nonacpi.h |   56 
 drivers/pci/hotplug/rpadlpar.h         |   24 
 drivers/pci/hotplug/rpadlpar_core.c    |  343 +++
 drivers/pci/hotplug/rpadlpar_sysfs.c   |  151 +
 drivers/pci/hotplug/rpaphp.h           |  101 +
 drivers/pci/hotplug/rpaphp_core.c      |  948 ++++++++++
 drivers/pci/hotplug/rpaphp_pci.c       |   75 
 drivers/pci/hotplug/shpchp.h           |  467 +++++
 drivers/pci/hotplug/shpchp_core.c      |  704 +++++++
 drivers/pci/hotplug/shpchp_ctrl.c      | 3055 +++++++++++++++++++++++++++++++++
 drivers/pci/hotplug/shpchp_hpc.c       | 1608 +++++++++++++++++
 drivers/pci/hotplug/shpchp_pci.c       |  821 ++++++++
 drivers/pci/hotplug/shpchp_sysfs.c     |  147 +
 drivers/pci/hotplug/shpchprm.h         |   56 
 drivers/pci/hotplug/shpchprm_acpi.c    | 1694 ++++++++++++++++++
 drivers/pci/hotplug/shpchprm_legacy.c  |  474 +++++
 drivers/pci/hotplug/shpchprm_legacy.h  |  113 +
 drivers/pci/hotplug/shpchprm_nonacpi.c |  431 ++++
 drivers/pci/hotplug/shpchprm_nonacpi.h |   56 
 drivers/pci/msi.c                      |    6 
 drivers/pci/msi.h                      |    4 
 drivers/pci/pci.c                      |   94 -
 drivers/pci/quirks.c                   |    9 
 drivers/s390/Kconfig                   |   22 
 include/linux/pci.h                    |    2 
 include/linux/pci_ids.h                |   26 
 init/Kconfig                           |   19 
 58 files changed, 19946 insertions(+), 439 deletions(-)

-----

<lxiep:linux.ibm.com>:
o PCI Hotplug: Add PPC64 PCI Hotplug Driver for RPA

<martine.silbermann:hp.com>:
o PCI: update MSI Documentation

<tlnguyen:snoqualmie.dp.intel.com>:
o PCI: add copyright for files msi.c and msi.h

Adam Belay:
o PCI: remove unused defines in pci.h

Bartlomiej Zolnierkiewicz:
o move CONFIG_HOTPLUG to init/Kconfig

Dely Sy:
o PCI Hotplug: Add SHPC and PCI Express hot-plug drivers

Greg Kroah-Hartman:
o PCI Hotplug: fix build warnings on 64 bit processors
o PCI: fix pci quirk for P4B533-V, fixes bug 1720

John Rose:
o PCI Hotplug : add DLPAR driver for PPC64 PCI Hotplug slots

Mark A. Greer:
o PCI: Changing 'GALILEO' to 'MARVELL'

Matthew Wilcox:
o PCI: Fix pci_bus_find_capability()

author
#1 lore raw

PATCH 1/1 PCI update for 2.6.3

ChangeSet 1.1557.58.1, 2004/02/18 11:15:56-08:00, [email protected]

[PATCH] PCI: Changing 'GALILEO' to 'MARVELL'

I'm working with some Marvell components (formerly Galileo Technologies) and noticed that the entries in include/linux/pci_ids.h have become dated. I have attached a patch that changes 'GALILEO' to 'MARVELL', adds some more devices, and updates the uses of the macros in the code. Please note that the newer marvell parts start with 'MV' instead of 'GT' to represent the new name. Also, I didn't change all uses of galileo to marvell, only the macro in pci_ids.h.

 arch/mips/pci/pci-cobalt.c |    2 +-
 drivers/net/gt96100eth.c   |    6 +++---
 include/linux/pci_ids.h    |   13 ++++++++-----
 3 files changed, 12 insertions(+), 9 deletions(-)
arch/mips/pci/pci-cobalt.c +1 -1
diff -Nru a/arch/mips/pci/pci-cobalt.c b/arch/mips/pci/pci-cobalt.c
@@ -258,7 +258,7 @@
 	 qube_raq_via_bmIDE_fixup},
 	{PCI_FIXUP_HEADER, PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142,
 	 qube_raq_tulip_fixup},
-	{PCI_FIXUP_HEADER, PCI_VENDOR_ID_GALILEO, PCI_ANY_ID,
+	{PCI_FIXUP_HEADER, PCI_VENDOR_ID_MARVELL, PCI_ANY_ID,
 	 qube_raq_galileo_fixup},
 	{PCI_FIXUP_HEADER, PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C860,
 	 qube_raq_scsi_fixup},
drivers/net/gt96100eth.c +3 -3
diff -Nru a/drivers/net/gt96100eth.c b/drivers/net/gt96100eth.c
@@ -661,9 +661,9 @@
 	pcibios_read_config_word(0, 0, PCI_VENDOR_ID, &vendor_id);
 	pcibios_read_config_word(0, 0, PCI_DEVICE_ID, &device_id);
     
-	if (vendor_id != PCI_VENDOR_ID_GALILEO ||
-	    (device_id != PCI_DEVICE_ID_GALILEO_GT96100 &&
-	     device_id != PCI_DEVICE_ID_GALILEO_GT96100A)) {
+	if (vendor_id != PCI_VENDOR_ID_MARVELL ||
+	    (device_id != PCI_DEVICE_ID_MARVELL_GT96100 &&
+	     device_id != PCI_DEVICE_ID_MARVELL_GT96100A)) {
 		printk(KERN_ERR __FILE__ ": GT96100 not found!\n");
 		return -ENODEV;
 	}
include/linux/pci_ids.h +8 -5
diff -Nru a/include/linux/pci_ids.h b/include/linux/pci_ids.h
@@ -1422,11 +1422,14 @@
 #define PCI_SUBVENDOR_ID_KEYSPAN	0x11a9
 #define PCI_SUBDEVICE_ID_KEYSPAN_SX2	0x5334
 
-#define PCI_VENDOR_ID_GALILEO		0x11ab
-#define PCI_DEVICE_ID_GALILEO_GT64011	0x4146
-#define PCI_DEVICE_ID_GALILEO_GT64111	0x4146
-#define PCI_DEVICE_ID_GALILEO_GT96100	0x9652
-#define PCI_DEVICE_ID_GALILEO_GT96100A	0x9653
+#define PCI_VENDOR_ID_MARVELL		0x11ab
+#define PCI_DEVICE_ID_MARVELL_GT64011	0x4146
+#define PCI_DEVICE_ID_MARVELL_GT64111	0x4146
+#define PCI_DEVICE_ID_MARVELL_GT64260	0x6430
+#define PCI_DEVICE_ID_MARVELL_MV64360	0x6460
+#define PCI_DEVICE_ID_MARVELL_MV64460	0x6480
+#define PCI_DEVICE_ID_MARVELL_GT96100	0x9652
+#define PCI_DEVICE_ID_MARVELL_GT96100A	0x9653
 
 #define PCI_VENDOR_ID_LITEON		0x11ad
 #define PCI_DEVICE_ID_LITEON_LNE100TX	0x0002
author
#2 lore raw

ChangeSet 1.1557.58.2, 2004/02/18 11:16:10-08:00, [email protected]

[PATCH] PCI: add copyright for files msi.c and msi.h

First I would like to say sorry for not responding immediately after receiving your email mentioning Copyright. I have contacted Intel Legal for proper text upon receiving this email; but have not received any response. As a result of team discussion, the attached patch, based on Linux kernel 2.6.3-rc2, includes the Intel Copyright for files: msi.h and msi.c.

 drivers/pci/msi.c |    6 +++++-
 drivers/pci/msi.h |    4 +++-
 2 files changed, 8 insertions(+), 2 deletions(-)
drivers/pci/msi.c +5 -1
diff -Nru a/drivers/pci/msi.c b/drivers/pci/msi.c
@@ -1,5 +1,9 @@
 /*
- * linux/drivers/pci/msi.c
+ * File:	msi.c
+ * Purpose:	PCI Message Signaled Interrupt (MSI)
+ *
+ * Copyright (C) 2003-2004 Intel
+ * Copyright (C) Tom Long Nguyen ([email protected])
  */
 
 #include <linux/mm.h>
drivers/pci/msi.h +3 -1
diff -Nru a/drivers/pci/msi.h b/drivers/pci/msi.h
@@ -1,6 +1,8 @@
 /*
- *	msi.h
+ * File:	msi.h
  *
+ * Copyright (C) 2003-2004 Intel
+ * Copyright (C) Tom Long Nguyen ([email protected])
  */
 
 #ifndef MSI_H
author
#4 lore raw
In reply to Greg KH

ChangeSet 1.1557.58.4, 2004/02/18 11:40:45-08:00, [email protected]

[PATCH] PCI: remove unused defines in pci.h

It occured to me that we also have the following related code in pci.h:
Perhaps this should be removed as well?

 include/linux/pci.h |    2 --
 1 files changed, 2 deletions(-)
include/linux/pci.h +0 -2
diff -Nru a/include/linux/pci.h b/include/linux/pci.h
@@ -362,8 +362,6 @@
 #define PCI_DMA_NONE		3
 
 #define DEVICE_COUNT_COMPATIBLE	4
-#define DEVICE_COUNT_IRQ	2
-#define DEVICE_COUNT_DMA	2
 #define DEVICE_COUNT_RESOURCE	12
 
 /*
author
#3 lore raw
In reply to Greg KH

ChangeSet 1.1557.58.3, 2004/02/18 11:16:24-08:00, [email protected]

[PATCH] PCI: Fix pci_bus_find_capability()

pci_bus_find_capability() is currently broken. It checks the wrong device's hdr_type for being a cardbus bridge or not. This patch pulls the guts of pci_bus_find_capability() and pci_find_capability() into a new function __pci_bus_find_cap() and changes these two functions to call it.

 drivers/pci/pci.c |   94 +++++++++++++++++++++---------------------------------
 1 files changed, 38 insertions(+), 56 deletions(-)
drivers/pci/pci.c +38 -56
diff -Nru a/drivers/pci/pci.c b/drivers/pci/pci.c
@@ -67,6 +67,39 @@
 	return max;
 }
 
+static int __pci_bus_find_cap(struct pci_bus *bus, unsigned int devfn, u8 hdr_type, int cap)
+{
+	u16 status;
+	u8 pos, id;
+	int ttl = 48;
+
+	pci_bus_read_config_word(bus, devfn, PCI_STATUS, &status);
+	if (!(status & PCI_STATUS_CAP_LIST))
+		return 0;
+
+	switch (hdr_type) {
+	case PCI_HEADER_TYPE_NORMAL:
+	case PCI_HEADER_TYPE_BRIDGE:
+		pci_bus_read_config_byte(bus, devfn, PCI_CAPABILITY_LIST, &pos);
+		break;
+	case PCI_HEADER_TYPE_CARDBUS:
+		pci_bus_read_config_byte(bus, devfn, PCI_CB_CAPABILITY_LIST, &pos);
+		break;
+	default:
+		return 0;
+	}
+	while (ttl-- && pos >= 0x40) {
+		pos &= ~3;
+		pci_bus_read_config_byte(bus, devfn, pos + PCI_CAP_LIST_ID, &id);
+		if (id == 0xff)
+			break;
+		if (id == cap)
+			return pos;
+		pci_bus_read_config_byte(bus, devfn, pos + PCI_CAP_LIST_NEXT, &pos);
+	}
+	return 0;
+}
+
 /**
  * pci_find_capability - query for devices' capabilities 
  * @dev: PCI device to query
@@ -94,34 +127,7 @@
 int
 pci_find_capability(struct pci_dev *dev, int cap)
 {
-	u16 status;
-	u8 pos, id;
-	int ttl = 48;
-
-	pci_read_config_word(dev, PCI_STATUS, &status);
-	if (!(status & PCI_STATUS_CAP_LIST))
-		return 0;
-	switch (dev->hdr_type) {
-	case PCI_HEADER_TYPE_NORMAL:
-	case PCI_HEADER_TYPE_BRIDGE:
-		pci_read_config_byte(dev, PCI_CAPABILITY_LIST, &pos);
-		break;
-	case PCI_HEADER_TYPE_CARDBUS:
-		pci_read_config_byte(dev, PCI_CB_CAPABILITY_LIST, &pos);
-		break;
-	default:
-		return 0;
-	}
-	while (ttl-- && pos >= 0x40) {
-		pos &= ~3;
-		pci_read_config_byte(dev, pos + PCI_CAP_LIST_ID, &id);
-		if (id == 0xff)
-			break;
-		if (id == cap)
-			return pos;
-		pci_read_config_byte(dev, pos + PCI_CAP_LIST_NEXT, &pos);
-	}
-	return 0;
+	return __pci_bus_find_cap(dev->bus, dev->devfn, dev->hdr_type, cap);
 }
 
 /**
@@ -139,35 +145,11 @@
  */
 int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap)
 {
-	u16 status;
-	u8 pos, id;
-	int ttl = 48;
-	struct pci_dev *dev = bus->self;
+	u8 hdr_type;
 
-	pci_bus_read_config_word(bus, devfn, PCI_STATUS, &status);
-	if (!(status & PCI_STATUS_CAP_LIST))
-		return 0;
-	switch (dev->hdr_type) {
-	case PCI_HEADER_TYPE_NORMAL:
-	case PCI_HEADER_TYPE_BRIDGE:
-		pci_bus_read_config_byte(bus, devfn, PCI_CAPABILITY_LIST, &pos);
-		break;
-	case PCI_HEADER_TYPE_CARDBUS:
-		pci_bus_read_config_byte(bus, devfn, PCI_CB_CAPABILITY_LIST, &pos);
-		break;
-	default:
-		return 0;
-	}
-	while (ttl-- && pos >= 0x40) {
-		pos &= ~3;
-		pci_bus_read_config_byte(bus, devfn, pos + PCI_CAP_LIST_ID, &id);
-		if (id == 0xff)
-			break;
-		if (id == cap)
-			return pos;
-		pci_bus_read_config_byte(bus, devfn, pos + PCI_CAP_LIST_NEXT, &pos);
-	}
-	return 0;
+	pci_bus_read_config_byte(bus, devfn, PCI_HEADER_TYPE, &hdr_type);
+
+	return __pci_bus_find_cap(bus, devfn, hdr_type & 0x7f, cap);
 }
 
 /**
#5 lore raw
In reply to Greg KH

drivers/pci/msi.c line 2

Quoted 4 lines · Greg KH
drivers/pci/msi.c +1 -1
@@ -1,5 +1,9 @@
 /*
- * linux/drivers/pci/msi.c
+ * File:	msi.c

Please kill these silly comments. Everyone opening that file should better know what he's looking at..

author
#7 lore raw
In reply to Dave Jones
Quoted 11 lines · Dave Jones
Quoted 7 lines · Greg KH

ChangeSet 1.1557.58.1, 2004/02/18 11:15:56-08:00, [email protected]

[PATCH] PCI: Changing 'GALILEO' to 'MARVELL'

I'm working with some Marvell components (formerly Galileo Technologies) and noticed that the entries in include/linux/pci_ids.h have become dated

I just changed this at pciids.sf.net too, so the pci.ids in the kernel will get updated in the next update.

Nice, thanks for doing this.

greg k-h

#6 lore raw
In reply to Greg KH
Quoted 7 lines · Greg KH

ChangeSet 1.1557.58.1, 2004/02/18 11:15:56-08:00, [email protected]

[PATCH] PCI: Changing 'GALILEO' to 'MARVELL'

I'm working with some Marvell components (formerly Galileo Technologies) and noticed that the entries in include/linux/pci_ids.h have become dated

I just changed this at pciids.sf.net too, so the pci.ids in the kernel will get updated in the next update.

Dave