02 Aug, 2016

19 commits

  • * pci/demodularize-hosts:
    PCI: xgene: Make explicitly non-modular
    PCI: thunder-pem: Make explicitly non-modular
    PCI: thunder-ecam: Make explicitly non-modular
    PCI: tegra: Make explicitly non-modular
    PCI: rcar-gen2: Make explicitly non-modular
    PCI: rcar: Make explicitly non-modular
    PCI: mvebu: Make explicitly non-modular
    PCI: layerscape: Make explicitly non-modular
    PCI: keystone: Make explicitly non-modular
    PCI: hisi: Make explicitly non-modular
    PCI: generic: Make explicitly non-modular
    PCI: designware-plat: Make it explicitly non-modular
    PCI: artpec6: Make explicitly non-modular
    PCI: armada8k: Make explicitly non-modular
    PCI: artpec: Add PCI_MSI_IRQ_DOMAIN dependency
    PCI: artpec: Add Axis ARTPEC-6 PCIe controller driver
    PCI: Add DT binding for Axis ARTPEC-6 PCIe controller
    PCI: generic: Select IRQ_DOMAIN

    * pci/host-request-windows:
    PCI: versatile: Simplify host bridge window iteration
    PCI: versatile: Request host bridge window resources with core function
    PCI: tegra: Request host bridge window resources with core function
    PCI: tegra: Remove top-level resource from hierarchy
    PCI: rcar: Simplify host bridge window iteration
    PCI: rcar: Request host bridge window resources with core function
    PCI: rcar Gen2: Request host bridge window resources
    PCI: rcar: Drop gen2 dummy I/O port region
    ARM: Make PCI I/O space optional
    PCI: mvebu: Request host bridge window resources with core function
    PCI: generic: Simplify host bridge window iteration
    PCI: generic: Request host bridge window resources with core function
    PCI: altera: Simplify host bridge window iteration
    PCI: altera: Request host bridge window resources with core function
    PCI: xilinx-nwl: Use dev_printk() when possible
    PCI: xilinx-nwl: Request host bridge window resources
    PCI: xilinx-nwl: Free bridge resource list on failure
    PCI: xilinx: Request host bridge window resources
    PCI: xilinx: Free bridge resource list on failure
    PCI: xgene: Request host bridge window resources
    PCI: xgene: Free bridge resource list on failure
    PCI: iproc: Request host bridge window resources
    PCI: designware: Simplify host bridge window iteration
    PCI: designware: Request host bridge window resources
    PCI: designware: Free bridge resource list on failure
    PCI: Add devm_request_pci_bus_resources()

    Bjorn Helgaas
     
  • * pci/resource:
    unicore32/PCI: Remove pci=firmware command line parameter handling
    ARM/PCI: Remove arch-specific pcibios_enable_device()
    ARM64/PCI: Remove arch-specific pcibios_enable_device()
    MIPS/PCI: Claim bus resources on PCI_PROBE_ONLY set-ups
    ARM/PCI: Claim bus resources on PCI_PROBE_ONLY set-ups
    PCI: generic: Claim bus resources on PCI_PROBE_ONLY set-ups
    PCI: Add generic pci_bus_claim_resources()
    alx: Use pci_(request|release)_mem_regions
    ethernet/intel: Use pci_(request|release)_mem_regions
    GenWQE: Use pci_(request|release)_mem_regions
    lpfc: Use pci_(request|release)_mem_regions
    NVMe: Use pci_(request|release)_mem_regions
    PCI: Add helpers to request/release memory and I/O regions
    PCI: Extending pci=resource_alignment to specify device/vendor IDs
    sparc/PCI: Implement pci_resource_to_user() with pcibios_resource_to_bus()
    powerpc/pci: Implement pci_resource_to_user() with pcibios_resource_to_bus()
    microblaze/PCI: Implement pci_resource_to_user() with pcibios_resource_to_bus()
    PCI: Unify pci_resource_to_user() declarations
    microblaze/PCI: Remove useless __pci_mmap_set_pgprot()
    powerpc/pci: Remove __pci_mmap_set_pgprot()
    PCI: Ignore write combining when mapping I/O port space

    Bjorn Helgaas
     
  • …/pm' and 'pci/virtualization' into next

    * pci/aspm:
    PCI/ASPM: Remove redundant check of pcie_set_clkpm

    * pci/dpc:
    PCI: Remove DPC tristate module option
    PCI: Bind DPC to Root Ports as well as Downstream Ports
    PCI: Fix whitespace in struct dpc_dev
    PCI: Convert Downstream Port Containment driver to use devm_* functions

    * pci/hotplug:
    PCI: Allow additional bus numbers for hotplug bridges

    * pci/misc:
    PCI: Include <asm/dma.h> for isa_dma_bridge_buggy
    PCI: Make bus_attr_resource_alignment static
    MAINTAINERS: Add file patterns for PCI device tree bindings
    PCI: Fix comment typo

    * pci/msi:
    PCI/MSI: irqchip: Fix PCI_MSI dependencies

    * pci/pm:
    PCI: pciehp: Ignore interrupts during D3cold
    PCI: Document connection between pci_power_t and hardware PM capability
    PCI: Add runtime PM support for PCIe ports
    ACPI / hotplug / PCI: Runtime resume bridge before rescan
    PCI: Power on bridges before scanning new devices
    PCI: Put PCIe ports into D3 during suspend
    PCI: Don't clear d3cold_allowed for PCIe ports
    PCI / PM: Enforce type casting for pci_power_t

    * pci/virtualization:
    PCI: Add ACS quirk for Solarflare SFC9220
    PCI: Add DMA alias quirk for Adaptec 3805
    PCI: Mark Atheros AR9485 and QCA9882 to avoid bus reset
    PCI: Add function 1 DMA alias quirk for Marvell 88SE9182

    Bjorn Helgaas
     
  • * pci/arm64-acpi:
    ARM64: PCI: Support ACPI-based PCI host controller
    ARM64: PCI: Implement AML accessors for PCI_Config region
    ARM64: PCI: ACPI support for legacy IRQs parsing and consolidation with DT code
    ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
    PCI: Factor DT-specific pci_bus_find_domain_nr() code out
    PCI: Refactor pci_bus_assign_domain_nr() for CONFIG_PCI_DOMAINS_GENERIC
    PCI/ACPI: Add generic MCFG table handling
    PCI/ACPI: Support I/O resources when parsing host bridge resources
    PCI: Add pci_unmap_iospace() to unmap I/O resources
    PCI: Add parent device field to ECAM struct pci_config_window
    PCI: Move ecam.h to linux/include/pci-ecam.h

    Bjorn Helgaas
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_XGENE
    drivers/pci/host/Kconfig: bool "X-Gene PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Tanmay Inamdar

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_HOST_THUNDER_PEM
    drivers/pci/host/Kconfig: bool "Cavium Thunder PCIe controller to off-chip devices"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: David Daney

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_HOST_THUNDER_ECAM
    drivers/pci/host/Kconfig: bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: David Daney

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_TEGRA
    drivers/pci/host/Kconfig: bool "NVIDIA Tegra PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Thierry Reding
    CC: Stephen Warren
    CC: Alexandre Courbot
    CC: linux-tegra@vger.kernel.org

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_RCAR_GEN2
    drivers/pci/host/Kconfig: bool "Renesas R-Car Gen2 Internal PCI controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog, remove "Module" from author comment]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Acked-by: Simon Horman
    Acked-by: Phil Edworthy
    CC: Valentine Barshak

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_RCAR_GEN2_PCIE
    drivers/pci/host/Kconfig: bool "Renesas R-Car PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog, remove "Module" from author comment]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Acked-by: Simon Horman
    Acked-by: Phil Edworthy

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_MVEBU
    drivers/pci/host/Kconfig: bool "Marvell EBU PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog, remove "Module" from author comment]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Thomas Petazzoni
    CC: Jason Cooper

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_LAYERSCAPE
    drivers/pci/host/Kconfig: bool "Freescale Layerscape PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Minghuan Lian
    CC: Mingkai Hu
    CC: Roy Zang

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_KEYSTONE
    drivers/pci/host/Kconfig: bool "TI Keystone PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Tested-By: Murali Karicheri

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    host/Kconfig:config PCI_HISI
    host/Kconfig: bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Zhou Wang
    CC: Dacai Zhu
    CC: Gabriele Paoloni

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCI_HOST_GENERIC
    drivers/pci/host/Kconfig: bool "Generic PCI host controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Acked-by: Will Deacon

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCIE_DW_PLAT
    drivers/pci/host/Kconfig: bool "Platform bus based DesignWare PCIe Controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    Acked-by: Joao Pinto
    CC: Jingoo Han
    CC: Pratyush Anand

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCIE_ARTPEC6
    drivers/pci/host/Kconfig: bool "Axis ARTPEC-6 PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog, add "Author" comment]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Niklas Cassel
    CC: Jesper Nilsson

    Paul Gortmaker
     
  • This code is not being built as a module by anyone:

    drivers/pci/host/Kconfig:config PCIE_ARMADA_8K
    drivers/pci/host/Kconfig: bool "Marvell Armada-8K PCIe controller"

    Remove uses of MODULE_DESCRIPTION(), MODULE_AUTHOR(), MODULE_LICENSE(),
    etc., so that when reading the driver there is no doubt it is builtin-only.
    The information is preserved in comments at the top of the file.

    Replace module_platform_driver() with builtin_platform_driver(), which uses
    the same init level priority, so init ordering is unchanged.

    Note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

    [bhelgaas: changelog]
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Bjorn Helgaas
    CC: Thomas Petazzoni

    Paul Gortmaker
     
  • * pci/host-artpec:
    PCI: artpec: Add PCI_MSI_IRQ_DOMAIN dependency
    PCI: artpec: Add Axis ARTPEC-6 PCIe controller driver
    PCI: Add DT binding for Axis ARTPEC-6 PCIe controller

    * pci/host-generic:
    PCI: generic: Select IRQ_DOMAIN

    Bjorn Helgaas
     

30 Jul, 2016

2 commits

  • The DesignWare PCIe driver requires MSI support, so we get a warning for
    the artpec6 glue driver if that is not enabled:

    warning: (PCIE_ARTPEC6) selects PCIE_DW which has unmet direct dependencies (PCI && PCI_MSI_IRQ_DOMAIN)

    Add the same dependency that all other such drivers have.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Bjorn Helgaas
    Acked-by: Niklas Cassel

    Arnd Bergmann
     
  • The Solarflare SFC9220 apparently lacks an ACS capability, but does not
    perform peer-to-peer between functions. Add a quirk so we know about this
    isolation.

    [bhelgaas: changelog]
    Signed-off-by: Edward Cree
    Signed-off-by: Bjorn Helgaas

    Edward Cree
     

26 Jul, 2016

3 commits

  • A user may hot add a switch requiring more than one bus to enumerate. This
    previously required a system reboot if BIOS did not sufficiently pad the
    bus resource, which they frequently don't do.

    Add a kernel parameter so a user can specify the minimum number of bus
    numbers to reserve for a hotplug bridge's subordinate buses so rebooting
    won't be necessary.

    The default is 1, which is equivalent to previous behavior.

    Signed-off-by: Keith Busch
    Signed-off-by: Bjorn Helgaas

    Keith Busch
     
  • Change the Downstream Port Containment config type from tristate to bool.

    The driver doesn't automatically load based on any rules, so it needs to be
    built-in in order to bind to devices it needs to drive.

    Signed-off-by: Keith Busch
    Signed-off-by: Bjorn Helgaas

    Keith Busch
     
  • PCIe port type values are not flags, so OR'ing them is not correct.
    Previously the result was equivalent to PCIe Downstream Ports, so we were
    missing binding to DPC-capable Root Ports.

    Change the type to 'any' so we can bind to both port types. While this
    will cause the code to check Upstream Ports, the driver won't claim them
    since they are not DPC-capable.

    Reported-by: Alexander Antonov
    Signed-off-by: Keith Busch
    Signed-off-by: Bjorn Helgaas
    CC: Mika Westerberg

    Keith Busch
     

20 Jul, 2016

2 commits

  • Add a DMA alias quirk for the Adaptec 3805, just like the 3405 quirk added
    in commit d3d2ab43ddae ("PCI: Add DMA alias quirk for Adaptec 3405").

    Link: https://www.redhat.com/archives/vfio-users/2016-July/msg00046.html
    Signed-off-by: Alex Williamson
    Signed-off-by: Bjorn Helgaas

    Alex Williamson
     
  • At least on arm, does not get included when building
    drivers/pci/pci.o. This causes the following build warning which can be
    fixed by including :

    drivers/pci/pci.c:37:5: warning: symbol 'isa_dma_bridge_buggy' was not declared. Should it be static?

    Signed-off-by: Ben Dooks
    Signed-off-by: Bjorn Helgaas

    Ben Dooks
     

25 Jun, 2016

8 commits

  • The switch is the only statement in the resource_list_for_each_entry()
    loop, so remove unnecessary "continue" statements in the switch. Simplify
    checking for the required non-prefetchable memory aperture.

    No functional change intended.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Use devm_request_pci_bus_resources() to request host bridge window
    resources instead of doing it by hand in the driver.

    No functional change intended.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Use devm_request_pci_bus_resources() to request host bridge window
    resources instead of doing it by hand in the driver.

    No functional change intended.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • 41534e53786d ("PCI: tegra: Implement a proper resource hierarchy") did two
    things:

    1) It added a top-level resource that encloses all resources declared in
    the DT description, including registers and bridge apertures, and

    2) It requested the bridge apertures, which means the PCI core can track
    the resources used by PCI devices below the bridge.

    The latter is necessary, but the former is questionable because there's no
    guarantee that the bridge registers and the apertures are contiguous. In
    this example:

    # cat /proc/iomem
    00000000-3fffffff : /pcie-controller@00003000
    00000000-00000fff : /pcie-controller@00003000/pci@1,0
    00003000-000037ff : pads
    00003800-000039ff : afi
    10000000-1fffffff : cs

    the resource tree claims that [mem 0x00003a00-0x0fffffff] is consumed by
    /pcie-controller@00003000, but it's not mentioned in the DT, and it might
    actually be used by other devices.

    Remove the top-level resource so we don't claim more than the device
    actually consumes.

    This reintroduces the problem that we can't match the resources, e.g.,
    "pads", "afi", "cs", etc., to the DT device. I think this should be solved
    by having the DT core request all resources of all devices in the DT (it
    does not do that today). If a driver claims the device, it can request the
    resources it uses. For example:

    # cat /proc/iomem
    00000000-00000fff : /pcie-controller@00003000
    00000000-00000fff : /pcie-controller@00003000/pci@1,0
    00003000-000037ff : /pcie-controller@00003000
    00003000-000037ff : pads
    00003800-000039ff : /pcie-controller@00003000
    00003800-000039ff : afi
    10000000-1fffffff : /pcie-controller@00003000
    10000000-1fffffff : cs
    ...

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • The switch is the only statement in the resource_list_for_each_entry()
    loop, so remove unnecessary cases and "continue" statements in the switch.
    Inline rcar_pcie_release_of_pci_ranges(), which is only called once.

    No functional change intended.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Use devm_request_pci_bus_resources() to request host bridge window
    resources instead of doing it by hand in the driver.

    No functional change intended.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Request host bridge window resources so they appear in ioport_resource and
    iomem_resource and are reflected in /proc/ioports and /proc/iomem.

    Tested-by: Geert Uytterhoeven
    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Previously we added a dummy I/O port region even though the R-Car
    controller doesn't support PCI port I/O. This resulted in bogus root bus
    resources like this:

    pci_bus 0000:00: root bus resource [io 0xee080000-0xee0810ff]
    pci_bus 0000:00: root bus resource [mem 0xee080000-0xee0810ff]

    Drop the unused dummy I/O port region and set struct hw_pci.io_optional so
    the ARM PCI code doesn't add a default one for us.

    Tested-by: Geert Uytterhoeven
    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     

24 Jun, 2016

6 commits

  • Remove support for the "pci=firmware" command line parameter, which was
    way to keep the kernel from changing any PCI BAR assignments. This was
    copied from ARM, but is not actually needed on unicore32.

    The corresponding ARM support was removed by 903589ca7165 ("ARM: 8554/1:
    kernel: pci: remove pci=firmware command line parameter handling").

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • On systems with PCI_PROBE_ONLY set, we rely on BAR assignments from
    firmware. Previously we did not insert those resources into the resource
    tree, so we had to skip pci_enable_resources() because it fails if
    resources are not in the resource tree.

    Now that we *do* insert resources even when PCI_PROBE_ONLY is set, we no
    longer need the ARM-specific pcibios_enable_device(). Remove it so we
    use the generic version.

    [bhelgaas: changelog]
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bjorn Helgaas
    Acked-by: Will Deacon
    CC: Arnd Bergmann
    CC: Russell King

    Lorenzo Pieralisi
     
  • On systems with PCI_PROBE_ONLY set, we rely on BAR assignments from
    firmware. Previously we did not insert those resources into the resource
    tree, so we had to skip pci_enable_resources() because it fails if
    resources are not in the resource tree.

    Now that we *do* insert resources even when PCI_PROBE_ONLY is set, we no
    longer need the ARM64-specific pcibios_enable_device(). Remove it so we
    use the generic version.

    [bhelgaas: changelog]
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bjorn Helgaas
    Acked-by: Will Deacon
    CC: Arnd Bergmann
    CC: Catalin Marinas

    Lorenzo Pieralisi
     
  • We claim PCI BAR and bridge window resources in pci_bus_assign_resources(),
    but when PCI_PROBE_ONLY is set, we treat those resources as immutable and
    don't call pci_bus_assign_resources(), so the resources aren't put in the
    resource tree.

    When the resources aren't in the tree, they don't show up in /proc/iomem,
    we can't detect conflicts, and we need special cases elsewhere for
    PCI_PROBE_ONLY or resources without a parent pointer.

    Claim all PCI BAR and window resources in the PCI_PROBE_ONLY case.

    If a PCI_PROBE_ONLY platform assigns conflicting resources, Linux can't fix
    the conflicts. Previously we didn't notice the conflicts, but now we will,
    which may expose new failures.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • We claim PCI BAR and bridge window resources in pci_bus_assign_resources(),
    but when PCI_PROBE_ONLY is set, we treat those resources as immutable and
    don't call pci_bus_assign_resources(), so the resources aren't put in the
    resource tree.

    When the resources aren't in the tree, they don't show up in /proc/iomem,
    we can't detect conflicts, and we need special cases elsewhere for
    PCI_PROBE_ONLY or resources without a parent pointer.

    Claim all PCI BAR and window resources in the PCI_PROBE_ONLY case.

    If a PCI_PROBE_ONLY platform assigns conflicting resources, Linux can't fix
    the conflicts. Previously we didn't notice the conflicts, but now we will,
    which may expose new failures.

    [bhelgaas: changelog, add resource comment, remove size/assign comments]
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bjorn Helgaas
    CC: Russell King

    Lorenzo Pieralisi
     
  • We claim PCI BAR and bridge window resources in pci_bus_assign_resources(),
    but when PCI_PROBE_ONLY is set, we treat those resources as immutable and
    don't call pci_bus_assign_resources(), so the resources aren't put in the
    resource tree.

    When the resources aren't in the tree, they don't show up in /proc/iomem,
    we can't detect conflicts, and we need special cases elsewhere for
    PCI_PROBE_ONLY or resources without a parent pointer.

    Claim all PCI BAR and window resources in the PCI_PROBE_ONLY case.

    If a PCI_PROBE_ONLY platform assigns conflicting resources, Linux can't fix
    the conflicts. Previously we didn't notice the conflicts, but now we will,
    which may expose new failures.

    [bhelgaas: changelog, summarize comment]
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bjorn Helgaas
    Acked-by: Will Deacon
    CC: Arnd Bergmann
    CC: David Daney

    Lorenzo Pieralisi