diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2012-08-27 20:00:33 +0300 |
---|---|---|
committer | Alexandru Gagniuc <mr.nuke.me@gmail.com> | 2012-08-28 23:27:10 +0200 |
commit | 87213b655eaa09522366f92088f94913024b6ef9 (patch) | |
tree | d285ad9e810a650a022efeaa0fdc142ec62bfc7f /src/northbridge/amd/amdk8/northbridge.c | |
parent | 71c7a3fdc34b013c05d7de08728dfae4064d1946 (diff) |
Fix AMD UMA for RS780
In commit 6b5eb1cc2d1702ff10cd02249d3d861c094f9118 setup of
UMA memory region was moved to happen at a later state and
this broke UMA with RS780 southbridge.
Share the TOP_MEM and UMA settings before any of the PCI or CPU
scanning takes place.
Change-Id: I9cae1fc2948cbccede58d099faf1dfe49e9df303
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/1488
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Dave Frodin <dave.frodin@se-eng.com>
Reviewed-by: Anton Kochkov <anton.kochkov@gmail.com>
Diffstat (limited to 'src/northbridge/amd/amdk8/northbridge.c')
-rw-r--r-- | src/northbridge/amd/amdk8/northbridge.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c index 9f2fe66c29..eba018fa3e 100644 --- a/src/northbridge/amd/amdk8/northbridge.c +++ b/src/northbridge/amd/amdk8/northbridge.c @@ -884,9 +884,6 @@ static void amdk8_domain_set_resources(device_t dev) u32 reset_memhole = 1; #endif - setup_bsp_ramtop(); - setup_uma_memory(); - #if 0 /* Place the IO devices somewhere safe */ io = find_resource(dev, 0); @@ -1349,6 +1346,16 @@ static struct device_operations cpu_bus_ops = { static void root_complex_enable_dev(struct device *dev) { + 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; |