http://bugzilla.kernel.org/show_bug.cgi?id=10396





------- Comment #14 from [EMAIL PROTECTED]  2008-04-08 23:14 -------
Created an attachment (id=15685)
 --> (http://bugzilla.kernel.org/attachment.cgi?id=15685&action=view)
v2.6.25-rc8 acpi-pci-bus debug "PINPOINTED" failed boot log

Well it had to prove me wrong. The cause of the issue is "Bus already known",
despite what I speculated in comment #13 (unlucky for some!).

For some reason the call to pr_debug() in drivers/pci/probe.c::pci_create_bus()
isn't resulting in a kernel message so it misled my reasoning as to the error.

if (pci_find_bus(pci_domain_nr(b), bus)) {
 /* If we already got to this bus through a different bridge, ignore it */
 pr_debug("PCI: Bus %04x:%02x already known\n", pci_domain_nr(b), bus);
 printk(KERN_INFO "PCI: drivers/pci/probe.c::pci_create_bus() Bus already
known\n");
 goto err_out;
}

[   37.222374] bus: 'acpi': driver_probe_device: matched device PNP0A03:01 with
driver pci_root
[   37.226348] bus: 'acpi': really_probe: probing driver pci_root with device
PNP0A03:01
[   37.230370]  nsutils-0869 [03] ns_get_node           : _SEG, AE_NOT_FOUND
[   37.238371] Execute Method: [\_SB_.PX0B._BBN] (Node f5412d20)
[   37.247233] ACPI: PCI Root Bridge [PX0B] (0000:02)
[   37.250352] PCI: arch/x86/pci/acpi.c::pci_acpi_scan_root(device, 0, 2)
[   37.254361] PCI: drivers/pci/probe.c::pci_scan_bus_parented()
[   37.258349] PCI: drivers/pci/probe.c::pci_create_bus()
[   37.262351] PCI: drivers/pci/search.c::pci_find_bus(0, 2)
[   37.266350] PCI: drivers/pci/search.c::pci_find_next_bus(0)
[   37.270351] PCI: drivers/pci/search.c::pci_find_next_bus(F5462800)
[   37.274351] PCI: drivers/pci/search.c::pci_do_find_bus(bus, 2)
[   37.278351] PCI: drivers/pci/search.c::pci_do_find_bus(bus, 2)
[   37.282350] PCI: drivers/pci/search.c::pci_do_find_bus()=NULL
[   37.286350] PCI: drivers/pci/search.c::pci_do_find_bus()=NULL
[   37.290351] PCI: drivers/pci/search.c::pci_find_next_bus(F5462800)
[   37.294352] PCI: drivers/pci/search.c::pci_find_next_bus(F5462C00)
[   37.298352] PCI: drivers/pci/search.c::pci_do_find_bus(bus, 2)
[   37.302352] PCI: drivers/pci/search.c::pci_do_find_bus()=F5462C00
[   37.306352] PCI: drivers/pci/search.c::pci_find_bus()=F5462C00
[   37.310352] PCI: drivers/pci/probe.c::pci_create_bus() Bus already known
[   37.314353] PCI: drivers/pci/probe.c::pci_create_bus()=NULL
[   37.318352] PCI: pci_scan_bus_parented()=NULL
[   37.322354] PCI: arch/x86/pci/acpi.c::pci_acpi_scan_root()=NULL
[   37.326355] ACPI: Bus 0000:02 not present in PCI namespace

Looking back through the log for references to the buses I found:

[    4.382109] device: 'PNP0A03:00': device_add
[    4.384305] PM: Adding info for acpi:PNP0A03:00
[    4.388291] bus: 'acpi': add device PNP0A03:00

[   11.666574] device: 'PNP0A03:01': device_add
[   11.668762] PM: Adding info for acpi:PNP0A03:01
[   11.672747] bus: 'acpi': add device PNP0A03:01

[   11.824765] device: 'PNP0A03:02': device_add
[   11.828773] PM: Adding info for acpi:PNP0A03:02
[   11.832757] bus: 'acpi': add device PNP0A03:02

[   19.401234] device: 'pci0000:00': device_add
[   19.405256] PM: Adding info for No Bus:pci0000:00
[   19.409237] device: '0000:00': device_add
[   19.413257] PM: Adding info for No Bus:0000:00
[   19.425226] PCI: drivers/pci/probe.c::pci_create_bus()=F5462800

[   19.481239] device: 'pci0000:02': device_add
[   19.485255] PM: Adding info for No Bus:pci0000:02
[   19.489241] device: '0000:02': device_add
[   19.493261] PM: Adding info for No Bus:0000:02
[   19.497312] PCI: drivers/pci/probe.c::pci_create_bus()=F5462C00

[   19.593247] device: 'pci0000:03': device_add
[   19.597262] PM: Adding info for No Bus:pci0000:03
[   19.601248] device: '0000:03': device_add
[   19.605267] PM: Adding info for No Bus:0000:03
[   19.609310] PCI: drivers/pci/probe.c::pci_create_bus()=F550E000

The ACPI PNP0A03 devices are:

PX0A: _UID 1, _BBN 0,  _ADR 0x00120000, pci_bus=0xF5462800, device 0000:0
PX0B: _UID 2, _BBN 2?, _ADR_0x00130000, pci_bus=0xF5462C00, device 0000:2
PX1A: _UID 3, _BBN 3?, _ADR 0x00140000, pci_bus=0xF550E000, device 0000:3

The ? above indicates _BBN is calculated in a method and the values I show here
are the ones reported by ACPI as bus number.

So buses 0:2 and 0:3 are created when the first root bridge (PX0A) is scanned.
That causes the later scan/create in ACPI/PCI to fail with the "Bus already
known" reason.

[   37.306352] PCI: drivers/pci/search.c::pci_find_bus()=F5462C00
[   37.310352] PCI: drivers/pci/probe.c::pci_create_bus() Bus already known

[   37.430360] PCI: drivers/pci/search.c::pci_find_bus()=F550E000
[   37.434360] PCI: drivers/pci/probe.c::pci_create_bus() Bus already known

Here's the call logic when 0000:0 has been created and is being scanned itself:

[   19.369259] ACPI: PCI Root Bridge [PX0A] (0000:00)
[   19.373231] PCI: arch/x86/pci/acpi.c::pci_acpi_scan_root(device, 0, 0)
[   19.377237] PCI: drivers/pci/probe.c::pci_scan_bus_parented()
[   19.381229] PCI: drivers/pci/probe.c::pci_create_bus()
[   19.385232] PCI: drivers/pci/search.c::pci_find_bus(0, 0)
[   19.389230] PCI: drivers/pci/search.c::pci_find_next_bus(0)
[   19.393230] PCI: drivers/pci/search.c::pci_find_next_bus(0)
[   19.397230] PCI: drivers/pci/search.c::pci_find_bus()=NULL
[   19.401234] device: 'pci0000:00': device_add
[   19.405256] PM: Adding info for No Bus:pci0000:00
[   19.409237] device: '0000:00': device_add
[   19.413257] PM: Adding info for No Bus:0000:00
[   19.425226] PCI: drivers/pci/probe.c::pci_create_bus()=F5462800
[   19.425495] * Found PM-Timer Bug on the chipset. Due to workarounds for a
bug,
[   19.425503] * this clock source is slow. Consider trying other clock sources
[   19.429300] pci 0000:00:02.3: quirk: region 0800-083f claimed by PIIX4 ACPI
[   19.433238] pci 0000:00:02.3: quirk: region 0850-085f claimed by PIIX4 SMB

[   19.437545] pci 0000:00:10.0: Searching for i450NX host bridges

[   19.441239] PCI: drivers/pci/probe.c::pci_scan_bus_parented()
[   19.445233] PCI: drivers/pci/probe.c::pci_create_bus()
[   19.449235] PCI: drivers/pci/search.c::pci_find_bus(0, 2)
[   19.453233] PCI: drivers/pci/search.c::pci_find_next_bus(0)
[   19.457234] PCI: drivers/pci/search.c::pci_find_next_bus(F5462800)
[   19.461235] PCI: drivers/pci/search.c::pci_do_find_bus(bus, 2)
[   19.465234] PCI: drivers/pci/search.c::pci_do_find_bus()=NULL
[   19.469235] PCI: drivers/pci/search.c::pci_find_next_bus(F5462800)
[   19.473235] PCI: drivers/pci/search.c::pci_find_next_bus(0)
[   19.477234] PCI: drivers/pci/search.c::pci_find_bus()=NULL
[   19.481239] device: 'pci0000:02': device_add
[   19.485255] PM: Adding info for No Bus:pci0000:02
[   19.489241] device: '0000:02': device_add
[   19.493261] PM: Adding info for No Bus:0000:02
[   19.497312] PCI: drivers/pci/probe.c::pci_create_bus()=F5462C00

So it appears the issue is caused by an interaction with the i450NX fix-up code
in:

arch/x86/pci/fixup.c::pci_fixup_i450nx()

I've been looking at the git commit logs for this (formerly known as
arch/i386/pci/fixup.c) and the ACPI/PCI source files but so far haven't noticed
anything that wouls explain this - certainly not between v2.6.20 and v2.6.22.

I think this is the point where the experts need to get involved.


-- 
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 the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to