PCI: Cannot allocate resource region 7 of bridge 0000:00:04.0

From: Chuck Ebbert
Date: Sun Aug 27 2006 - 06:10:50 EST


I get these messages with 2.6.18-rc4 on i386:

PCI: Cannot allocate resource region 7 of bridge 0000:00:04.0
PCI: Cannot allocate resource region 8 of bridge 0000:00:04.0
PCI: Cannot allocate resource region 9 of bridge 0000:00:04.0
PCI: Cannot allocate resource region 7 of bridge 0000:00:05.0
PCI: Cannot allocate resource region 8 of bridge 0000:00:05.0


For these PCI bridges:

00:04.0 PCI bridge: ATI Technologies Inc Unknown device 5a36 (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=03, sec-latency=0
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot-) IRQ 0
Capabilities: [80] Message Signalled Interrupts: 64bit- Queue=0/0 Enable+
Capabilities: [b0] #0d [0000]
Capabilities: [b8] HyperTransport: MSI Mapping
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel

00:05.0 PCI bridge: ATI Technologies Inc Unknown device 5a37 (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=04, subordinate=05, sec-latency=0
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot-) IRQ 0
Capabilities: [80] Message Signalled Interrupts: 64bit- Queue=0/0 Enable+
Capabilities: [b0] #0d [0000]
Capabilities: [b8] HyperTransport: MSI Mapping
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel


Adding some debug:

--- 2.6.18-rc4-32.orig/arch/i386/pci/i386.c
+++ 2.6.18-rc4-32/arch/i386/pci/i386.c
@@ -100,6 +100,7 @@
struct pci_dev *dev;
int idx;
struct resource *r, *pr;
+ int ret;

/* Depth-First Search on bus tree */
list_for_each_entry(bus, bus_list, node) {
@@ -109,8 +110,10 @@
if (!r->flags)
continue;
pr = pci_find_parent_resource(dev, r);
- if (!r->start || !pr || request_resource(pr, r) < 0) {
+ ret = 0;
+ if (!r->start || !pr || (ret = request_resource(pr, r)) < 0) {
printk(KERN_ERR "PCI: Cannot allocate resource region %d of bridge %s\n", idx, pci_name(dev));
+ printk(KERN_ERR "PCI: start = %p, parent = %p, ret = %d\n", r->start, pr, ret);
/* Something is wrong with the region.
Invalidate the resource to prevent child
resource allocations in this range. */


r->start is zero in every case.


Some PCI debug messages for one bridge:

PCI: Using MMCONFIG
...
PCI: Scanning behind PCI bridge 0000:00:04.0, config 030200, pass 0
PCI: Scanning bus 0000:02
PCI: Fixups for bus 0000:02
PCI: Bus scan for 0000:02 returning with max=02
...
PCI: Scanning behind PCI bridge 0000:00:04.0, config 030200, pass 1
...
PCI: Bridge: 0000:00:04.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
...
PCI: Enabling bus mastering for device 0000:00:04.0
PCI: Setting latency timer of device 0000:00:04.0 to 64
...
PCI: Setting latency timer of device 0000:00:04.0 to 64
pcie_portdrv_probe->Dev[5a36:1002] has invalid IRQ. Check vendor BIOS
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:04.0:pcie00]
PM: Adding info for pci_express:0000:00:04.0:pcie00
Allocate Port Service[0000:00:04.0:pcie01]
PM: Adding info for pci_express:0000:00:04.0:pcie01
Allocate Port Service[0000:00:04.0:pcie03]
PM: Adding info for pci_express:0000:00:04.0:pcie03

It says (twice) it is setting latency timer to 64 yet lspci says it's zero.

I tried pci=nobios. What else should I try?

--
Chuck
-
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/