projects/linux·commit 6dd53aa4

Merge tag 'for-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci

6dd53aa4 · Linus Torvalds <[email protected]> · 2012-07-24 16:17:07 -07:00

Pull PCI changes from Bjorn Helgaas:
 "Host bridge hotplug:
    - Add MMCONFIG support for hot-added host bridges (Jiang Liu)
  Device hotplug:
    - Move fixups from __init to __devinit (Sebastian Andrzej Siewior)
    - Call FINAL fixups for hot-added devices, too (Myron Stowe)
    - Factor out generic code for P2P bridge hot-add (Yinghai Lu)
    - Remove all functions in a slot, not just those with _EJx (Amos
      Kong)
  Dynamic resource management:
    - Track bus number allocation (struct resource tree per domain)
      (Yinghai Lu)
    - Make P2P bridge 1K I/O windows work with resource reassignment
      (Bjorn Helgaas, Yinghai Lu)
    - Disable decoding while updating 64-bit BARs (Bjorn Helgaas)
  Power management:
    - Add PCIe runtime D3cold support (Huang Ying)
  Virtualization:
    - Add VFIO infrastructure (ACS, DMA source ID quirks) (Alex
      Williamson)
    - Add quirks for devices with broken INTx masking (Jan Kiszka)
  Miscellaneous:
    - Fix some PCI Express capability version issues (Myron Stowe)
    - Factor out some arch code with a weak, generic, pcibios_setup()
      (Myron Stowe)"

* tag 'for-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (122 commits)
  PCI: hotplug: ensure a consistent return value in error case
  PCI: fix undefined reference to 'pci_fixup_final_inited'
  PCI: build resource code for M68K architecture
  PCI: pciehp: remove unused pciehp_get_max_lnk_width(), pciehp_get_cur_lnk_width()
  PCI: reorder __pci_assign_resource() (no change)
  PCI: fix truncation of resource size to 32 bits
  PCI: acpiphp: merge acpiphp_debug and debug
  PCI: acpiphp: remove unused res_lock
  sparc/PCI: replace pci_cfg_fake_ranges() with pci_read_bridge_bases()
  PCI: call final fixups hot-added devices
  PCI: move final fixups from __init to __devinit
  x86/PCI: move final fixups from __init to __devinit
  MIPS/PCI: move final fixups from __init to __devinit
  PCI: support sizing P2P bridge I/O windows with 1K granularity
  PCI: reimplement P2P bridge 1K I/O windows (Intel P64H2)
  PCI: disable MEM decoding while updating 64-bit MEM BARs
  PCI: leave MEM and IO decoding disabled during 64-bit BAR sizing, too
  PCI: never discard enable/suspend/resume_early/resume fixups
  PCI: release temporary reference in __nv_msi_ht_cap_quirk()
  PCI: restructure 'pci_do_fixups()'
  ...
Commit
6dd53aa4563a2c69e80a24d2cc68d484b5ea2891
Parents
f14121ab · 63b96f7b

Merge commit. Changes below are compared with the first parent: f14121ab.

Changes

98 files changed · +1846 −1109

FileStatusAddDelContent
MAINTAINERSmodified+1−1View file
arch/alpha/kernel/pci.cmodified+4−13View file
arch/arm/kernel/bios32.cmodified+2−2View file
arch/cris/arch-v32/drivers/pci/bios.cmodified+0−5View file
arch/frv/mb93090-mb00/pci-vdk.cmodified+2−2View file
arch/ia64/pci/pci.cmodified+3−10View file
arch/microblaze/pci/pci-common.cmodified+2−7View file
arch/mips/pci/pci.cmodified+3−3View file
arch/mips/pmc-sierra/yosemite/ht.cmodified+0−11View file
arch/mips/txx9/generic/pci.cmodified+3−3View file
arch/parisc/kernel/pci.cmodified+0−5View file
arch/powerpc/include/asm/pci-bridge.hmodified+1−0View file
arch/powerpc/kernel/pci-common.cmodified+11−10View file
arch/powerpc/kernel/pci_64.cmodified+1−1View file
arch/powerpc/kernel/pci_of_scan.cmodified+1−1View file
arch/powerpc/platforms/85xx/tqm85xx.cmodified+1−1View file
arch/powerpc/platforms/86xx/gef_ppc9a.cmodified+1−1View file
arch/powerpc/platforms/86xx/gef_sbc310.cmodified+1−1View file
arch/powerpc/platforms/86xx/gef_sbc610.cmodified+1−1View file
arch/powerpc/platforms/powernv/pci-ioda.cmodified+4−4View file
arch/powerpc/platforms/pseries/pci_dlpar.cmodified+1−1View file
arch/powerpc/sysdev/mv64x60_pci.cmodified+1−1View file
arch/sh/drivers/pci/fixups-dreamcast.cmodified+1−1View file
arch/sh/drivers/pci/fixups-sdk7786.cmodified+2−2View file
arch/sh/drivers/pci/pci.cmodified+1−6View file
arch/sparc/kernel/leon_pci.cmodified+0−8View file
arch/sparc/kernel/pci.cmodified+6−96View file
arch/sparc/kernel/pci_impl.hmodified+1−0View file
arch/sparc/kernel/pcic.cmodified+0−13View file
arch/tile/kernel/pci.cmodified+6−13View file
arch/unicore32/kernel/pci.cmodified+1−1View file
arch/x86/include/asm/pci_x86.hmodified+7−0View file
arch/x86/kernel/quirks.cmodified+1−1View file
arch/x86/pci/acpi.cmodified+95−14View file
arch/x86/pci/amd_bus.cmodified+3−4View file
arch/x86/pci/bus_numa.cmodified+19−3View file
arch/x86/pci/bus_numa.hmodified+1−2View file
arch/x86/pci/common.cmodified+1−1View file
arch/x86/pci/mmconfig-shared.cmodified+248−124View file
arch/x86/pci/mmconfig_32.cmodified+27−3View file
arch/x86/pci/mmconfig_64.cmodified+37−15View file
arch/x86/pci/mrst.cmodified+1−1View file
arch/xtensa/kernel/pci.cmodified+1−7View file
drivers/acpi/pci_root.cmodified+2−0View file
drivers/acpi/sleep.cmodified+19−5View file
drivers/iommu/intel-iommu.cmodified+1−1View file
drivers/misc/cb710/core.cmodified+1−1View file
drivers/net/ethernet/broadcom/tg3.cmodified+2−2View file
drivers/parisc/dino.cmodified+11−5View file
drivers/parisc/iosapic.cmodified+1−1View file
drivers/parisc/lba_pci.cmodified+15−11View file
drivers/pci/Makefilemodified+1−0View file
drivers/pci/access.cmodified+4−2View file
drivers/pci/bus.cmodified+2−0View file
drivers/pci/hotplug-pci.cmodified+19−11View file
drivers/pci/hotplug/acpiphp.hmodified+1−3View file
drivers/pci/hotplug/acpiphp_core.cmodified+2−5View file
drivers/pci/hotplug/acpiphp_glue.cmodified+46−21View file
drivers/pci/hotplug/cpci_hotplug_core.cmodified+10−4View file
drivers/pci/hotplug/cpci_hotplug_pci.cmodified+6−29View file
drivers/pci/hotplug/cpqphp_core.cmodified+10−4View file
drivers/pci/hotplug/cpqphp_pci.cmodified+4−4View file
drivers/pci/hotplug/ibmphp_core.cmodified+4−4View file
drivers/pci/hotplug/pciehp.hmodified+0−4View file
drivers/pci/hotplug/pciehp_hpc.cmodified+0−101View file
drivers/pci/hotplug/pciehp_pci.cmodified+2−26View file
drivers/pci/hotplug/pcihp_skeleton.cmodified+10−4View file
drivers/pci/hotplug/sgi_hotplug.cmodified+5−7View file
drivers/pci/hotplug/shpchp_core.cmodified+10−4View file
drivers/pci/hotplug/shpchp_ctrl.cmodified+0−3View file
drivers/pci/hotplug/shpchp_pci.cmodified+15−30View file
drivers/pci/hotplug/shpchp_sysfs.cmodified+3−3View file
drivers/pci/iov.cmodified+2−2View file
drivers/pci/pci-acpi.cmodified+33−3View file
drivers/pci/pci-driver.cmodified+17−7View file
drivers/pci/pci-sysfs.cmodified+30−1View file
drivers/pci/pci.cmodified+291−133View file
drivers/pci/pci.hmodified+3−8View file
drivers/pci/pcie/aer/aerdrv_acpi.cmodified+1−1View file
drivers/pci/pcie/portdrv_pci.cmodified+60−0View file
drivers/pci/probe.cmodified+191−55View file
drivers/pci/quirks.cmodified+163−79View file
drivers/pci/remove.cmodified+1−0View file
drivers/pci/search.cmodified+2−0View file
drivers/pci/setup-bus.cmodified+44−21View file
drivers/pci/setup-res.cmodified+72−53View file
drivers/pcmcia/cardbus.cmodified+1−1View file
drivers/pcmcia/yenta_socket.cmodified+13−13View file
drivers/pnp/pnpacpi/core.cmodified+2−2View file
drivers/xen/xen-pciback/conf_space.cmodified+3−3View file
include/acpi/acnames.hmodified+1−0View file
include/acpi/acpi_bus.hmodified+4−3View file
include/linux/pci-acpi.hmodified+1−0View file
include/linux/pci.hmodified+72−10View file
include/linux/pci_regs.hmodified+109−13View file
include/linux/sfi_acpi.hmodified+2−2View file
kernel/resource.cmodified+8−5View file
scripts/mod/modpost.cmodified+11−0View file

Only the first 600 diff lines are shown. Download the complete patch.

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 8ae601c..cd8a3f6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5210,7 +5210,7 @@ PCI SUBSYSTEM
M: Bjorn Helgaas <[email protected]>
Q: http://patchwork.ozlabs.org/project/linux-pci/list/
-T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/linux.git
+T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
S: Supported
F: Documentation/PCI/
F: drivers/pci/

arch/alpha/kernel/pci.c

View file
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index 1a62963..9816d5a 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -59,15 +59,13 @@ struct pci_controller *pci_isa_hose;
* Quirks.
*/
-static void __init
-quirk_isa_bridge(struct pci_dev *dev)
+static void __devinit quirk_isa_bridge(struct pci_dev *dev)
{
dev->class = PCI_CLASS_BRIDGE_ISA << 8;
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_isa_bridge);
-static void __init
-quirk_cypress(struct pci_dev *dev)
+static void __devinit quirk_cypress(struct pci_dev *dev)
{
/* The Notorious Cy82C693 chip. */
@@ -106,8 +104,7 @@ quirk_cypress(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, quirk_cypress);
/* Called for each device after PCI setup is done. */
-static void __init
-pcibios_fixup_final(struct pci_dev *dev)
+static void __devinit pcibios_fixup_final(struct pci_dev *dev)
{
unsigned int class = dev->class >> 8;
@@ -198,12 +195,6 @@ pcibios_init(void)
subsys_initcall(pcibios_init);
-char * __devinit
-pcibios_setup(char *str)
-{
- return str;
-}
-
#ifdef ALPHA_RESTORE_SRM_SETUP
static struct pdev_srm_saved_conf *srm_saved_configs;
@@ -359,7 +350,7 @@ common_init_pci(void)
hose, &resources);
hose->bus = bus;
hose->need_domain_info = need_domain_info;
- next_busno = bus->subordinate + 1;
+ next_busno = bus->busn_res.end + 1;
/* Don't allow 8-bit bus number overflow inside the hose -
reserve some space for bridges. */
if (next_busno > 224) {

arch/arm/kernel/bios32.c

View file
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 2555250..2b2f25e 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -253,7 +253,7 @@ static void __devinit pci_fixup_cy82c693(struct pci_dev *dev)
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, pci_fixup_cy82c693);
-static void __init pci_fixup_it8152(struct pci_dev *dev)
+static void __devinit pci_fixup_it8152(struct pci_dev *dev)
{
int i;
/* fixup for ITE 8152 devices */
@@ -461,7 +461,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw, struct list_head *head)
if (!sys->bus)
panic("PCI: unable to scan bus!");
- busnr = sys->bus->subordinate + 1;
+ busnr = sys->bus->busn_res.end + 1;
list_add(&sys->node, head);
} else {

arch/cris/arch-v32/drivers/pci/bios.c

View file
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c
index bc0cfda..5b1ee82 100644
--- a/arch/cris/arch-v32/drivers/pci/bios.c
+++ b/arch/cris/arch-v32/drivers/pci/bios.c
@@ -6,11 +6,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *b)
{
}
-char * __devinit pcibios_setup(char *str)
-{
- return NULL;
-}
-
void pcibios_set_master(struct pci_dev *dev)
{
u8 lat;

arch/frv/mb93090-mb00/pci-vdk.c

View file
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
index 6b0b82f..d04ed14 100644
--- a/arch/frv/mb93090-mb00/pci-vdk.c
+++ b/arch/frv/mb93090-mb00/pci-vdk.c
@@ -268,7 +268,7 @@ static void __init pci_fixup_umc_ide(struct pci_dev *d)
d->resource[i].flags |= PCI_BASE_ADDRESS_SPACE_IO;
}
-static void __init pci_fixup_ide_bases(struct pci_dev *d)
+static void __devinit pci_fixup_ide_bases(struct pci_dev *d)
{
int i;
@@ -287,7 +287,7 @@ static void __init pci_fixup_ide_bases(struct pci_dev *d)
}
}
-static void __init pci_fixup_ide_trash(struct pci_dev *d)
+static void __devinit pci_fixup_ide_trash(struct pci_dev *d)
{
int i;

arch/ia64/pci/pci.c

View file
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 524df42..81acc7a 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -351,6 +351,8 @@ pci_acpi_scan_root(struct acpi_pci_root *root)
#endif
INIT_LIST_HEAD(&info.resources);
+ /* insert busn resource at first */
+ pci_add_resource(&info.resources, &root->secondary);
acpi_walk_resources(device->handle, METHOD_NAME__CRS, count_window,
&windows);
if (windows) {
@@ -384,7 +386,7 @@ pci_acpi_scan_root(struct acpi_pci_root *root)
return NULL;
}
- pbus->subordinate = pci_scan_child_bus(pbus);
+ pci_scan_child_bus(pbus);
return pbus;
out3:
@@ -496,15 +498,6 @@ pcibios_align_resource (void *data, const struct resource *res,
return res->start;
}
-/*
- * PCI BIOS setup, always defaults to SAL interface
- */
-char * __init
-pcibios_setup (char *str)
-{
- return str;
-}
-
int
pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
enum pci_mmap_state mmap_state, int write_combine)

arch/microblaze/pci/pci-common.c

View file
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index ca8f6e7..4dbb505 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
@@ -192,11 +192,6 @@ void pcibios_set_master(struct pci_dev *dev)
/* No special bus mastering setup handling */
}
-char __devinit *pcibios_setup(char *str)
-{
- return str;
-}
-
/*
* Reads the interrupt pin to determine if interrupt is use by card.
* If the interrupt is used, then gets the interrupt line from the
@@ -1504,10 +1499,10 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose)
pci_free_resource_list(&resources);
return;
}
- bus->secondary = hose->first_busno;
+ bus->busn_res.start = hose->first_busno;
hose->bus = bus;
- hose->last_busno = bus->subordinate;
+ hose->last_busno = bus->busn_res.end;
}
static int __init pcibios_init(void)

arch/mips/pci/pci.c

View file
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index 271e8c4..6903568 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -102,7 +102,7 @@ static void __devinit pcibios_scanbus(struct pci_controller *hose)
need_domain_info = need_domain_info || hose->index;
hose->need_domain_info = need_domain_info;
if (bus) {
- next_busno = bus->subordinate + 1;
+ next_busno = bus->busn_res.end + 1;
/* Don't allow 8-bit bus number overflow inside the hose -
reserve some space for bridges. */
if (next_busno > 224) {
@@ -348,9 +348,9 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
vma->vm_end - vma->vm_start, vma->vm_page_prot);
}
-char * (*pcibios_plat_setup)(char *str) __devinitdata;
+char * (*pcibios_plat_setup)(char *str) __initdata;
-char *__devinit pcibios_setup(char *str)
+char *__init pcibios_setup(char *str)
{
if (pcibios_plat_setup)
return pcibios_plat_setup(str);

arch/mips/pmc-sierra/yosemite/ht.c

View file
diff --git a/arch/mips/pmc-sierra/yosemite/ht.c b/arch/mips/pmc-sierra/yosemite/ht.c
index 63be40e..14dc9c8 100644
--- a/arch/mips/pmc-sierra/yosemite/ht.c
+++ b/arch/mips/pmc-sierra/yosemite/ht.c
@@ -395,17 +395,6 @@ void __init pcibios_init(void)
pci_scan_bus(3, &titan_pci_ops, NULL);
}
-/*
- * for parsing "pci=" kernel boot arguments.
- */
-char *pcibios_setup(char *str)
-{
- printk(KERN_INFO "rr: pcibios_setup\n");
- /* Nothing to do for now. */
-
- return str;
-}
-
unsigned __init int pcibios_assign_all_busses(void)
{
/* We want to use the PCI bus detection done by PMON */

arch/mips/txx9/generic/pci.c

View file
diff --git a/arch/mips/txx9/generic/pci.c b/arch/mips/txx9/generic/pci.c
index 64eb71b..125db32 100644
--- a/arch/mips/txx9/generic/pci.c
+++ b/arch/mips/txx9/generic/pci.c
@@ -256,7 +256,7 @@ static irqreturn_t i8259_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static int __init
+static int __devinit
txx9_i8259_irq_setup(int irq)
{
int err;
@@ -398,9 +398,9 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return txx9_board_vec->pci_map_irq(dev, slot, pin);
}
-char * (*txx9_board_pcibios_setup)(char *str) __devinitdata;
+char * (*txx9_board_pcibios_setup)(char *str) __initdata;
-char *__devinit txx9_pcibios_setup(char *str)
+char *__init txx9_pcibios_setup(char *str)
{
if (txx9_board_pcibios_setup && !txx9_board_pcibios_setup(str))
return NULL;

arch/parisc/kernel/pci.c

View file
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index 24644ac..6030905 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -139,11 +139,6 @@ void pcibios_fixup_bus(struct pci_bus *bus)
}
-char *pcibios_setup(char *str)
-{
- return str;
-}
-
/*
* Called by pci_set_master() - a driver interface.
*

arch/powerpc/include/asm/pci-bridge.h

View file
diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
index ac39e6a..8cccbee 100644
--- a/arch/powerpc/include/asm/pci-bridge.h
+++ b/arch/powerpc/include/asm/pci-bridge.h
@@ -30,6 +30,7 @@ struct pci_controller {
int first_busno;
int last_busno;
int self_busno;
+ struct resource busn;
void __iomem *io_base_virt;
#ifdef CONFIG_PPC64

arch/powerpc/kernel/pci-common.c

View file
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index edef9af..2aa04f2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -200,11 +200,6 @@ int pcibios_add_platform_entries(struct pci_dev *pdev)
return device_create_file(&pdev->dev, &dev_attr_devspec);
}
-char __devinit *pcibios_setup(char *str)
-{
- return str;
-}
-
/*
* Reads the interrupt pin to determine if interrupt is use by card.
* If the interrupt is used, then gets the interrupt line from the
@@ -1635,6 +1630,11 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
/* Wire up PHB bus resources */
pcibios_setup_phb_resources(hose, &resources);
+ hose->busn.start = hose->first_busno;
+ hose->busn.end = hose->last_busno;
+ hose->busn.flags = IORESOURCE_BUS;
+ pci_add_resource(&resources, &hose->busn);
+
/* Create an empty bus for the toplevel */
bus = pci_create_root_bus(hose->parent, hose->first_busno,
hose->ops, hose, &resources);
@@ -1651,13 +1651,14 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
if (node && ppc_md.pci_probe_mode)
mode = ppc_md.pci_probe_mode(bus);
pr_debug(" probe mode: %d\n", mode);
- if (mode == PCI_PROBE_DEVTREE) {
- bus->subordinate = hose->last_busno;
+ if (mode == PCI_PROBE_DEVTREE)
of_scan_bus(node, bus);
- }
- if (mode == PCI_PROBE_NORMAL)
- hose->last_busno = bus->subordinate = pci_scan_child_bus(bus);
+ if (mode == PCI_PROBE_NORMAL) {
+ pci_bus_update_busn_res_end(bus, 255);
+ hose->last_busno = pci_scan_child_bus(bus);
+ pci_bus_update_busn_res_end(bus, hose->last_busno);
+ }
/* Platform gets a chance to do some global fixups before
* we proceed to resource allocation

arch/powerpc/kernel/pci_64.c

View file
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 94a54f6..4ff190f 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -236,7 +236,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) {
bus = pci_bus_b(ln);
- if (in_bus >= bus->number && in_bus <= bus->subordinate)
+ if (in_bus >= bus->number && in_bus <= bus->busn_res.end)
break;
bus = NULL;
}

arch/powerpc/kernel/pci_of_scan.c

View file
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index d7dd42b..30378a1 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -239,7 +239,7 @@ void __devinit of_scan_pci_bridge(struct pci_dev *dev)
}
bus->primary = dev->bus->number;
- bus->subordinate = busrange[1];
+ pci_bus_insert_busn_res(bus, busrange[0], busrange[1]);
bus->bridge_ctl = 0;
/* parse ranges property */

arch/powerpc/platforms/85xx/tqm85xx.c

View file
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c
index 4d786c2..3e70a20 100644
--- a/arch/powerpc/platforms/85xx/tqm85xx.c
+++ b/arch/powerpc/platforms/85xx/tqm85xx.c
@@ -102,7 +102,7 @@ static void tqm85xx_show_cpuinfo(struct seq_file *m)
seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
}
-static void __init tqm85xx_ti1520_fixup(struct pci_dev *pdev)
+static void __devinit tqm85xx_ti1520_fixup(struct pci_dev *pdev)
{
unsigned int val;

arch/powerpc/platforms/86xx/gef_ppc9a.c

View file
diff --git a/arch/powerpc/platforms/86xx/gef_ppc9a.c b/arch/powerpc/platforms/86xx/gef_ppc9a.c
index 1fca663..563aafa 100644
--- a/arch/powerpc/platforms/86xx/gef_ppc9a.c
+++ b/arch/powerpc/platforms/86xx/gef_ppc9a.c
@@ -164,7 +164,7 @@ static void gef_ppc9a_show_cpuinfo(struct seq_file *m)
gef_ppc9a_get_vme_is_syscon() ? "yes" : "no");
}
-static void __init gef_ppc9a_nec_fixup(struct pci_dev *pdev)
+static void __devinit gef_ppc9a_nec_fixup(struct pci_dev *pdev)
{
unsigned int val;

arch/powerpc/platforms/86xx/gef_sbc310.c

View file
diff --git a/arch/powerpc/platforms/86xx/gef_sbc310.c b/arch/powerpc/platforms/86xx/gef_sbc310.c
index 14e0e57..cc6a91a 100644
--- a/arch/powerpc/platforms/86xx/gef_sbc310.c
+++ b/arch/powerpc/platforms/86xx/gef_sbc310.c
@@ -152,7 +152,7 @@ static void gef_sbc310_show_cpuinfo(struct seq_file *m)
}
-static void __init gef_sbc310_nec_fixup(struct pci_dev *pdev)
+static void __devinit gef_sbc310_nec_fixup(struct pci_dev *pdev)
{
unsigned int val;

arch/powerpc/platforms/86xx/gef_sbc610.c

View file
diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c
index 1638f43..aead6b3 100644
--- a/arch/powerpc/platforms/86xx/gef_sbc610.c
+++ b/arch/powerpc/platforms/86xx/gef_sbc610.c
@@ -141,7 +141,7 @@ static void gef_sbc610_show_cpuinfo(struct seq_file *m)
seq_printf(m, "SVR\t\t: 0x%x\n", svid);
}
-static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev)
+static void __devinit gef_sbc610_nec_fixup(struct pci_dev *pdev)
{
unsigned int val;

arch/powerpc/platforms/powernv/pci-ioda.c

View file
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index fbdd74d..9cda6a1 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -589,7 +589,7 @@ static int __devinit pnv_ioda_configure_pe(struct pnv_phb *phb,
dcomp = OPAL_IGNORE_RID_DEVICE_NUMBER;
fcomp = OPAL_IGNORE_RID_FUNCTION_NUMBER;
parent = pe->pbus->self;
- count = pe->pbus->subordinate - pe->pbus->secondary + 1;
+ count = pe->pbus->busn_res.end - pe->pbus->busn_res.start + 1;
switch(count) {
case 1: bcomp = OpalPciBusAll; break;
case 2: bcomp = OpalPciBus7Bits; break;
@@ -816,11 +816,11 @@ static void __devinit pnv_ioda_setup_bus_PE(struct pci_dev *dev,
pe->pdev = NULL;
pe->tce32_seg = -1;
pe->mve_number = -1;
- pe->rid = bus->secondary << 8;
+ pe->rid = bus->busn_res.start << 8;
pe->dma_weight = 0;
- pe_info(pe, "Secondary busses %d..%d associated with PE\n",
- bus->secondary, bus->subordinate);
+ pe_info(pe, "Secondary busses %pR associated with PE\n",
+ &bus->busn_res);
if (pnv_ioda_configure_pe(phb, pe)) {
/* XXX What do we do here ? */

arch/powerpc/platforms/pseries/pci_dlpar.c

View file
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index 8b7bafa..3ccebc8 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
@@ -121,7 +121,7 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
if (!num)
return;
pcibios_setup_bus_devices(bus);
- max = bus->secondary;
+ max = bus->busn_res.start;
for (pass=0; pass < 2; pass++)
list_for_each_entry(dev, &bus->devices, bus_list) {
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||

arch/powerpc/sysdev/mv64x60_pci.c

View file
diff --git a/arch/powerpc/sysdev/mv64x60_pci.c b/arch/powerpc/sysdev/mv64x60_pci.c
index b0037ce..364b14d 100644
--- a/arch/powerpc/sysdev/mv64x60_pci.c
+++ b/arch/powerpc/sysdev/mv64x60_pci.c
@@ -104,7 +104,7 @@ subsys_initcall(mv64x60_sysfs_init);
#endif /* CONFIG_SYSFS */
-static void __init mv64x60_pci_fixup_early(struct pci_dev *dev)
+static void __devinit mv64x60_pci_fixup_early(struct pci_dev *dev)
{
/*
* Set the host bridge hdr_type to an invalid value so that

arch/sh/drivers/pci/fixups-dreamcast.c

View file
diff --git a/arch/sh/drivers/pci/fixups-dreamcast.c b/arch/sh/drivers/pci/fixups-dreamcast.c
index edeea89..a5fe1b5 100644
--- a/arch/sh/drivers/pci/fixups-dreamcast.c
+++ b/arch/sh/drivers/pci/fixups-dreamcast.c
@@ -28,7 +28,7 @@
#include <asm/irq.h>
#include <mach/pci.h>
-static void __init gapspci_fixup_resources(struct pci_dev *dev)
+static void __devinit gapspci_fixup_resources(struct pci_dev *dev)
{
struct pci_channel *p = dev->sysdata;

arch/sh/drivers/pci/fixups-sdk7786.c

View file
diff --git a/arch/sh/drivers/pci/fixups-sdk7786.c b/arch/sh/drivers/pci/fixups-sdk7786.c
index 0e18ee3..36eb6fc 100644
--- a/arch/sh/drivers/pci/fixups-sdk7786.c
+++ b/arch/sh/drivers/pci/fixups-sdk7786.c
@@ -23,9 +23,9 @@
* Misconfigurations can be detected through the FPGA via the slot
* resistors to determine card presence. Hotplug remains unsupported.
*/
-static unsigned int slot4en __devinitdata;
+static unsigned int slot4en __initdata;
-char *__devinit pcibios_setup(char *str)
+char *__init pcibios_setup(char *str)
{
if (strcmp(str, "slot4en") == 0) {
slot4en = 1;

arch/sh/drivers/pci/pci.c

View file
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c
index 9d10a3c..40db2d0 100644
--- a/arch/sh/drivers/pci/pci.c
+++ b/arch/sh/drivers/pci/pci.c
@@ -59,7 +59,7 @@ static void __devinit pcibios_scanbus(struct pci_channel *hose)
need_domain_info = need_domain_info || hose->index;
hose->need_domain_info = need_domain_info;
if (bus) {
- next_busno = bus->subordinate + 1;
+ next_busno = bus->busn_res.end + 1;
/* Don't allow 8-bit bus number overflow inside the hose -
reserve some space for bridges. */
if (next_busno > 224) {
@@ -197,11 +197,6 @@ void __init pcibios_update_irq(struct pci_dev *dev, int irq)
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
}
-char * __devinit __weak pcibios_setup(char *str)
-{
- return str;
-}
-
static void __init
pcibios_bus_report_status_early(struct pci_channel *hose,
int top_bus, int current_bus,

arch/sparc/kernel/leon_pci.c

View file
diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c
index 19f5605..21dcda7 100644
--- a/arch/sparc/kernel/leon_pci.c
+++ b/arch/sparc/kernel/leon_pci.c
@@ -91,14 +91,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *pbus)
}
}
-/*
- * Other archs parse arguments here.
- */
-char * __devinit pcibios_setup(char *str)
-{
- return str;
-}
-
resource_size_t pcibios_align_resource(void *data, const struct resource *res,
resource_size_t size, resource_size_t align)
{

arch/sparc/kernel/pci.c

View file
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index fdaf218..065b88c 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -375,93 +375,6 @@ static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p)
*last_p = last;
}
-/* For PCI bus devices which lack a 'ranges' property we interrogate
- * the config space values to set the resources, just like the generic
- * Linux PCI probing code does.
- */
-static void __devinit pci_cfg_fake_ranges(struct pci_dev *dev,
- struct pci_bus *bus,
- struct pci_pbm_info *pbm)
-{
- struct pci_bus_region region;
- struct resource *res, res2;
- u8 io_base_lo, io_limit_lo;
- u16 mem_base_lo, mem_limit_lo;
- unsigned long base, limit;
-
- pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
- pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
- base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
- limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
-
- if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
- u16 io_base_hi, io_limit_hi;
-
- pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
- pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
- base |= (io_base_hi << 16);
- limit |= (io_limit_hi << 16);
- }
-
- res = bus->resource[0];
- if (base <= limit) {
- res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
- res2.flags = res->flags;
- region.start = base;
- region.end = limit + 0xfff;
- pcibios_bus_to_resource(dev, &res2, &region);
- if (!res->start)
- res->start = res2.start;
- if (!res->end)
- res->end = res2.end;
- }
-
- pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
- pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
- base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
- limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;

This diff is incomplete. Download the complete patch.

arch/sparc/kernel/pci_impl.h

View file

This diff is incomplete. Download the complete patch.

arch/sparc/kernel/pcic.c

View file

This diff is incomplete. Download the complete patch.

arch/tile/kernel/pci.c

View file

This diff is incomplete. Download the complete patch.

arch/unicore32/kernel/pci.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/asm/pci_x86.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/quirks.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/acpi.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/amd_bus.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/bus_numa.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/bus_numa.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/common.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/mmconfig-shared.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/mmconfig_32.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/mmconfig_64.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/pci/mrst.c

View file

This diff is incomplete. Download the complete patch.

arch/xtensa/kernel/pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/acpi/pci_root.c

View file

This diff is incomplete. Download the complete patch.

drivers/acpi/sleep.c

View file

This diff is incomplete. Download the complete patch.

drivers/iommu/intel-iommu.c

View file

This diff is incomplete. Download the complete patch.

drivers/misc/cb710/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/broadcom/tg3.c

View file

This diff is incomplete. Download the complete patch.

drivers/parisc/dino.c

View file

This diff is incomplete. Download the complete patch.

drivers/parisc/iosapic.c

View file

This diff is incomplete. Download the complete patch.

drivers/parisc/lba_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/pci/access.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug-pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/acpiphp.h

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/acpiphp_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/acpiphp_glue.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/cpci_hotplug_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/cpci_hotplug_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/cpqphp_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/cpqphp_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/ibmphp_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/pciehp.h

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/pciehp_hpc.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/pciehp_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/pcihp_skeleton.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/sgi_hotplug.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/shpchp_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/shpchp_ctrl.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/shpchp_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/shpchp_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/iov.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pci-acpi.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pci-driver.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pci-sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pci.h

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pcie/aer/aerdrv_acpi.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/pcie/portdrv_pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/probe.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/quirks.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/remove.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/search.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/setup-bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/setup-res.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/cardbus.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/yenta_socket.c

View file

This diff is incomplete. Download the complete patch.

drivers/pnp/pnpacpi/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/xen/xen-pciback/conf_space.c

View file

This diff is incomplete. Download the complete patch.

include/acpi/acnames.h

View file

This diff is incomplete. Download the complete patch.

include/acpi/acpi_bus.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pci-acpi.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pci.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pci_regs.h

View file

This diff is incomplete. Download the complete patch.

include/linux/sfi_acpi.h

View file

This diff is incomplete. Download the complete patch.

kernel/resource.c

View file

This diff is incomplete. Download the complete patch.

scripts/mod/modpost.c

View file

This diff is incomplete. Download the complete patch.