<p>Lev has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26300">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">commonlib: CBFS based option table implementation<br><br>Change-Id: Ia2b962bad8d3eea3cf7b9a9d79a46b0c5add93cc<br>Signed-off-by: Bartek Pastudzki <Bartek.Pastudzki@3mdeb.com><br>---<br>M src/Kconfig<br>M src/commonlib/Makefile.inc<br>A src/commonlib/option.c<br>M src/drivers/pc80/rtc/mc146818rtc.c<br>M src/drivers/pc80/rtc/mc146818rtc_boot.c<br>M src/include/option.h<br>M src/include/pc80/mc146818rtc.h<br>7 files changed, 125 insertions(+), 35 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/00/26300/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/Kconfig b/src/Kconfig</span><br><span>index 99a704d..000b801 100644</span><br><span>--- a/src/Kconfig</span><br><span>+++ b/src/Kconfig</span><br><span>@@ -113,15 +113,28 @@</span><br><span>         Otherwise, say N to use the provided pregenerated scanner/parser.</span><br><span> </span><br><span> config USE_OPTION_TABLE</span><br><span style="color: hsl(0, 100%, 40%);">-      bool "Use CMOS for configuration values"</span><br><span style="color: hsl(120, 100%, 40%);">+    bool "Use option table for configuration values"</span><br><span>   depends on HAVE_OPTION_TABLE</span><br><span>         help</span><br><span>           Enable this option if coreboot shall read options from the "CMOS"</span><br><span>          NVRAM instead of using hard-coded values.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+choice</span><br><span style="color: hsl(120, 100%, 40%);">+       prompt "Option table backend"</span><br><span style="color: hsl(120, 100%, 40%);">+       default OPTION_TABLE_CMOS</span><br><span style="color: hsl(120, 100%, 40%);">+     depends on USE_OPTION_TABLE</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config OPTION_TABLE_CMOS</span><br><span style="color: hsl(120, 100%, 40%);">+       bool "CMOS"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config OPTION_TABLE_CBFS</span><br><span style="color: hsl(120, 100%, 40%);">+     bool "CBFS"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endchoice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> config STATIC_OPTION_TABLE</span><br><span>   bool "Load default configuration values into CMOS on each boot"</span><br><span style="color: hsl(0, 100%, 40%);">-       depends on USE_OPTION_TABLE</span><br><span style="color: hsl(120, 100%, 40%);">+   depends on OPTION_TABLE_CMOS</span><br><span>         help</span><br><span>           Enable this option to reset "CMOS" NVRAM values to default on</span><br><span>      every boot.  Use this if you want the NVRAM configuration to</span><br><span>diff --git a/src/commonlib/Makefile.inc b/src/commonlib/Makefile.inc</span><br><span>index edd17c3..ef2dc99 100644</span><br><span>--- a/src/commonlib/Makefile.inc</span><br><span>+++ b/src/commonlib/Makefile.inc</span><br><span>@@ -35,3 +35,6 @@</span><br><span> romstage-y += lz4_wrapper.c</span><br><span> ramstage-y += lz4_wrapper.c</span><br><span> postcar-y += lz4_wrapper.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-$(CONFIG_OPTION_TABLE_CBFS) += option.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-$(CONFIG_OPTION_TABLE_CBFS) += option.c</span><br><span>diff --git a/src/commonlib/option.c b/src/commonlib/option.c</span><br><span>new file mode 100644</span><br><span>index 0000000..08de19e</span><br><span>--- /dev/null</span><br><span>+++ b/src/commonlib/option.c</span><br><span>@@ -0,0 +1,68 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 3mdeb</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <option.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <cbfs.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <types.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <commonlib/cbfs.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <commonlib/region.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <commonlib/cbfs_serialized.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define CONFIG_FILE "option_table"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static char *after_str(const char *s, const char *pattern)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     size_t pattern_l = strlen(pattern);</span><br><span style="color: hsl(120, 100%, 40%);">+   while ((s = strchr(s, pattern[0])) != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+         if (strncmp(s, pattern, pattern_l) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                      return (char *)s+pattern_l;</span><br><span style="color: hsl(120, 100%, 40%);">+           s++;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define map_cbfs_file(...) cbfs_boot_map_with_leak(__VA_ARGS__)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum cb_err get_option(void *dest, const char *name)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *boot_file = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ size_t boot_file_len = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     char *token = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ boot_file = map_cbfs_file(</span><br><span style="color: hsl(120, 100%, 40%);">+            CONFIG_FILE, CBFS_TYPE_RAW, &boot_file_len</span><br><span style="color: hsl(120, 100%, 40%);">+        );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (boot_file == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printk(BIOS_ALERT,</span><br><span style="color: hsl(120, 100%, 40%);">+                    "file [%s] not found in CBFS\n", CONFIG_FILE</span><br><span style="color: hsl(120, 100%, 40%);">+                );</span><br><span style="color: hsl(120, 100%, 40%);">+            return CB_CMOS_OPTION_NOT_FOUND;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   token = after_str(boot_file, name);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (token != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+          *((u8 *)dest) = *token - '0';</span><br><span style="color: hsl(120, 100%, 40%);">+         return CB_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return CB_CMOS_OPTION_NOT_FOUND;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/drivers/pc80/rtc/mc146818rtc.c b/src/drivers/pc80/rtc/mc146818rtc.c</span><br><span>index 928b403..e87a4da 100644</span><br><span>--- a/src/drivers/pc80/rtc/mc146818rtc.c</span><br><span>+++ b/src/drivers/pc80/rtc/mc146818rtc.c</span><br><span>@@ -30,7 +30,7 @@</span><br><span> #include <security/vboot/vbnv_layout.h></span><br><span> </span><br><span> /* There's no way around this include guard. option_table.h is autogenerated */</span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span> #include "option_table.h"</span><br><span> #else</span><br><span> #define LB_CKS_RANGE_START       0</span><br><span>@@ -65,6 +65,7 @@</span><br><span>        rtc_set(&time);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span> static int cmos_checksum_valid(int range_start, int range_end, int cks_loc)</span><br><span> {</span><br><span>   int i;</span><br><span>@@ -92,6 +93,7 @@</span><br><span>   cmos_write(((sum >> 8) & 0x0ff), cks_loc);</span><br><span>         cmos_write(((sum >> 0) & 0x0ff), cks_loc + 1);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* CONFIG_OPTION_TABLE_CMOS */</span><br><span> </span><br><span> #define RTC_CONTROL_DEFAULT (RTC_24H)</span><br><span> #define RTC_FREQ_SELECT_DEFAULT (RTC_REF_CLCK_32KHZ | RTC_RATE_1024HZ)</span><br><span>@@ -122,15 +124,15 @@</span><br><span>  x = cmos_read(RTC_VALID);</span><br><span>    cmos_invalid = !(x & RTC_VRT);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (IS_ENABLED(CONFIG_USE_OPTION_TABLE)) {</span><br><span style="color: hsl(120, 100%, 40%);">+    #if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span>             /* See if there is a CMOS checksum error */</span><br><span>          checksum_invalid = !cmos_checksum_valid(PC_CKS_RANGE_START,</span><br><span>                                          PC_CKS_RANGE_END, PC_CKS_LOC);</span><br><span> </span><br><span>           clear_cmos = false;</span><br><span style="color: hsl(0, 100%, 40%);">-     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+      #else</span><br><span>                clear_cmos = true;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(120, 100%, 40%);">+     #endif /* CONFIG_OPTION_TABLE_CMOS */</span><br><span> </span><br><span>    if (cmos_invalid || invalid)</span><br><span>                 cmos_write(cmos_read(RTC_CONTROL) | RTC_SET, RTC_CONTROL);</span><br><span>@@ -162,7 +164,7 @@</span><br><span>     /* Ensure all reserved bits are 0 in register D */</span><br><span>   cmos_write(RTC_VRT, RTC_VALID);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (IS_ENABLED(CONFIG_USE_OPTION_TABLE)) {</span><br><span style="color: hsl(120, 100%, 40%);">+    #if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span>             /* See if there is a LB CMOS checksum error */</span><br><span>               checksum_invalid = !cmos_checksum_valid(LB_CKS_RANGE_START,</span><br><span>                          LB_CKS_RANGE_END, LB_CKS_LOC);</span><br><span>@@ -171,7 +173,7 @@</span><br><span> </span><br><span>             /* Make certain we have a valid checksum */</span><br><span>          cmos_set_checksum(PC_CKS_RANGE_START, PC_CKS_RANGE_END, PC_CKS_LOC);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     #endif</span><br><span> </span><br><span>   /* Clear any pending interrupts */</span><br><span>   cmos_read(RTC_INTR_FLAGS);</span><br><span>@@ -204,6 +206,8 @@</span><br><span> #endif      /* __SMM__ */</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span>  * This routine returns the value of the requested bits.</span><br><span>  * input bit = bit count from the beginning of the cmos image</span><br><span>@@ -247,9 +251,6 @@</span><br><span>   size_t namelen;</span><br><span>      int found = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (!IS_ENABLED(CONFIG_USE_OPTION_TABLE))</span><br><span style="color: hsl(0, 100%, 40%);">-               return CB_CMOS_OTABLE_DISABLED;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      LOCK_NVRAM_CBFS_SPINLOCK();</span><br><span> </span><br><span>      /* Figure out how long name is */</span><br><span>@@ -337,11 +338,8 @@</span><br><span> {</span><br><span>        printk(BIOS_NOTICE, "NOTICE: read_option() used to access CMOS "</span><br><span>           "from non-ROMCC code, please use get_option() instead.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-   if (IS_ENABLED(CONFIG_USE_OPTION_TABLE)) {</span><br><span style="color: hsl(0, 100%, 40%);">-              const unsigned char byte = cmos_read(start / 8);</span><br><span style="color: hsl(0, 100%, 40%);">-                return (byte >> (start & 7U)) & ((1U << size) - 1U);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-       return def;</span><br><span style="color: hsl(120, 100%, 40%);">+   const unsigned char byte = cmos_read(start / 8);</span><br><span style="color: hsl(120, 100%, 40%);">+      return (byte >> (start & 7U)) & ((1U << size) - 1U);</span><br><span> }</span><br><span> </span><br><span> enum cb_err set_option(const char *name, void *value)</span><br><span>@@ -352,9 +350,6 @@</span><br><span>     size_t namelen;</span><br><span>      int found = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (!IS_ENABLED(CONFIG_USE_OPTION_TABLE))</span><br><span style="color: hsl(0, 100%, 40%);">-               return CB_CMOS_OTABLE_DISABLED;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      /* Figure out how long name is */</span><br><span>    namelen = strnlen(name, CMOS_MAX_NAME_LENGTH);</span><br><span> </span><br><span>@@ -394,9 +389,11 @@</span><br><span>    return CB_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* CONFIG_OPTION_TABLE_CMOS */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span>  * If the CMOS is cleared, the rtc_reg has the invalid date. That</span><br><span style="color: hsl(0, 100%, 40%);">- * hurts some OSes. Even if we don't set USE_OPTION_TABLE, we need</span><br><span style="color: hsl(120, 100%, 40%);">+ * hurts some OSes. Even if we don't set OPTION_TABLE_CMOS, we need</span><br><span>  * to make sure the date is valid.</span><br><span>  */</span><br><span> void cmos_check_update_date(void)</span><br><span>diff --git a/src/drivers/pc80/rtc/mc146818rtc_boot.c b/src/drivers/pc80/rtc/mc146818rtc_boot.c</span><br><span>index c5cd86c..7b2bc88 100644</span><br><span>--- a/src/drivers/pc80/rtc/mc146818rtc_boot.c</span><br><span>+++ b/src/drivers/pc80/rtc/mc146818rtc_boot.c</span><br><span>@@ -34,7 +34,7 @@</span><br><span> int cmos_chksum_valid(void);</span><br><span> int cmos_chksum_valid(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span>   unsigned char addr;</span><br><span>  u16 sum, old_sum;</span><br><span> </span><br><span>@@ -53,7 +53,7 @@</span><br><span> #endif</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span> void sanitize_cmos(void)</span><br><span> {</span><br><span>       if (cmos_error() || !cmos_chksum_valid() ||</span><br><span>diff --git a/src/include/option.h b/src/include/option.h</span><br><span>index f6ede96..686e961 100644</span><br><span>--- a/src/include/option.h</span><br><span>+++ b/src/include/option.h</span><br><span>@@ -1,19 +1,24 @@</span><br><span> #ifndef _OPTION_H_</span><br><span> #define _OPTION_H_</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * FIXME: get_option() needs to be abstracted better so that other non-volatile</span><br><span style="color: hsl(0, 100%, 40%);">- * storage can be used. This will benefit machines without CMOS as well as those</span><br><span style="color: hsl(0, 100%, 40%);">- * without a battery-backed CMOS (e.g. some laptops).</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(0, 100%, 40%);">-#include <pc80/mc146818rtc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#else</span><br><span> #include <types.h></span><br><span style="color: hsl(0, 100%, 40%);">-static inline enum cb_err get_option(void *dest, const char *name)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum cb_err set_option(const char *name, void *val);</span><br><span style="color: hsl(120, 100%, 40%);">+enum cb_err get_option(void *dest, const char *name);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#if !IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+inline enum cb_err set_option(const char *name, void *val)</span><br><span> {</span><br><span>   return CB_CMOS_OTABLE_DISABLED;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+inline enum cb_err get_option(void *dest, const char *name)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        return CB_CMOS_OTABLE_DISABLED;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif</span><br><span> </span><br><span> #endif /* _OPTION_H_ */</span><br><span>diff --git a/src/include/pc80/mc146818rtc.h b/src/include/pc80/mc146818rtc.h</span><br><span>index 5d7497d..f1212ce 100644</span><br><span>--- a/src/include/pc80/mc146818rtc.h</span><br><span>+++ b/src/include/pc80/mc146818rtc.h</span><br><span>@@ -182,11 +182,15 @@</span><br><span> void cmos_init(bool invalid);</span><br><span> void cmos_check_update_date(void);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-enum cb_err set_option(const char *name, void *val);</span><br><span style="color: hsl(0, 100%, 40%);">-enum cb_err get_option(void *dest, const char *name);</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <option.h></span><br><span> unsigned int read_option_lowlevel(unsigned int start, unsigned int size,</span><br><span>     unsigned int def);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* CONFIG_OPTION_TABLE_CMOS */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #else /* defined(__ROMCC__) */</span><br><span> #include <drivers/pc80/rtc/mc146818rtc_romcc.c></span><br><span> #endif /* !defined(__ROMCC__) */</span><br><span>@@ -254,11 +258,11 @@</span><br><span> static inline void cmos_post_init(void) {}</span><br><span> #endif /* CONFIG_CMOS_POST */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#if IS_ENABLED(CONFIG_USE_OPTION_TABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_OPTION_TABLE_CMOS)</span><br><span> void sanitize_cmos(void);</span><br><span> #else</span><br><span> static inline void sanitize_cmos(void) {}</span><br><span style="color: hsl(0, 100%, 40%);">-#endif /* CONFIG_USE_OPTION_TABLE */</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* CONFIG_OPTION_TABLE_CMOS */</span><br><span> </span><br><span> #else /* !CONFIG_ARCH_X86 */</span><br><span> static inline void cmos_post_init(void) {}</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26300">change 26300</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26300"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ia2b962bad8d3eea3cf7b9a9d79a46b0c5add93cc </div>
<div style="display:none"> Gerrit-Change-Number: 26300 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Lev </div>