[coreboot-gerrit] Change in coreboot[master]: lib/prog_loaders: Move argument selection into selfload

Philipp Deppenwiese (Code Review) gerrit at coreboot.org
Tue Jun 19 16:28:06 CEST 2018


Philipp Deppenwiese has submitted this change and it was merged. ( https://review.coreboot.org/25861 )

Change subject: lib/prog_loaders: Move argument selection into selfload
......................................................................

lib/prog_loaders: Move argument selection into selfload

Set the payload argument in selfload, as other (non self) payloads, are
going to set a different argument.

Change-Id: I994f604fc4501e0e3b00165819f796b1b8275d8c
Signed-off-by: Patrick Rudolph <patrick.rudolph at 9elements.com>
Reviewed-on: https://review.coreboot.org/25861
Reviewed-by: Julius Werner <jwerner at chromium.org>
Reviewed-by: Aaron Durbin <adurbin at chromium.org>
Tested-by: build bot (Jenkins) <no-reply at coreboot.org>
---
M src/arch/arm64/arm_tf.c
M src/include/program_loading.h
M src/lib/prog_loaders.c
M src/lib/selfboot.c
4 files changed, 13 insertions(+), 11 deletions(-)

Approvals:
  build bot (Jenkins): Verified
  Aaron Durbin: Looks good to me, approved
  Julius Werner: Looks good to me, approved



diff --git a/src/arch/arm64/arm_tf.c b/src/arch/arm64/arm_tf.c
index a172d42..88416ea 100644
--- a/src/arch/arm64/arm_tf.c
+++ b/src/arch/arm64/arm_tf.c
@@ -51,9 +51,9 @@
 	if (prog_locate(&bl31))
 		die("BL31 not found");
 
-	bl31_entry = selfload(&bl31, false);
-	if (!bl31_entry)
+	if (!selfload(&bl31, false))
 		die("BL31 load failed");
+	bl31_entry = prog_entry(&bl31);
 
 	SET_PARAM_HEAD(&bl31_params, PARAM_BL31, VERSION_1, 0);
 
diff --git a/src/include/program_loading.h b/src/include/program_loading.h
index 3cf1687..482c8b8 100644
--- a/src/include/program_loading.h
+++ b/src/include/program_loading.h
@@ -202,10 +202,10 @@
 /*
  * Set check_regions to true to check that the payload targets usable memory.
  * With this flag set, if it does not, the load will fail and this function
- * will return NULL.
+ * will return false. On successful payload loading this functions return true.
  *
  * Defined in src/lib/selfboot.c
  */
-void *selfload(struct prog *payload, bool check_regions);
+bool selfload(struct prog *payload, bool check_regions);
 
 #endif /* PROGRAM_LOADING_H */
diff --git a/src/lib/prog_loaders.c b/src/lib/prog_loaders.c
index 04b573e..6811eb0 100644
--- a/src/lib/prog_loaders.c
+++ b/src/lib/prog_loaders.c
@@ -30,6 +30,7 @@
 #include <stage_cache.h>
 #include <symbols.h>
 #include <timestamp.h>
+#include <cbfs.h>
 
 /* Only can represent up to 1 byte less than size_t. */
 const struct mem_region_device addrspace_32bit =
@@ -182,9 +183,7 @@
 
 	mirror_payload(payload);
 
-	/* Pass cbtables to payload if architecture desires it. */
-	prog_set_entry(payload, selfload(payload, true),
-			cbmem_find(CBMEM_ID_CBTABLE));
+	selfload(payload, true);
 
 out:
 	if (prog_entry(payload) == NULL)
diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index 4046649..a79f61d 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -28,6 +28,7 @@
 #include <bootmem.h>
 #include <program_loading.h>
 #include <timestamp.h>
+#include <cbmem.h>
 
 static const unsigned long lb_start = (unsigned long)&_program;
 static const unsigned long lb_end = (unsigned long)&_eprogram;
@@ -520,7 +521,7 @@
 	return 1;
 }
 
-void *selfload(struct prog *payload, bool check_regions)
+bool selfload(struct prog *payload, bool check_regions)
 {
 	uintptr_t entry = 0;
 	struct segment head;
@@ -529,7 +530,7 @@
 	data = rdev_mmap_full(prog_rdev(payload));
 
 	if (data == NULL)
-		return NULL;
+		return false;
 
 	/* Preprocess the self segments */
 	if (!build_self_segment_list(&head, data, &entry))
@@ -546,9 +547,11 @@
 	/* Update the payload's area with the bounce buffer information. */
 	prog_set_area(payload, (void *)(uintptr_t)bounce_buffer, bounce_size);
 
-	return (void *)entry;
+	/* Pass cbtables to payload if architecture desires it. */
+	prog_set_entry(payload, (void *)entry, cbmem_find(CBMEM_ID_CBTABLE));
 
+	return true;
 out:
 	rdev_munmap(prog_rdev(payload), data);
-	return NULL;
+	return false;
 }

-- 
To view, visit https://review.coreboot.org/25861
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I994f604fc4501e0e3b00165819f796b1b8275d8c
Gerrit-Change-Number: 25861
Gerrit-PatchSet: 11
Gerrit-Owner: Patrick Rudolph <patrick.rudolph at 9elements.com>
Gerrit-Reviewer: Aaron Durbin <adurbin at chromium.org>
Gerrit-Reviewer: Julius Werner <jwerner at chromium.org>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph at 9elements.com>
Gerrit-Reviewer: Paul Menzel <paulepanter at users.sourceforge.net>
Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki at gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply at coreboot.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180619/55468181/attachment.html>


More information about the coreboot-gerrit mailing list