Move calls to quick_ram_check() before CBMEM init
After raminit completes, do a read-modify-write test just below CBMEM top address. If test fails, die(). Change-Id: I33d4153a5ce0908b8889517394afb46f1ca28f92 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31978 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
This commit is contained in:
committed by
Patrick Georgi
parent
12724d6ad6
commit
f5cf60f25b
@@ -18,6 +18,7 @@
|
||||
#include <console/console.h>
|
||||
#include <cbmem.h>
|
||||
#include <imd.h>
|
||||
#include <lib.h>
|
||||
#include <stdlib.h>
|
||||
#include <arch/early_variables.h>
|
||||
|
||||
@@ -119,6 +120,10 @@ static void cbmem_top_init_once(void)
|
||||
return;
|
||||
|
||||
cbmem_top_init();
|
||||
|
||||
/* The test is only effective on X86 and when address hits UC memory. */
|
||||
if (ENV_X86)
|
||||
quick_ram_check_or_die((uintptr_t)cbmem_top() - sizeof(u32));
|
||||
}
|
||||
|
||||
void cbmem_initialize_empty_id_size(u32 id, u64 size)
|
||||
|
@@ -171,7 +171,10 @@ int ram_check_noprint_nodie(unsigned long start, unsigned long stop)
|
||||
return failures;
|
||||
}
|
||||
|
||||
static void __quick_ram_check(uintptr_t dst)
|
||||
/* Assumption is 32-bit addressable UC memory at dst. This also executes
|
||||
* on S3 resume path so target memory must be restored.
|
||||
*/
|
||||
void quick_ram_check_or_die(uintptr_t dst)
|
||||
{
|
||||
int fail = 0;
|
||||
u32 backup;
|
||||
@@ -200,8 +203,3 @@ static void __quick_ram_check(uintptr_t dst)
|
||||
}
|
||||
phys_memory_barrier();
|
||||
}
|
||||
|
||||
void quick_ram_check(void)
|
||||
{
|
||||
__quick_ram_check(0x100000);
|
||||
}
|
||||
|
Reference in New Issue
Block a user