Arthur Heymans has uploaded this change for review.

View Change

lib/cbmem_top.c: Add some romstage helper functions to save cbmem_top

With complicated vendor reference code or blobs it is not always easy
to figure out ourselves where the top of lower memory is and we have
to rely on the output of the vendor code. This adds a helper function
to save a value return by the vendor code to be used to implement
cbmem_top.

Change-Id: I4c547e7c19bfaf60db348a5cba2e23091ff06450
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
---
M src/include/cbmem.h
M src/lib/Kconfig
M src/lib/cbmem_top.c
3 files changed, 23 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/87/36287/1
diff --git a/src/include/cbmem.h b/src/include/cbmem.h
index a6cd277..a2326df 100644
--- a/src/include/cbmem.h
+++ b/src/include/cbmem.h
@@ -161,6 +161,10 @@
uintptr_t restore_top_of_low_cacheable(void);
#endif

+/* If CONFIG_CBMEM_TOP_MEM is selected cbmem_top will return the value
+ of the function argument. */
+void save_top_mem(uintptr_t ramtop);
+
/*
* Returns 0 for the stages where we know that cbmem does not come online.
* Even if this function returns 1 for romstage, depending upon the point in
diff --git a/src/lib/Kconfig b/src/lib/Kconfig
index aede4b3..bf77320 100644
--- a/src/lib/Kconfig
+++ b/src/lib/Kconfig
@@ -30,6 +30,12 @@
Select this if stages run after romstage get the cbmem_top
pointer the function arguments when called from romstage.

+config CBMEM_TOP_SAVE
+ bool
+ help
+ Select this on platforms if you want to save a variable during
+ containing the top of lower memory at which cbmem will be installed.
+
config FLATTENED_DEVICE_TREE
bool
help
diff --git a/src/lib/cbmem_top.c b/src/lib/cbmem_top.c
index 6eee0d5..016b548 100644
--- a/src/lib/cbmem_top.c
+++ b/src/lib/cbmem_top.c
@@ -25,5 +25,18 @@
is implemented */
return cbmem_top_romstage();
}
+#endif

+#if CONFIG(CBMEM_TOP_SAVE)
+static uintptr_t cbmem_top_p;
+
+void save_top_mem(uintptr_t ramtop)
+{
+ cbmem_top_p = ramtop;
+}
+
+void *cbmem_top_romstage(void)
+{
+ return (void *)cbmem_top_p;
+}
#endif

To view, visit change 36287. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I4c547e7c19bfaf60db348a5cba2e23091ff06450
Gerrit-Change-Number: 36287
Gerrit-PatchSet: 1
Gerrit-Owner: Arthur Heymans <arthur@aheymans.xyz>
Gerrit-MessageType: newchange