[coreboot-gerrit] Patch set updated for coreboot: 7a5551f Add a KEEP_BOOT_COUNT Kconfig option.

Denis Carikli (GNUtoo@no-log.org) gerrit at coreboot.org
Tue Nov 12 00:13:40 CET 2013


Denis Carikli (GNUtoo at no-log.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3990

-gerrit

commit 7a5551f02022541afdba9cc919ef7d3a6d8cbbb9
Author: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
Date:   Mon Oct 21 01:56:47 2013 +0200

    Add a KEEP_BOOT_COUNT Kconfig option.
    
    The use case of that option is to inform coreboot (trough the nvram) at the
      next boot, that the computer could not fully boot to boot to an usable state.
      In that case, the boot count is incremented by one.
    
    Previously there was no way to tell coreboot that the computer really booted
      successfully, because it was assumed that if set_boot_successful was called
      in ramstage, then the computer would have booted successfully.
    
    However many things can go wrong after that point, for instance the payload
      could fail to boot, or the operating system's kernel could fail to boot too,
      due to the wrong configurations passed to it by coreboot and the payload.
    
    Change-Id: I01af053455eb6bd2f7a4f9d37e8c234ba8d55250
    Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>
---
 src/arch/x86/Kconfig     |  8 ++++++++
 src/arch/x86/boot/acpi.c | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 52bafbd..e13ebbb 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -80,6 +80,14 @@ config MAX_REBOOT_CNT
 	 the nvram is reset, which will make it switch to fallback/
 	 again during the next boot.
 
+config KEEP_BOOT_COUNT
+	bool "Keep boot count"
+	default n
+	depends on PC80_SYSTEM && X86_BOOTBLOCK_NORMAL
+	help
+	  If enabled, the boot count is not reset anymore in the ramstage.
+	  This delegates that task to the software running after the ramstage.
+
 config BOOTBLOCK_SOURCE
 	string
 	default "bootblock_simple.c" if X86_BOOTBLOCK_SIMPLE
diff --git a/src/arch/x86/boot/acpi.c b/src/arch/x86/boot/acpi.c
index 96cb270..2b1e764 100644
--- a/src/arch/x86/boot/acpi.c
+++ b/src/arch/x86/boot/acpi.c
@@ -33,6 +33,9 @@
 #include <cbmem.h>
 #include <cpu/x86/lapic_def.h>
 #include <cpu/cpu.h>
+#if CONFIG_KEEP_BOOT_COUNT
+#include <fallback.h>
+#endif
 #if CONFIG_COLLECT_TIMESTAMPS
 #include <timestamp.h>
 #endif
@@ -638,6 +641,15 @@ void acpi_resume(void *wake_vec)
 	if (mainboard_suspend_resume)
 		mainboard_suspend_resume();
 
+#if CONFIG_KEEP_BOOT_COUNT
+	/* we don't want to resume with the wrong prefix next time.
+	 * And doing it in the bootblock seems counterintuitive:
+	 * the bootblock would then need to know it's resuming...
+	 */
+	if (strncmp(CONFIG_CBFS_PREFIX, "fallback", sizeof("fallback")))
+		set_boot_successful();
+#endif
+
 	post_code(POST_OS_RESUME);
 	acpi_jump_to_wakeup(wake_vec);
 }



More information about the coreboot-gerrit mailing list