[coreboot] Patch set updated for coreboot: 060fba7 S3: Use old heap during normal boot

Zheng Bao (zheng.bao@amd.com) gerrit at coreboot.org
Wed Apr 18 09:43:24 CEST 2012


Zheng Bao (zheng.bao at amd.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/904

-gerrit

commit 060fba770b8e067defb91ed7ba266fced87e438a
Author: zbao <fishbaozi at gmail.com>
Date:   Wed Apr 18 16:59:53 2012 +0800

    S3: Use old heap during normal boot
    
    During normal boot, the cbmem is uninitialized. So it is illegal to find
    the heap in cbmem.
    
    Change-Id: I8b5e1dbf1124819ed91693a86a6dbe41aea109e5
    Signed-off-by: Zheng Bao <zheng.bao at amd.com>
    Signed-off-by: zbao <fishbaozi at gmail.com>
---
 src/mainboard/amd/persimmon/BiosCallOuts.h |    1 +
 src/mainboard/amd/persimmon/agesawrapper.c |   11 ++++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mainboard/amd/persimmon/BiosCallOuts.h b/src/mainboard/amd/persimmon/BiosCallOuts.h
index 071c73c..cd23110 100644
--- a/src/mainboard/amd/persimmon/BiosCallOuts.h
+++ b/src/mainboard/amd/persimmon/BiosCallOuts.h
@@ -23,6 +23,7 @@
 #include "Porting.h"
 #include "AGESA.h"
 
+#define BIOS_HEAP_START_ADDRESS			0x10000 /* HEAP during cold boot */
 #define BIOS_HEAP_SIZE				0x20000
 #define BSP_STACK_BASE_ADDR			0x30000
 
diff --git a/src/mainboard/amd/persimmon/agesawrapper.c b/src/mainboard/amd/persimmon/agesawrapper.c
index 6bba7ca..e60673e 100644
--- a/src/mainboard/amd/persimmon/agesawrapper.c
+++ b/src/mainboard/amd/persimmon/agesawrapper.c
@@ -40,6 +40,7 @@
 #include <arch/io.h>
 #include <cpu/amd/agesa/s3_resume.h>
 #include <cbmem.h>
+#include <arch/acpi.h>
 
 #define FILECODE UNASSIGNED_FILE_FILECODE
 
@@ -250,11 +251,15 @@ UINT32 GetHeapBase(
 	AMD_CONFIG_PARAMS *StdHeader
 	)
 {
-	UINT32 high_heap;
+	UINT32 heap;
 
-	high_heap = (UINT32)cbmem_find(CBMEM_ID_RESUME_SCRATCH) + (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE); /* base + high_stack_size */
+	/* Both romstage and ramstage has this S3 detect. */
+	if (acpi_get_sleep_type() == 3)
+		heap = (UINT32)cbmem_find(CBMEM_ID_RESUME_SCRATCH) + (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE); /* himem_heap_base + high_stack_size */
+	else
+		heap = BIOS_HEAP_START_ADDRESS; /* low mem */
 
-	return high_heap;
+	return heap;
 }
 
 UINT32




More information about the coreboot mailing list