Pull PCI fixes from Bjorn Helgaas: "Here are some fixes for v4.0. I apologize for how late they are. We were hoping for some better fixes, but couldn't get them polished in time. These fix: - a Xen domU oops with PCI passthrough devices - a sparc T5 boot failure - a STM SPEAr13xx crash (use after initdata freed) - a cpcihp hotplug driver thinko - an AER thinko that printed stack junk Details: Enumeration - Don't look for ACPI hotplug parameters if ACPI is disabled (Bjorn Helgaas) Resource management - Revert "sparc/PCI: Clip bridge windows to fit in upstream windows" (Bjorn Helgaas) AER - Avoid info leak in __print_tlp_header() (Rasmus Villemoes) PCI device hotplug - Add missing curly braces in cpci_configure_slot() (Dan Carpenter) ST Microelectronics SPEAr13xx host bridge driver - Drop __initdata from spear13xx_pcie_driver (Matwey V. Kornilov) * tag 'pci-v4.0-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: Revert "sparc/PCI: Clip bridge windows to fit in upstream windows" PCI: Don't look for ACPI hotplug parameters if ACPI is disabled PCI: cpcihp: Add missing curly braces in cpci_configure_slot() PCI/AER: Avoid info leak in __print_tlp_header() PCI: spear: Drop __initdata from spear13xx_pcie_driver
Unified · Split
| @@ -639,10 +639,7 @@ static void pci_claim_bus_resources(struct pci_bus *bus) · 638 unmodified lines | |||
| 639 | (unsigned long long)r->end, | 639 | (unsigned long long)r->end, |
| 640 | (unsigned int)r->flags); | 640 | (unsigned int)r->flags); |
| 641 | 641 | ||
| 642 | if (pci_claim_resource(dev, i) == 0) | 642 | pci_claim_resource(dev, i); |
| 643 | continue; | ||
| 644 | |||
| 645 | pci_claim_bridge_resource(dev, i); | ||
| 646 | } | 643 | } |
| 647 | } | 644 | } |
| 648 | 645 | ||
| @@ -342,7 +342,7 @@ static const struct irq_domain_ops msi_domain_ops = { · 341 unmodified lines | |||
| 342 | .map = dw_pcie_msi_map, | 342 | .map = dw_pcie_msi_map, |
| 343 | }; | 343 | }; |
| 344 | 344 | ||
| 345 | int __init dw_pcie_host_init(struct pcie_port *pp) | 345 | int dw_pcie_host_init(struct pcie_port *pp) |
| 346 | { | 346 | { |
| 347 | struct device_node *np = pp->dev->of_node; | 347 | struct device_node *np = pp->dev->of_node; |
| 348 | struct platform_device *pdev = to_platform_device(pp->dev); | 348 | struct platform_device *pdev = to_platform_device(pp->dev); |
| @@ -269,7 +269,7 @@ static struct pcie_host_ops spear13xx_pcie_host_ops = { · 268 unmodified lines | |||
| 269 | .host_init = spear13xx_pcie_host_init, | 269 | .host_init = spear13xx_pcie_host_init, |
| 270 | }; | 270 | }; |
| 271 | 271 | ||
| 272 | static int __init spear13xx_add_pcie_port(struct pcie_port *pp, | 272 | static int spear13xx_add_pcie_port(struct pcie_port *pp, |
| 273 | struct platform_device *pdev) | 273 | struct platform_device *pdev) |
| 274 | { | 274 | { |
| 275 | struct device *dev = &pdev->dev; | 275 | struct device *dev = &pdev->dev; |
| @@ -299,7 +299,7 @@ static int __init spear13xx_add_pcie_port(struct pcie_port *pp, · 23 unmodified lines | |||
| 299 | return 0; | 299 | return 0; |
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | static int __init spear13xx_pcie_probe(struct platform_device *pdev) | 302 | static int spear13xx_pcie_probe(struct platform_device *pdev) |
| 303 | { | 303 | { |
| 304 | struct spear13xx_pcie *spear13xx_pcie; | 304 | struct spear13xx_pcie *spear13xx_pcie; |
| 305 | struct pcie_port *pp; | 305 | struct pcie_port *pp; |
| @@ -370,7 +370,7 @@ static const struct of_device_id spear13xx_pcie_of_match[] = { · 64 unmodified lines | |||
| 370 | }; | 370 | }; |
| 371 | MODULE_DEVICE_TABLE(of, spear13xx_pcie_of_match); | 371 | MODULE_DEVICE_TABLE(of, spear13xx_pcie_of_match); |
| 372 | 372 | ||
| 373 | static struct platform_driver spear13xx_pcie_driver __initdata = { | 373 | static struct platform_driver spear13xx_pcie_driver = { |
| 374 | .probe = spear13xx_pcie_probe, | 374 | .probe = spear13xx_pcie_probe, |
| 375 | .driver = { | 375 | .driver = { |
| 376 | .name = "spear-pcie", | 376 | .name = "spear-pcie", |
| @@ -286,11 +286,12 @@ int cpci_configure_slot(struct slot *slot) · 285 unmodified lines | |||
| 286 | } | 286 | } |
| 287 | parent = slot->dev->bus; | 287 | parent = slot->dev->bus; |
| 288 | 288 | ||
| 289 | list_for_each_entry(dev, &parent->devices, bus_list) | 289 | list_for_each_entry(dev, &parent->devices, bus_list) { |
| 290 | if (PCI_SLOT(dev->devfn) != PCI_SLOT(slot->devfn)) | 290 | if (PCI_SLOT(dev->devfn) != PCI_SLOT(slot->devfn)) |
| 291 | continue; | 291 | continue; |
| 292 | if (pci_is_bridge(dev)) | 292 | if (pci_is_bridge(dev)) |
| 293 | pci_hp_add_bridge(dev); | 293 | pci_hp_add_bridge(dev); |
| 294 | } | ||
| 294 | 295 | ||
| 295 | 296 | ||
| 296 | pci_assign_unassigned_bridge_resources(parent->self); | 297 | pci_assign_unassigned_bridge_resources(parent->self); |
| @@ -248,6 +248,9 @@ int pci_get_hp_params(struct pci_dev *dev, struct hotplug_params *hpp) · 247 unmodified lines | |||
| 248 | acpi_handle handle, phandle; | 248 | acpi_handle handle, phandle; |
| 249 | struct pci_bus *pbus; | 249 | struct pci_bus *pbus; |
| 250 | 250 | ||
| 251 | if (acpi_pci_disabled) | ||
| 252 | return -ENODEV; | ||
| 253 | |||
| 251 | handle = NULL; | 254 | handle = NULL; |
| 252 | for (pbus = dev->bus; pbus; pbus = pbus->parent) { | 255 | for (pbus = dev->bus; pbus; pbus = pbus->parent) { |
| 253 | handle = acpi_pci_get_bridge_handle(pbus); | 256 | handle = acpi_pci_get_bridge_handle(pbus); |
| @@ -132,16 +132,8 @@ static const char *aer_agent_string[] = { · 131 unmodified lines | |||
| 132 | static void __print_tlp_header(struct pci_dev *dev, | 132 | static void __print_tlp_header(struct pci_dev *dev, |
| 133 | struct aer_header_log_regs *t) | 133 | struct aer_header_log_regs *t) |
| 134 | { | 134 | { |
| 135 | unsigned char *tlp = (unsigned char *)&t; | 135 | dev_err(&dev->dev, " TLP Header: %08x %08x %08x %08x\n", |
| 136 | 136 | t->dw0, t->dw1, t->dw2, t->dw3); | |
| 137 | dev_err(&dev->dev, " TLP Header:" | ||
| 138 | " %02x%02x%02x%02x %02x%02x%02x%02x" | ||
| 139 | " %02x%02x%02x%02x %02x%02x%02x%02x\n", | ||
| 140 | *(tlp + 3), *(tlp + 2), *(tlp + 1), *tlp, | ||
| 141 | *(tlp + 7), *(tlp + 6), *(tlp + 5), *(tlp + 4), | ||
| 142 | *(tlp + 11), *(tlp + 10), *(tlp + 9), | ||
| 143 | *(tlp + 8), *(tlp + 15), *(tlp + 14), | ||
| 144 | *(tlp + 13), *(tlp + 12)); | ||
| 145 | } | 137 | } |
| 146 | 138 | ||
| 147 | static void __aer_print_error(struct pci_dev *dev, | 139 | static void __aer_print_error(struct pci_dev *dev, |