[COMMIT] freebios2 How much have I broken?

Eric W. Biederman ebiederman at lnxi.com
Mon Oct 13 21:26:01 CEST 2003


YhLu <YhLu at 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




More information about the coreboot mailing list