From 29840e234cf6a58313d7d8bc1db1b2fcd5a33bb1 Mon Sep 17 00:00:00 2001 From: Siyuan Wang Date: Tue, 4 Jun 2013 19:56:22 +0800 Subject: AMD Fam 15tn: Use all memory on systems with more than 4 GB Take a Parmer board with 4G memory as an example. Use 'cat /proc/meminfo' to check memory, it reads 'MemTotal 3327540kB'. Parmer uses 512M as video memory when it has 4G. 3327540+512*1024 = 3851828(kB), so some memory is lost. When Parmer has 4G memory, TOM2 low is 0x1F000000, TOM2 high is 0x00000001. But in e820 table or coreboot table, the last item is 6: 0000000100000000 - 0000000118000000 = 1 RAM This is not correct, it should be 6: 0000000100000000 - 000000011f000000 = 1 RAM This patch changes the memory layout when TOM2 is set. Change-Id: I4e2d163ae8fe1e65ddc384b520a5112ca067b1d1 Signed-off-by: Siyuan Wang Signed-off-by: Siyuan Wang Reviewed-on: http://review.coreboot.org/3366 Reviewed-by: Paul Menzel Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- src/northbridge/amd/agesa/family15tn/northbridge.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/northbridge') diff --git a/src/northbridge/amd/agesa/family15tn/northbridge.c b/src/northbridge/amd/agesa/family15tn/northbridge.c index dc68f77e94..f91f69098b 100644 --- a/src/northbridge/amd/agesa/family15tn/northbridge.c +++ b/src/northbridge/amd/agesa/family15tn/northbridge.c @@ -811,8 +811,9 @@ static void domain_set_resources(device_t dev) sizek = 0; } else { + uint64_t topmem2 = bsp_topmem2(); basek = 4*1024*1024; - sizek -= (4*1024*1024 - mmio_basek); + sizek = topmem2/1024 - basek; } } -- cgit v1.2.3