On Thu, 4 Sep 2008 01:50:58 -0700 (PDT) Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > commit 5f17cfce5776c566d64430f543a289e5cfa4538b > Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Date: Thu Sep 4 01:33:59 2008 -0700 > > PCI: fix pbus_size_mem() resource alignment for CardBus controllers > > Commit 884525655d07fdee9245716b998ecdc45cdd8007 ("PCI: clean up resource > alignment management") changed the resource handling to mark how a > resource was aligned on a per-resource basis. > > Thus, instead of looking at the resource number to determine whether it > was a bridge resource or a regular resource (they have different > alignment rules), we should just ask the resource for its alignment > directly. > > The reason this broke only cardbus resources was that for the other > types of resources, the old way of deciding alignment actually still > happened to work. But CardBus bridge resources had been changed by > commit 934b7024f0ed29003c95cef447d92737ab86dc4f ("Fix cardbus resource > allocation") to look more like regular resources than PCI bridge > resources from an alignment handling standpoint. > > Reported-and-tested-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Ivan Kokshaysky <ink@xxxxxxxxxxxxxxxxxxxx> > Cc: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/pci/setup-bus.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c > index 82634a2..1aad599 100644 > --- a/drivers/pci/setup-bus.c > +++ b/drivers/pci/setup-bus.c > @@ -352,11 +352,12 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long > continue; > r_size = r->end - r->start + 1; > /* For bridges size != alignment */ > - align = (i < PCI_BRIDGE_RESOURCES) ? r_size : r->start; > + align = resource_alignment(r); > order = __ffs(align) - 20; > if (order > 11) { > - dev_warn(&dev->dev, "BAR %d too large: " > + dev_warn(&dev->dev, "BAR %d bad alignment %llx: " > "%#016llx-%#016llx\n", i, > + (unsigned long long)align, > (unsigned long long)r->start, > (unsigned long long)r->end); > r->flags = 0; Is this worth backporting into 2.6.26.x? -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html