diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2016-06-23 16:32:20 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2016-06-23 16:32:20 -0500 |
commit | 046136170a56ba47338fbd10fdf4db4214b30567 (patch) | |
tree | e860ad879090887953d3eac139e1db9a1862160a /arch/mips | |
parent | b30742aa307ac9d7db846c0823685e064dc66aaf (diff) | |
download | linux-046136170a56ba47338fbd10fdf4db4214b30567.tar.gz linux-046136170a56ba47338fbd10fdf4db4214b30567.tar.bz2 linux-046136170a56ba47338fbd10fdf4db4214b30567.zip |
MIPS/PCI: Claim bus resources on PCI_PROBE_ONLY set-ups
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 <bhelgaas@google.com>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/pci/pci.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c index 5717384a986d..b4c02f29663e 100644 --- a/arch/mips/pci/pci.c +++ b/arch/mips/pci/pci.c @@ -112,7 +112,14 @@ static void pcibios_scanbus(struct pci_controller *hose) need_domain_info = 1; } - if (!pci_has_flag(PCI_PROBE_ONLY)) { + /* + * We insert PCI resources into the iomem_resource and + * ioport_resource trees in either pci_bus_claim_resources() + * or pci_bus_assign_resources(). + */ + if (pci_has_flag(PCI_PROBE_ONLY)) { + pci_bus_claim_resources(bus); + } else { pci_bus_size_bridges(bus); pci_bus_assign_resources(bus); } |