On Wed, Sep 09, 2015 at 06:22:34PM +0100, Yinghai Lu wrote: > On Wed, Sep 9, 2015 at 9:59 AM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > > On Wed, Sep 9, 2015 at 4:32 AM, Lorenzo Pieralisi > > <lorenzo.pieralisi@xxxxxxx> wrote: > >> Subject: [PATCH] PCI: remove dead code in pci_claim_bridge_resource() > >> > > That should be regression from c770cb4cb505 ("PCI: Mark invalid BARs > > as unassigned") > > so right fix should be: > > completed format as attached: > From: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Subject: [PATCH] PCI: Fix clipped bridge resource reserve > > Commit 8505e729a2f6eb ("PCI: Add pci_claim_bridge_resource() to clip > window if necessary") introduced a new API to claim bridge resources. > pci_claim_bridge_resource() tries to claim a bridge resource, and if > the claiming fails the function tries to clip the resource to make > it fit within the parent resource window. > If the clipping succeeds the bridge apertures are set-up accordingly > and the pci_claim_bridge_resource() tries to claim the resource > again. > > Commit c770cb4cb505 ("PCI: Mark invalid BARs as unassigned") added > code that sets the IORESOURCE_UNSET flag on claiming failure. > > This means that the second resource claiming after window clipping will > always fail, since the resource flags contain IORESOURCE_UNSET, > previously set on failure by pci_claim_resource(), so the subsequent > pci_claim_resource() call ends up spitting a log message and return > failure with no chance whatsoever to succeed. > > This patch clear the UNSET in resource flags, and it makes second > pci_claim_resource() work again. > > Fixes: c770cb4cb505 ("PCI: Mark invalid BARs as unassigned") > Cc: stable@xxxxxxxxxxxxxxx [v4.1+] > [change to clear UNSET instead, Yinghai] > Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> My Signed-off-by is missing, if you do not mind given that I reported it and I obviously knew this was the real fix (I said that) I will send the updated patch to the list accordingly or Bjorn can fix it up, as you both prefer. Thanks, Lorenzo > diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c > index 508cc56..76b3349 100644 > --- a/drivers/pci/setup-bus.c > +++ b/drivers/pci/setup-bus.c > @@ -733,6 +733,7 @@ int pci_claim_bridge_resource(struct pci_dev *bridge, int i) > return -EINVAL; > } > > + bridge->resource[i].flags &= ~IORESOURCE_UNSET; > if (pci_claim_resource(bridge, i) == 0) > return 0; /* claimed a smaller window */ > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html