PCI update for 2.6.3
Subsystems (3)
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()
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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -1,6 +1,8 @@/* -* msi.h +* File: msi.h * +* Copyright (C) 2003-2004 Intel +* Copyright (C) Tom Long Nguyen ([email protected]) */ #ifndef MSI_H
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
@@ -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); }/**
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
@@ -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/*
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..
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.hhave 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
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.hhave become datedI 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