I'm confused about the propagation of resource values.  Most of it seems to be happening correctly, but it's not quite there.  <br><br>in the dts I see domain@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.<br>
<br>How can the resources for the domain be getting set correctly when it's child's resources aren't?<br><br>Am I asking the wrong questions?  It's taking a long time tracing all the indirection in the code.<br>
<br>Thanks,<br>Myles <br><br>/{<br>    mainboard_vendor = "AMD";<br>    mainboard_name = "Serengeti";<br>    cpus { };<br>    apic@0 {<br>    };    <br>    domain@0 {<br>        /config/("northbridge/amd/k8/domain");<br>
        pci@1,0{<br>        };<br>        /* guesses; we need a real lspci */<br>        pci0@18,0 {<br>            /config/("northbridge/amd/k8/pci");<br>            pci@0,0 {<br>                /config/("southbridge/amd/amd8111/pci.dts");<br>
                pci@1,0{<br>                    /config/("southbridge/amd/amd8111/nic.dts");<br>                    enabled = "0";<br>                };<br>8< --------------- SNIP ------------------------------------------------------<br>
<br><br>Here's a snippet of a verbose log from serengeti v3:<br>    read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1<br>    read_resources: root(Root Device) read_resources bus 0 link: 0 done<br>
    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags = 0000ffff mask = 00000000, type = 40000100<br>    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000 flags = ffffffff mask = 000000fc, type = 40001200<br>
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000<br>    PCI_DOMAIN: 0000: resource 2 base: 00000000 limit: 00000000 flags = febfffff mask = 00000000, type = 40000200<br>    PCI_DOMAIN: 0000: resource 2 base: 00000000 limit: 00000000<br>
    Root Device in loop base: fd000000 bridge->base: fd000000<br>    PCI_DOMAIN: 0000 02 *  [0xfd000000 - 0xfe1fffff] mem<br>    Root Device MEM base: fe200000 bridge->base: fd000000<br>    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags = 0000ffff mask = 00000000, type = 40000100<br>
    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000 flags = ffffffff mask = 000000fc, type = 40001200<br>    PCI_DOMAIN: 0000: resource 1 base: 01200000 limit: 00000000<br>    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000 flags = febfffff mask = 00000000, type = 40000200<br>
    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000<br>    Root Device in loop base: fe200000 bridge->base: fd000000<br>    PCI_DOMAIN: 0000 01 *  [0xfe200000 - 0xfe1fffff] prefmem<br>    Root Device MEM base: fe200000 bridge->base: fd000000<br>
    PCI_DOMAIN: 0000: resource 0 base: 00001000 limit: 00000000 flags = 0000ffff mask = 00000000, type = 40000100<br>    PCI_DOMAIN: 0000: resource 1 base: fe200000 limit: 00000000 flags = ffffffff mask = 000000fc, type = 40001200<br>
    PCI_DOMAIN: 0000: resource 1 base: fe200000 limit: 00000000<br>    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000 flags = febfffff mask = 00000000, type = 40000200<br>    PCI_DOMAIN: 0000: resource 2 base: fd000000 limit: 00000000<br>
    Root Device size: 01200000<br>    Root Device base: fd000000<br>    Root Device after align_up base: fd000000<br>    Root Device compute_allocate_mem: base: fe200000 bridge->base: fd000000 size: 01200000 align: 24 gran: 0 done<br>
    root_dev_set_resources is the failure here?<br>    root_dev_set_resources bus->dev Root Device <br>    root_dev_set_resources MEM resource base fd000000 size 0 align 1200000<br>        gran 0 limit 18 flags 0 <br><br>
At this point the Root device has the memory resource with a reasonable base.<br><br>    root(Root Device) assign_resources, bus 0 link: 0<br>    cpus: Unknown device path type: 0<br>    cpus() skipped<br>    apic_0(APIC: 00) skipped<br>
    domain_0(PCI_DOMAIN: 0000) assign_resources<br>    k8_pci_domain_set_resources<br>    PCI: 00:18.0: resource 0 base: 00000000 limit: 00000000 flags = ffffffff mask = 000000ff, type = 00001200<br>    PCI: 00:18.0: resource 0 base: 00000000 limit: 00000000<br>
    PCI: 00:18.0 best is NULL new->base: 00000000 <br>    PCI: 00:18.0: resource 1 base: 00001000 limit: 00000000 flags = 0000ffff mask = 00000000, type = 40000100<br>    PCI: 00:18.0: resource 2 base: 00000000 limit: 00000000 flags = febfffff mask = 00000000, type = 40000200<br>
    PCI: 00:18.0: resource 2 base: 00000000 limit: 00000000<br>    PCI: 00:18.0 best is NULL new->base: 00000000 <br>    PCI: 00:18.0: resource 3 base: 00003000 limit: 00000000 flags = 0000ffff mask = 00000000, type = 40000100<br>
    PCI: 00:18.0: resource 4 base: 00000000 limit: 00000000 flags = ffffffff mask = 000000ff, type = 00001200<br>    PCI: 00:18.0: resource 4 base: 00000000 limit: 00000000<br>    PCI: 00:18.0 best is NULL new->base: 00000000 <br>
    PCI: 00:18.0: resource 5 base: 01200000 limit: 00000000 flags = ffffffff mask = 000000ff, type = 40000200<br>    PCI: 00:18.0: resource 5 base: 01200000 limit: 00000000<br>    PCI: 00:18.0 best is NULL new->base: 01200000 <br>
    better!<br>    find_pci_tolm: tolm=01200000<br>    1: pci_tolm=01200000<br>    1: mmio_basek=00004800<br>    2: mmio_basek=00004800<br>    3: mmio_basek=00000000<br>    node 0 : mmio_basek=00000000, basek=00000300, limitk=00040000<br>
    domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0<br>    domain_0_pci0_18_0(PCI: 00:18.0) assign_resources<br>    amdk8_set_resources: nodeid 0<br>    <br><br><br>