[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