[coreboot] v3 help with PCI_DOMAIN resources

Myles Watson mylesgw at gmail.com
Mon Oct 13 20:49:14 CEST 2008


I'm confused about the propagation of resource values.  Most of it seems to
be happening correctly, but it's not quite there.

in the dts I see domain at 0 which I assume is PCI_DOMAIN: 0000 in the log.
The problem is that although the resource for PCI_DOMAIN 0000 resource 02
get set correctly to [0xfd000000 - 0xfe1fffff], PCI: 00:18.0 has no
corresponding resource.  That seems wrong.

How can the resources for the domain be getting set correctly when it's
child's resources aren't?

Am I asking the wrong questions?  It's taking a long time tracing all the
indirection in the code.

Thanks,
Myles

/{
    mainboard_vendor = "AMD";
    mainboard_name = "Serengeti";
    cpus { };
    apic at 0 {
    };
    domain at 0 {
        /config/("northbridge/amd/k8/domain");
        pci at 1,0{
        };
        /* guesses; we need a real lspci */
        pci0 at 18,0 {
            /config/("northbridge/amd/k8/pci");
            pci at 0,0 {
                /config/("southbridge/amd/amd8111/pci.dts");
                pci at 1,0{
                    /config/("southbridge/amd/amd8111/nic.dts");
                    enabled = "0";
                };
8< --------------- SNIP
------------------------------------------------------


Here's a snippet of a verbose log from serengeti v3:
    read_resources: root(Root Device) dtsname domain_0 have_resources 1
enabled 1
    read_resources: root(Root Device) read_resources bus 0 link: 0 done
    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags =
0000ffff mask = 00000000, type = 40000100
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000 flags =
ffffffff mask = 000000fc, type = 40001200
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000
    PCI_DOMAIN: 0000: resource 2 base: 00000000 limit: 00000000 flags =
febfffff mask = 00000000, type = 40000200
    PCI_DOMAIN: 0000: resource 2 base: 00000000 limit: 00000000
    Root Device in loop base: fd000000 bridge->base: fd000000
    PCI_DOMAIN: 0000 02 *  [0xfd000000 - 0xfe1fffff] mem
    Root Device MEM base: fe200000 bridge->base: fd000000
    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags =
0000ffff mask = 00000000, type = 40000100
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000 flags =
ffffffff mask = 000000fc, type = 40001200
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000
    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000 flags =
febfffff mask = 00000000, type = 40000200
    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000
    Root Device in loop base: fe200000 bridge->base: fd000000
    PCI_DOMAIN: 0000 01 *  [0xfe200000 - 0xfe1fffff] prefmem
    Root Device MEM base: fe200000 bridge->base: fd000000
    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags =
0000ffff mask = 00000000, type = 40000100
    PCI_DOMAIN: 0000: resource 1 base: fe200000 limit: 00000000 flags =
ffffffff mask = 000000fc, type = 40001200
    PCI_DOMAIN: 0000: resource 1 base: fe200000 limit: 00000000
    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000 flags =
febfffff mask = 00000000, type = 40000200
    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000
    Root Device size: 01200000
    Root Device base: fd000000
    Root Device after align_up base: fd000000
    Root Device compute_allocate_mem: base: fe200000 bridge->base: fd000000
size: 01200000 align: 24 gran: 0 done
    root_dev_set_resources is the failure here?
    root_dev_set_resources bus->dev Root Device
    root_dev_set_resources MEM resource base fd000000 size 0 align 1200000
        gran 0 limit 18 flags 0

At this point the Root device has the memory resource with a reasonable
base.

    root(Root Device) assign_resources, bus 0 link: 0
    cpus: Unknown device path type: 0
    cpus() skipped
    apic_0(APIC: 00) skipped
    domain_0(PCI_DOMAIN: 0000) assign_resources
    k8_pci_domain_set_resources
    PCI: 00:18.0: resource 0 base: 00000000 limit: 00000000 flags = ffffffff
mask = 000000ff, type = 00001200
    PCI: 00:18.0: resource 0 base: 00000000 limit: 00000000
    PCI: 00:18.0 best is NULL new->base: 00000000
    PCI: 00:18.0: resource 1 base: 00001000 limit: 00000000 flags = 0000ffff
mask = 00000000, type = 40000100
    PCI: 00:18.0: resource 2 base: 00000000 limit: 00000000 flags = febfffff
mask = 00000000, type = 40000200
    PCI: 00:18.0: resource 2 base: 00000000 limit: 00000000
    PCI: 00:18.0 best is NULL new->base: 00000000
    PCI: 00:18.0: resource 3 base: 00003000 limit: 00000000 flags = 0000ffff
mask = 00000000, type = 40000100
    PCI: 00:18.0: resource 4 base: 00000000 limit: 00000000 flags = ffffffff
mask = 000000ff, type = 00001200
    PCI: 00:18.0: resource 4 base: 00000000 limit: 00000000
    PCI: 00:18.0 best is NULL new->base: 00000000
    PCI: 00:18.0: resource 5 base: 01200000 limit: 00000000 flags = ffffffff
mask = 000000ff, type = 40000200
    PCI: 00:18.0: resource 5 base: 01200000 limit: 00000000
    PCI: 00:18.0 best is NULL new->base: 01200000
    better!
    find_pci_tolm: tolm=01200000
    1: pci_tolm=01200000
    1: mmio_basek=00004800
    2: mmio_basek=00004800
    3: mmio_basek=00000000
    node 0 : mmio_basek=00000000, basek=00000300, limitk=00040000
    domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0
    domain_0_pci0_18_0(PCI: 00:18.0) assign_resources
    amdk8_set_resources: nodeid 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081013/e99c928e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v3.filo.out
Type: application/octet-stream
Size: 455822 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081013/e99c928e/attachment.obj>


More information about the coreboot mailing list