Julius Werner submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Julius Werner: Looks good to me, approved
selfboot: Add support for selfload in romstage

Since bootmem is not available in romstage, calls to bootmem APIs need
to be compile-time eliminated in order to avoid linker error:

undefined reference to `bootmem_region_targets_type

BUG=None
BRANCH=None
TEST=./util/abuild/abuild -p none -t GOOGLE_HEROBRINE -x -a -B
cherry-picked on top of CB:49392 and verified successful
compilation.

Change-Id: I8dfa2f2079a9a2859114c53c22bf7ef466ac2ad9
Signed-off-by: Shelley Chen <shchen@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55865
Reviewed-by: Julius Werner <jwerner@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
---
M src/lib/selfboot.c
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index 641631a..f1c0b97 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -34,6 +34,14 @@
static int segment_targets_type(void *dest, unsigned long memsz,
enum bootmem_type dest_type)
{
+ /* No bootmem to check in earlier stages, caller should not use
+ selfload_check(). */
+ if (!ENV_RAMSTAGE) {
+ printk(BIOS_ERR,
+ "Callers not supposed to call selfload_check() in romstage");
+ return 0;
+ }
+
uintptr_t d = (uintptr_t) dest;
if (bootmem_region_targets_type(d, memsz, dest_type))
return 1;

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

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I8dfa2f2079a9a2859114c53c22bf7ef466ac2ad9
Gerrit-Change-Number: 55865
Gerrit-PatchSet: 7
Gerrit-Owner: Shelley Chen <shchen@google.com>
Gerrit-Reviewer: Julius Werner <jwerner@chromium.org>
Gerrit-Reviewer: Ravi kumar <rbokka@codeaurora.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-Reviewer: mturney mturney <mturney@codeaurora.org>
Gerrit-CC: Paul Menzel <paulepanter@mailbox.org>
Gerrit-MessageType: merged