From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: <1412024521.4285.98.camel@pasglop> References: <1412000971-9242-1-git-send-email-Liviu.Dudau@arm.com> <1412000971-9242-11-git-send-email-Liviu.Dudau@arm.com> <1412024521.4285.98.camel@pasglop> From: Bjorn Helgaas Date: Mon, 29 Sep 2014 15:33:37 -0600 Message-ID: Subject: Re: [PATCH v13 10/12] PCI: Assign unassigned bus resources in pci_scan_root_bus() To: Benjamin Herrenschmidt Cc: Yinghai Lu , Liviu Dudau , Arnd Bergmann , Rob Herring , Jason Gunthorpe , Catalin Marinas , Will Deacon , Russell King , linux-pci , Linus Walleij , Tanmay Inamdar , Grant Likely , Sinan Kaya , Jingoo Han , Kukjin Kim , Suravee Suthikulanit , linux-arch , LKML , Device Tree ML , LAKML , Jiang Liu Content-Type: text/plain; charset=UTF-8 Sender: linux-arch-owner@vger.kernel.org List-ID: On Mon, Sep 29, 2014 at 3:02 PM, Benjamin Herrenschmidt wrote: > On Mon, 2014-09-29 at 12:06 -0700, Yinghai Lu wrote: >> On Mon, Sep 29, 2014 at 11:25 AM, Yinghai Lu wrote: >> > On Mon, Sep 29, 2014 at 7:29 AM, Liviu Dudau wrote: >> >> If the firmware has not assigned all the bus resources and we are not just >> >> probing the PCI buses, it makes sense to assign the unassigned resources >> >> in pci_scan_root_bus(). >> >> >> >> Signed-off-by: Liviu Dudau >> >> Signed-off-by: Bjorn Helgaas >> >> CC: Arnd Bergmann >> >> CC: Jason Gunthorpe >> >> CC: Rob Herring >> >> --- >> >> drivers/pci/probe.c | 3 +++ >> >> 1 file changed, 3 insertions(+) >> >> >> >> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c >> >> index 636d1c9..d2ebd49 100644 >> >> --- a/drivers/pci/probe.c >> >> +++ b/drivers/pci/probe.c >> >> @@ -1951,6 +1951,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; >> >> } >> > >> > No, you can not do it that early. >> > >> > On x86, we need to call >> > pcibios_resource_survey_bus at first. >> >> on x86: >> pcibios_init >> pcibios_resource_survey() >> pcibios_assign_resources() via fs_initcall > > Right and on powerpc and others as well. We need to survey existing > resources. We also have a number of platform things that might need > to happen before we do the final re-assignment pass. That's true today. But I don't know whether it *has* to be this way forever. On x86, pcibios_resource_survey() throws in E820 information (which we know long before we do any PCI enumeration) and some IO-APIC resources (it looks like we also know these before PCI enumeration). Powerpc has pcibios_reserve_legacy_regions(), but that looks like mostly stuff that could be done when we find the host bridge, before we enumerate PCI devices below it. Bjorn