diff options
Diffstat (limited to 'src/northbridge/amd/agesa/family12/northbridge.c')
-rw-r--r-- | src/northbridge/amd/agesa/family12/northbridge.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/northbridge/amd/agesa/family12/northbridge.c b/src/northbridge/amd/agesa/family12/northbridge.c index 6689e71f88..7f1478714b 100644 --- a/src/northbridge/amd/agesa/family12/northbridge.c +++ b/src/northbridge/amd/agesa/family12/northbridge.c @@ -601,9 +601,6 @@ static void domain_set_resources(device_t dev) u32 reset_memhole = 1; #endif - setup_bsp_ramtop(); - setup_uma_memory(); - #if CONFIG_PCI_64BIT_PREF_MEM printk(BIOS_DEBUG, "adsr - CONFIG_PCI_64BIT_PREF_MEM is true.\n"); @@ -914,6 +911,16 @@ static struct device_operations cpu_bus_ops = { static void root_complex_enable_dev(struct device *dev) { printk(BIOS_DEBUG, "\nFam12h - northbridge.c - root_complex_enable_dev - Start.\n"); + static int done = 0; + + /* Do not delay UMA setup, as a device on the PCI bus may evaluate + the global uma_memory variables already in its enable function. */ + if (!done) { + setup_bsp_ramtop(); + setup_uma_memory(); + done = 1; + } + /* Set the operations if it is a special bus type */ if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) { dev->ops = &pci_domain_ops; |