diff mbox

[v1,2/4] PCI: Mark invalid BARs as unassigned

Message ID 20150312173533.1052.46464.stgit@bhelgaas-glaptop2.roam.corp.google.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Bjorn Helgaas March 12, 2015, 5:35 p.m. UTC
If a BAR is not inside any upstream bridge window, or if it conflicts with
another resource, mark it as IORESOURCE_UNSET so we don't try to use it.
We may be able to assign a different address for it.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/pci/setup-res.c |    2 ++
 1 file changed, 2 insertions(+)


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Tony Luck April 14, 2015, 11:14 p.m. UTC | #1
On Thu, Mar 12, 2015 at 10:35 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> If a BAR is not inside any upstream bridge window, or if it conflicts with
> another resource, mark it as IORESOURCE_UNSET so we don't try to use it.
> We may be able to assign a different address for it.

This went into Linux tree - and broke my ia64 box in a weird way. It only
sees one of the two disks.  git bisect points to this commit, and reverting
it fixes the problem.

Attached are serial logs from the "bad" boot (tip of Linus tree = b79013b2449c)
and for a "good" boot with this commit reverted.

-Tony
Bjorn Helgaas April 14, 2015, 11:30 p.m. UTC | #2
Hi Tony,

On Tue, Apr 14, 2015 at 6:14 PM, Tony Luck <tony.luck@gmail.com> wrote:
> On Thu, Mar 12, 2015 at 10:35 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
>> If a BAR is not inside any upstream bridge window, or if it conflicts with
>> another resource, mark it as IORESOURCE_UNSET so we don't try to use it.
>> We may be able to assign a different address for it.
>
> This went into Linux tree - and broke my ia64 box in a weird way. It only
> sees one of the two disks.  git bisect points to this commit, and reverting
> it fixes the problem.
>
> Attached are serial logs from the "bad" boot (tip of Linus tree = b79013b2449c)
> and for a "good" boot with this commit reverted.

Thanks for the report, and sorry for breaking you.  I hate to ask for
more after all your work already, but would you mind collecting logs
with "ignore_loglevel"?  We only print the BAR information at
KERN_DEBUG, so it doesn't make it to the console unless you use
ignore_loglevel.

I don't really see how the mptsas device at 83:00.0 worked before;
ACPI didn't tell us about any MMIO apertures in the PCI1 host bridge.
But I'll look closer.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
index b7c3a5ea1fca..232f9254c11a 100644
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
@@ -120,6 +120,7 @@  int pci_claim_resource(struct pci_dev *dev, int resource)
 	if (!root) {
 		dev_info(&dev->dev, "can't claim BAR %d %pR: no compatible bridge window\n",
 			 resource, res);
+		res->flags |= IORESOURCE_UNSET;
 		return -EINVAL;
 	}
 
@@ -127,6 +128,7 @@  int pci_claim_resource(struct pci_dev *dev, int resource)
 	if (conflict) {
 		dev_info(&dev->dev, "can't claim BAR %d %pR: address conflict with %s %pR\n",
 			 resource, res, conflict->name, conflict);
+		res->flags |= IORESOURCE_UNSET;
 		return -EBUSY;
 	}