http://bugzilla.kernel.org/show_bug.cgi?id=9961
------- Comment #19 from [EMAIL PROTECTED] 2008-03-19 14:05 ------- I am still struggling with this. I do not fully understand root cause yet but I'm betting that the hot-add of a "transparent" p2p bridge (on Dock II) immediately below yet another "transparent" p2p bridge (on ThinkPad) which creates a pretty complex cobweb of resource references has something to do with it. bus 00 -------------- | 00:1e.0 - ThinkPad resident Intel 82801 Mobile PCI Bridge | "transparent" via pci_fixup_transparent_bridge() | bus 02 -------------- | 02:03.0 - Dock II resident Texas Instruments PCI2032 PCI | Docking Bridge | "transparent" due to programming interface == 0x01 | bus 09 -------------- I have determined why we are not seeing the Oops during boot when the Dock II already attached to the laptop. It is due to pcibios_allocate_bus_resources() only being visited during boot. The boot-time visit to ... if (!r->start || !pr || request_resource(pr, r) < 0) { printk(KERN_ERR "PCI: Cannot allocate " "resource region %d " "of bridge %s\n", idx, pci_name(dev)); /* * Something is wrong with the region. * Invalidate the resource to prevent * child resource allocations in this * range. */ r->flags = 0; } ... in pcibios_allocate_bus_resources() clears the Dock II resource flags for regions 7, 8, and 9 as evidenced by the following messages which appear both with and without transparent bridge sizing removed. PCI: Cannot allocate resource region 7 of bridge 0000:02:03.0 PCI: Cannot allocate resource region 8 of bridge 0000:02:03.0 PCI: Cannot allocate resource region 9 of bridge 0000:02:03.0 With the Dock II bridge resource flags for these regions cleared the check: if (!(r->flags) || r->parent) continue; in pdev_sort_resources() prevents execution from reaching the list->next in the later: struct resource_list *ln = list->next; where the NULL pointer dereference occurs in the hot-add case after one trip through the body of the enclosing for loop. In the hot-add case, pcibios_allocate_bus_resources() is not visited so the Dock II bridge resource flags are not cleared prior to the call to pcibios_allocate_bus_resources(). If I am unable to come up with a solution for this that retains the transparent bridge non-sizing in the next couple of days it is likely that I will provide a patch that simply restores the transparent bridge sizing. I believe the resource shortage on some of our systems that motiviated the transparent bridge non-sizing change no longer shows up when space is not allocated by default for expansion ROMs. A later change that removes default allocation for expansion ROMs is already in mainline. -- Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ acpi-bugzilla mailing list acpi-bugzilla@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla