From f20c6e81fe2c12c1ff896f803cdc16849856a5c3 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 14 Feb 2015 16:15:31 -0600 Subject: nvram: Add option to reset NVRAM to default parameters on every boot In specific configurations, such as homogeneous supercomputing systems, changeable NVRAM parameters are more of a liability than a useful tool. This patch allows a coreboot image to be compiled that will always set the NVRAM parameters to their default values, reducing maintainance overhead on large clusters. Change-Id: Ic03e34211d4a58cd60740f2d9a6b50e11fe85822 Signed-off-by: Timothy Pearson Reviewed-on: http://review.coreboot.org/8446 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc --- src/Kconfig | 9 +++++++++ src/arch/x86/include/bootblock_common.h | 2 +- src/drivers/pc80/mc146818rtc.c | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Kconfig b/src/Kconfig index 4c80f34573..a0758bcf22 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -116,6 +116,15 @@ config USE_OPTION_TABLE Enable this option if coreboot shall read options from the "CMOS" NVRAM instead of using hard-coded values. +config STATIC_OPTION_TABLE + bool "Load default configuration values into CMOS on each boot" + default n + depends on USE_OPTION_TABLE + help + Enable this option to reset "CMOS" NVRAM values to default on + every boot. Use this if you want the NVRAM configuration to + never be modified from its default values. + config COMPRESS_RAMSTAGE bool "Compress ramstage with LZMA" default y diff --git a/src/arch/x86/include/bootblock_common.h b/src/arch/x86/include/bootblock_common.h index 276b514b31..b4100b73a2 100644 --- a/src/arch/x86/include/bootblock_common.h +++ b/src/arch/x86/include/bootblock_common.h @@ -32,7 +32,7 @@ static void bootblock_mainboard_init(void) #if CONFIG_USE_OPTION_TABLE static void sanitize_cmos(void) { - if (cmos_error() || !cmos_chksum_valid()) { + if (cmos_error() || !cmos_chksum_valid() || IS_ENABLED(CONFIG_STATIC_OPTION_TABLE)) { unsigned char *cmos_default = (unsigned char*)walkcbfs("cmos.default"); if (cmos_default) { int i; diff --git a/src/drivers/pc80/mc146818rtc.c b/src/drivers/pc80/mc146818rtc.c index b18f22f43d..fe669caa98 100644 --- a/src/drivers/pc80/mc146818rtc.c +++ b/src/drivers/pc80/mc146818rtc.c @@ -56,6 +56,9 @@ static void cmos_reset_date(void) static int cmos_checksum_valid(int range_start, int range_end, int cks_loc) { + if (IS_ENABLED(CONFIG_STATIC_OPTION_TABLE)) + return 1; + int i; u16 sum, old_sum; sum = 0; -- cgit v1.2.3