Thread (45 messages) 45 messages, 10 authors, 2014-09-29

Re: [PATCH v12 10/12] PCI: Assign unassigned bus resources in pci_scan_root_bus()

From: Liviu Dudau <hidden>
Date: 2014-09-24 01:48:54
Also in: linux-arch, linux-arm-kernel, linux-pci, lkml

On Tue, Sep 23, 2014 at 07:41:35PM -0600, Bjorn Helgaas wrote:
On Tue, Sep 23, 2014 at 7:18 PM, Liviu Dudau [off-list ref] wrote:
quoted
On Tue, Sep 23, 2014 at 08:01:12PM +0100, Liviu Dudau wrote:
quoted
If the firmware has not assigned all the bus resources and
we are not just probing the PCIe busses, it makes sense to
assign the unassigned resources in pci_scan_root_bus().

Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Jason Gunthorpe <redacted>
Cc: Rob Herring <robh+dt@kernel.org>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
---
 drivers/pci/probe.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index ef891d2..508cf61 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1953,6 +1953,9 @@ struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
      if (!found)
              pci_bus_update_busn_res_end(b, max);

+     if (!pci_has_flag(PCI_PROBE_ONLY))
+             pci_assign_unassigned_bus_resources(b);
+
      pci_bus_add_devices(b);
      return b;
 }
--
2.1.0
Bjorn,

If you are OK with this patch, can you let me know how do you feel about
making pci_scan_root_bus() set up the bus->msi pointer as well?
I'm not opposed to it, but I have the same question as for setting up
the domain: how does pci_scan_root_bus() learn what to assign to
bus->msi?  It currently only gets a "void *sysdata" so there's no
obvious place to put it there.  You could add a pcibios interface to
retrieve it, I suppose, but I'm starting to get uncomfortable with
adding more of those because we have such a mess of them already.
My long term view is that the creation of the pci_host_bridge structure
needs to be separated from the creation and scanning of the root bus.
Then we can add host bridge ops or some other API to the structure
that should allow for less friction in passing information to the bridge.

Best regards,
Liviu
Bjorn
quoted
Side note: I don't know exactly how to do it now, but setting bus->msi is
needed by platforms that are based on my patches and want to use MSI,
otherwise they have to open code pci_scan_root_bus() to set it. I haven't
made any attempts to do it in this series as the GICv2m patches are not
ready yet, but I can see the need arriving soon.

Best regards,
Liviu
quoted
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help