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@amd.com> Signed-off-by: zbao <fishbaozi@gmail.com> Reviewed-on: http://review.coreboot.org/904 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marcj303@gmail.com>
This commit is contained in:
		| @@ -23,6 +23,7 @@ | |||||||
| #include "Porting.h" | #include "Porting.h" | ||||||
| #include "AGESA.h" | #include "AGESA.h" | ||||||
|  |  | ||||||
|  | #define BIOS_HEAP_START_ADDRESS			0x10000 /* HEAP during cold boot */ | ||||||
| #define BIOS_HEAP_SIZE				0x20000 | #define BIOS_HEAP_SIZE				0x20000 | ||||||
| #define BSP_STACK_BASE_ADDR			0x30000 | #define BSP_STACK_BASE_ADDR			0x30000 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -40,6 +40,7 @@ | |||||||
| #include <arch/io.h> | #include <arch/io.h> | ||||||
| #include <cpu/amd/agesa/s3_resume.h> | #include <cpu/amd/agesa/s3_resume.h> | ||||||
| #include <cbmem.h> | #include <cbmem.h> | ||||||
|  | #include <arch/acpi.h> | ||||||
|  |  | ||||||
| #define FILECODE UNASSIGNED_FILE_FILECODE | #define FILECODE UNASSIGNED_FILE_FILECODE | ||||||
|  |  | ||||||
| @@ -250,11 +251,15 @@ UINT32 GetHeapBase( | |||||||
| 	AMD_CONFIG_PARAMS *StdHeader | 	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 | UINT32 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user