[coreboot] New patch to review for coreboot: da65497 cbfs: alternative support for cbfs_load_payload()

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Tue Mar 19 01:58:48 CET 2013


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2782

-gerrit

commit da654974d7cd92946e363e024b126daf67e36c12
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Tue Jan 22 13:22:02 2013 -0600

    cbfs: alternative support for cbfs_load_payload()
    
    In certain situations boot speed can be increased by providing an
    alternative implementation to cbfs_load_payload(). The
    ALT_CBFS_LOAD_PAYLOAD option allows for the mainboard or chipset to
    provide its own implementation.
    
    Booted baskingridge board with alternative and regular
    cbfs_load_payload().
    
    Change-Id: I547ac9881a82bacbdb3bbdf38088dfcc22fd0c2c
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/Kconfig        | 9 +++++++++
 src/lib/cbfs.c     | 2 ++
 src/lib/selfboot.c | 1 -
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/Kconfig b/src/Kconfig
index 7206878..f6a83e8 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -47,6 +47,15 @@ config CBFS_PREFIX
 	  Select the prefix to all files put into the image. It's "fallback"
 	  by default, "normal" is a common alternative.
 
+config ALT_CBFS_LOAD_PAYLOAD
+	bool "Use alternative cbfs_load_payload() implementation."
+	default n
+	help
+	 Either board or southbridge provide an alternative cbfs_load_payload()
+	 implementation. This may be used, for example, if accessing the ROM
+	 through memory-mapped I/O is slow and a faster alternative can be
+	 provided.
+
 choice
 	prompt "Compiler to use"
 	default COMPILER_GCC
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index bfdab6c..abb95ab 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -165,11 +165,13 @@ int cbfs_execute_stage(struct cbfs_media *media, const char *name)
 	return run_address((void *)(uintptr_t)ntohll(stage->entry));
 }
 
+#if !CONFIG_ALT_CBFS_LOAD_PAYLOAD
 void *cbfs_load_payload(struct cbfs_media *media, const char *name)
 {
 	return (struct cbfs_payload *)cbfs_get_file_content(
 			media, name, CBFS_TYPE_PAYLOAD);
 }
+#endif
 
 /* Simple buffer */
 
diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index d64ba4c..f32bb81 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -536,4 +536,3 @@ int selfboot(struct lb_memory *mem, struct cbfs_payload *payload)
 out:
 	return 0;
 }
-



More information about the coreboot mailing list