YhLu YhLu@tyan.com writes:
Eric,
After changed to following, PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x00000003, PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x00000000, PCI_ADDR(0, 0x18, 1, 0xE8), 0x0000FC88, 0x00000000, PCI_ADDR(0, 0x18, 1, 0xEC), 0x0000FC88, 0x00000000,
And below is the code that I think will unconditionally fix the weird cases. It does not hurt anything here, but I don't have a board with a second link handy, so I can't reproduce the failure case. I just get strange hangs when I attempt to route resources out an invalid link.
It goes in in src/northbridge/amd/amdk8/northbridge.c
unsigned int amdk8_scan_root_bus(device_t root, unsigned int max) { unsigned reg; max = pci_scan_bus(&root->link[0], PCI_DEVFN(0x18, 0), 0xff, max); /* Unmap all of the other pci busses */ for(reg = 0xe0; reg <= 0xec; reg += 4) { f1_write_config32(reg, 0); } return max; }
Eric