Eric,
I found in amdk8_scan_root_bus in northbridge/amd/amdk8/northbridge.c You put /* Unmap all of the other pci busses */ for(reg = 0xe0; reg <= 0xec; reg += 4) { f1_write_config32(reg, 0); }
Why you need to clear that? After you clear that, I can not see the 8151 and AGP in s2885.
PS: I have reversed the scan sequence to make sure HT scan 8111 at first and then 8151.
Regards
Yinghai Lu
YhLu YhLu@tyan.com writes:
Eric,
I found in amdk8_scan_root_bus in northbridge/amd/amdk8/northbridge.c You put /* Unmap all of the other pci busses */ for(reg = 0xe0; reg <= 0xec; reg += 4) { f1_write_config32(reg, 0); }
Why you need to clear that? After you clear that, I can not see the 8151 and AGP in s2885.
Hmm. This looks like a thinko.
So right now the code says: 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; }
And I think what I meant was: unsigned int amdk8_scan_root_bus(device_t root, unsigned int max) { unsigned reg; /* Unmap all of the other pci busses */ for(reg = 0xe0; reg <= 0xec; reg += 4) { f1_write_config32(reg, 0); } max = pci_scan_bus(&root->link[0], PCI_DEVFN(0x18, 0), 0xff, max); return max; }
I don't have a clue why it works at all with clearing those registers after the pci bus scan.
I wonder if that is the reason scan order matters because I don't clear those registers out first and things are dual mapped.
Anyway my intention was to be very careful and to clear the HT chain mapping registers before we scanned them so we didn't have any old configurations getting in the way.
Eric