Re: 2.6.12-mm1 breaks Toshiba laptop yenta cardbus

From: Ivan Kokshaysky
Date: Wed Jun 22 2005 - 07:13:19 EST


On Mon, Jun 20, 2005 at 07:15:34PM +1000, Grant Coady wrote:
> Yenta: CardBus bridge found at 0000:00:0b.0 [1179:0001]
> yenta 0000:00:0b.0: Preassigned resource 0 busy, reconfiguring...

In -mm1 the cardbus resources might be assigned in
pci_assign_unassigned_resources() pass. From your dmesg:
PCI: Bus 2, cardbus bridge: 0000:00:0b.0
IO window: 00002000-00002fff
IO window: 00003000-00003fff
PREFETCH window: 12000000-13ffffff
MEM window: 14000000-15ffffff

Then yenta_allocate_res() tries to assign these resources again and,
naturally, fails.

This adds check for already assigned cardbus resources.

Ivan.

--- 2.6.12-mm1/drivers/pcmcia/yenta_socket.c Wed Jun 22 15:56:20 2005
+++ linux/drivers/pcmcia/yenta_socket.c Wed Jun 22 16:01:40 2005
@@ -553,6 +553,11 @@ static int yenta_try_allocate_res(struct
unsigned offset;
unsigned mask;

+ res = socket->dev->resource + PCI_BRIDGE_RESOURCES + nr;
+ /* Already allocated? */
+ if (res->parent)
+ return 0;
+
/* The granularity of the memory limit is 4kB, on IO it's 4 bytes */
mask = ~0xfff;
if (type & IORESOURCE_IO)
@@ -560,7 +565,6 @@ static int yenta_try_allocate_res(struct

offset = 0x1c + 8*nr;
bus = socket->dev->subordinate;
- res = socket->dev->resource + PCI_BRIDGE_RESOURCES + nr;
res->name = bus->name;
res->flags = type;
res->start = 0;
-
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/