summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Jones <marcj303@gmail.com>2011-04-12 01:12:46 +0000
committerKerry She <Kerry.She@amd.com>2011-04-12 01:12:46 +0000
commit484281b90f92b0ae4e226a090edecc026b37529c (patch)
tree8d87bbdaaef42e86b3c5d31ba5993f2ccd65a029
parent5005bb06c17461ef75cd1fef55c24dffaa05e580 (diff)
downloadcoreboot-484281b90f92b0ae4e226a090edecc026b37529c.tar.xz
Use TOM2 for highest sysmem setting for northbound memory routing (DMA). This fixes 4GB memory issues.
Signed-off-by: Marc Jones <marcj303@gmail.com> Acked-by: Kerry she <kerry.she@amd.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6488 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--src/southbridge/amd/rs780/gfx.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/southbridge/amd/rs780/gfx.c b/src/southbridge/amd/rs780/gfx.c
index d7c11e4003..973e9c017f 100644
--- a/src/southbridge/amd/rs780/gfx.c
+++ b/src/southbridge/amd/rs780/gfx.c
@@ -661,13 +661,15 @@ static void rs780_internal_gfx_enable(device_t dev)
printk(BIOS_DEBUG, "rs780_internal_gfx_enable dev = 0x%p, nb_dev = 0x%p.\n", dev, nb_dev);
- sysmem = rdmsr(0xc001001a);
- printk(BIOS_DEBUG, "sysmem = %x_%x\n", sysmem.hi, sysmem.lo);
-
/* The system top memory in 780. */
+ sysmem = rdmsr(0xc001001a);
+ printk(BIOS_DEBUG, "Sysmem TOM = %x_%x\n", sysmem.hi, sysmem.lo);
pci_write_config32(nb_dev, 0x90, sysmem.lo);
- htiu_write_index(nb_dev, 0x30, 0);
- htiu_write_index(nb_dev, 0x31, 0);
+
+ sysmem = rdmsr(0xc001001D);
+ printk(BIOS_DEBUG, "Sysmem TOM2 = %x_%x\n", sysmem.hi, sysmem.lo);
+ htiu_write_index(nb_dev, 0x31, sysmem.hi);
+ htiu_write_index(nb_dev, 0x30, sysmem.lo | 1);
/* Disable external GFX and enable internal GFX. */
l_dword = pci_read_config32(nb_dev, 0x8c);