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.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
        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)
 
        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;