Re: linux-next: Tree for September 3
From: Andrew Morton
Date: Thu Sep 04 2008 - 04:58:00 EST
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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/