From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Date: Mon, 12 Jun 2017 17:55:25 +0100 From: Lorenzo Pieralisi To: Ard Biesheuvel Cc: Bjorn Helgaas , Bjorn Helgaas , "linux-arm-kernel@lists.infradead.org" , linux-pci , Graeme Gregory , Catalin Marinas , Will Deacon , Leif Lindholm , Sinan Kaya , Tomasz Nowicki Subject: Re: [PATCH 0/2] arm64: acpi/pci: allow the firmware BAR configuration to be preserved Message-ID: <20170612165525.GB32131@red-moon> References: <20170518154708.GA30182@red-moon> <20170518174612.GA31373@red-moon> <20170601161511.GB19003@red-moon> <20170606085936.GB20085@red-moon> <20170606100228.GA20126@red-moon> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: List-ID: On Wed, Jun 07, 2017 at 01:45:19PM +0000, Ard Biesheuvel wrote: > On 6 June 2017 at 10:02, Lorenzo Pieralisi wrote: > > On Tue, Jun 06, 2017 at 09:14:26AM +0000, Ard Biesheuvel wrote: > > > > [...] > > > >> > Do you want me to create a branch out of these patches (inclusive of > >> > another patch to fix this bus reallocation policy discrepancy) for > >> > ARM64 folks to test ? Let me know, thanks ! > >> > > >> > >> Hi Lorenzo, > >> > >> Bjorn has already picked up #1, which is now in -next. I will get back > >> to this topic today or tomorrow, so let me respin (including the bus > >> range fix) first, ok? > > > > Of course, I just want to help you make progress on this, I think > > we need help for testing them on ARM64 systems to see how to proceed. > > > > OK, so I am hitting another issue. While it is quite simple to do this > > """ > diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c > index c7e3e6387a49..9a529c6369ac 100644 > --- a/arch/arm64/kernel/pci.c > +++ b/arch/arm64/kernel/pci.c > @@ -203,6 +203,9 @@ > return NULL; > } > > + /* ignore bus ranges assigned by the firmware */ > + pci_add_flags(PCI_REASSIGN_ALL_BUS); > + > root_ops->release_info = pci_acpi_generic_release_info; > root_ops->prepare_resources = pci_acpi_root_prepare_resources; > root_ops->pci_ops = &ri->cfg->ops->pci_ops; > """ > > and get the ACPI code to behave in the same way as the DT code, > including the resulting quirks, i.e. > > pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus > 00-0f] (conflicts with (null) [bus 00-0f]) > > there are two problems when we want to refine this to take _DSM #5 into account. > > 1) PCI_REASSIGN_ALL_BUS is a global flag, while _DSM is per PCI root > 2) setting the flag conditionally on whether _DSM #5 allows it is > difficult to achieve, given that the flag needs to be set before > acpi_pci_root_create(), at which point we cannot access the _DSM yet (2) Why ? You have the ACPI root bridge handle at that point. Anyway (1) makes (2) irrelevant unfortunately. > So I can send out the above as a separate patch, but right now, I am > not entirely sure how to proceed with conditionally preserving the > firmware configuration. Yes, this definitely requires some focus because that's becoming a bit unwieldy to manage consistently, I will look into this. Thanks ! Lorenzo