summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2020-02-06 18:27:50 +0100
committerPatrick Georgi <pgeorgi@google.com>2020-08-17 06:22:58 +0000
commit54a4f172d80d0490ecd6ad07e3c23341a27bed8f (patch)
tree65fc58cd511d8c3323c6cdc3bf6d953a420f834f
parenta6a2f9372c492c2e6ca4404b372054b1fd82e1ee (diff)
downloadcoreboot-54a4f172d80d0490ecd6ad07e3c23341a27bed8f.tar.xz
lib/imd_cbmem.c: Add a helper function to indicate that cbmem is ready
This can be used in romstage in particular to know if dram is ready. Change-Id: I0231ab9c0b78a69faa762e0a97378bf0b50eebaf Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/38736 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-rw-r--r--src/include/cbmem.h14
-rw-r--r--src/lib/imd_cbmem.c6
2 files changed, 20 insertions, 0 deletions
diff --git a/src/include/cbmem.h b/src/include/cbmem.h
index b548cd9559..7e1da17b98 100644
--- a/src/include/cbmem.h
+++ b/src/include/cbmem.h
@@ -155,4 +155,18 @@ static inline int cbmem_possibly_online(void)
return 1;
}
+/* Returns 1 after running cbmem init hooks, 0 otherwise. */
+static inline int cbmem_online(void)
+{
+ extern int cbmem_initialized;
+
+ if (!cbmem_possibly_online())
+ return 0;
+
+ if (ENV_ROMSTAGE)
+ return cbmem_initialized;
+
+ return 1;
+}
+
#endif /* _CBMEM_H_ */
diff --git a/src/lib/imd_cbmem.c b/src/lib/imd_cbmem.c
index 7638e0e578..4b7c4120b0 100644
--- a/src/lib/imd_cbmem.c
+++ b/src/lib/imd_cbmem.c
@@ -30,6 +30,8 @@ void *cbmem_top(void)
dead_code();
}
+int cbmem_initialized;
+
static inline const struct cbmem_entry *imd_to_cbmem(const struct imd_entry *e)
{
return (const struct cbmem_entry *)e;
@@ -79,6 +81,8 @@ void cbmem_initialize_empty_id_size(u32 id, u64 size)
/* Complete migration to CBMEM. */
cbmem_run_init_hooks(no_recovery);
+
+ cbmem_initialized = 1;
}
int cbmem_initialize(void)
@@ -112,6 +116,8 @@ int cbmem_initialize_id_size(u32 id, u64 size)
/* Complete migration to CBMEM. */
cbmem_run_init_hooks(recovery);
+ cbmem_initialized = 1;
+
/* Recovery successful. */
return 0;
}