<p>Marcello Sylvester Bauer has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25550">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">[WIP] driver/option_table: RO_VPD option table<br><br>Add a read-only VPD section as option table. This will benefit non-x86<br>boards without nvram.<br><br>Change-Id: I5aeafedf29c80e29c6cf00b821af6b4370e15baf<br>Signed-off-by: Marcello Sylvester Bauer <info@marcellobauer.com><br>---<br>M Makefile.inc<br>M src/Kconfig<br>M src/drivers/option_table/Makefile.inc<br>A src/drivers/option_table/option_table_vpd.c<br>M util/cbfstool/default-x86.fmd<br>M util/cbfstool/default.fmd<br>6 files changed, 72 insertions(+), 8 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/50/25550/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Makefile.inc b/Makefile.inc</span><br><span>index b11f6e2..d71bf5c 100644</span><br><span>--- a/Makefile.inc</span><br><span>+++ b/Makefile.inc</span><br><span>@@ -820,14 +820,28 @@</span><br><span> endif # ifeq ($(CONFIG_CACHE_MRC_SETTINGS),y)</span><br><span> </span><br><span> #</span><br><span style="color: hsl(120, 100%, 40%);">+# RW VPD region</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%);">+ifeq ($(CONFIG_USE_OPTION_TABLE_VPD),y)</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_BASE := $(call int-add,$(FMAP_FMAP_BASE) $(FMAP_FMAP_SIZE) $(FMAP_CONSOLE_SIZE) \</span><br><span style="color: hsl(120, 100%, 40%);">+   $(FMAP_MRC_CACHE_SIZE))</span><br><span style="color: hsl(120, 100%, 40%);">+#FIX ME: use optional size instead of hardcoded value</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_SIZE := 0x1000</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_ENTRY := RO_VPD@$(FMAP_RO_VPD_BASE) $(FMAP_RO_VPD_SIZE)</span><br><span style="color: hsl(120, 100%, 40%);">+else # ifeq($(CONFIG_USE_OPTION_TABLE_VPD))</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_BASE := 0</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_SIZE := 0</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_RO_VPD_ENTRY :=</span><br><span style="color: hsl(120, 100%, 40%);">+endif # ifeq($(CONFIG_USE_OPTION_TABLE_VPD))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span> # X86 COREBOOT default cbfs FMAP region</span><br><span> #</span><br><span> # position and size of CBFS, relative to BIOS_BASE</span><br><span style="color: hsl(0, 100%, 40%);">-ifeq ($(CONFIG_CACHE_MRC_SETTINGS),y)</span><br><span style="color: hsl(0, 100%, 40%);">-FMAP_CBFS_BASE := $(call int-add, $(FMAP_MRC_CACHE_BASE) $(FMAP_MRC_CACHE_SIZE))</span><br><span style="color: hsl(0, 100%, 40%);">-else</span><br><span style="color: hsl(0, 100%, 40%);">-FMAP_CBFS_BASE := $(call int-add, $(FMAP_CONSOLE_SIZE) $(FMAP_FMAP_SIZE))</span><br><span style="color: hsl(0, 100%, 40%);">-endif</span><br><span style="color: hsl(120, 100%, 40%);">+FMAP_CBFS_BASE := $(call int-add, $(FMAP_CONSOLE_SIZE) $(FMAP_FMAP_SIZE) \</span><br><span style="color: hsl(120, 100%, 40%);">+  $(FMAP_MRC_CACHE_SIZE) $(FMAP_RO_VPD_SIZE))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> FMAP_CBFS_SIZE := $(call int-subtract, $(FMAP_BIOS_SIZE) $(FMAP_CBFS_BASE))</span><br><span> else # ifeq ($(CONFIG_ARCH_X86),y)</span><br><span> DEFAULT_FLASHMAP:=$(top)/util/cbfstool/default.fmd</span><br><span>@@ -881,7 +895,7 @@</span><br><span> #</span><br><span> # position and size of CBFS, relative to BIOS_BASE</span><br><span> FMAP_CBFS_BASE := $(call int-add,$(FMAP_FMAP_BASE) $(FMAP_FMAP_SIZE) $(FMAP_CONSOLE_SIZE) \</span><br><span style="color: hsl(0, 100%, 40%);">-        $(FMAP_MRC_CACHE_SIZE))</span><br><span style="color: hsl(120, 100%, 40%);">+       $(FMAP_MRC_CACHE_SIZE) $(FMAP_RO_VPD_SIZE))</span><br><span> FMAP_CBFS_SIZE := $(call int-subtract,$(FMAP_BIOS_SIZE) $(FMAP_CBFS_BASE))</span><br><span> endif # ifeq ($(CONFIG_ARCH_X86),y)</span><br><span> </span><br><span>@@ -894,6 +908,7 @@</span><br><span>       -e "s,##FMAP_SIZE##,$(FMAP_FMAP_SIZE)," \</span><br><span>          -e "s,##CONSOLE_ENTRY##,$(FMAP_CONSOLE_ENTRY)," \</span><br><span>          -e "s,##MRC_CACHE_ENTRY##,$(FMAP_MRC_CACHE_ENTRY)," \</span><br><span style="color: hsl(120, 100%, 40%);">+       -e "s,##RO_VPD_ENTRY##,$(FMAP_RO_VPD_ENTRY)," \</span><br><span>            -e "s,##CBFS_BASE##,$(FMAP_CBFS_BASE)," \</span><br><span>          -e "s,##CBFS_SIZE##,$(FMAP_CBFS_SIZE)," \</span><br><span>              $(DEFAULT_FLASHMAP) > $@.tmp</span><br><span>diff --git a/src/Kconfig b/src/Kconfig</span><br><span>index 60a2977..ecde912 100644</span><br><span>--- a/src/Kconfig</span><br><span>+++ b/src/Kconfig</span><br><span>@@ -130,6 +130,11 @@</span><br><span>      help</span><br><span>           read options from the "CMOS" NVRAM</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+config USE_OPTION_TABLE_VPD</span><br><span style="color: hsl(120, 100%, 40%);">+       bool "VPD"</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    read options from the a RV_VPD partition</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> endchoice</span><br><span> </span><br><span> config STATIC_OPTION_TABLE_CMOS</span><br><span>@@ -495,8 +500,8 @@</span><br><span> </span><br><span> config HAVE_OPTION_TABLE</span><br><span>       bool</span><br><span style="color: hsl(0, 100%, 40%);">-    default y if HAVE_OPTION_TABLE_CMOS</span><br><span style="color: hsl(0, 100%, 40%);">-     default n if !HAVE_OPTION_TABLE_CMOS</span><br><span style="color: hsl(120, 100%, 40%);">+  default y if (HAVE_OPTION_TABLE_CMOS || HAVE_OPTION_TABLE_VPD)</span><br><span style="color: hsl(120, 100%, 40%);">+        default n if !(HAVE_OPTION_TABLE_CMOS || HAVE_OPTION_TABLE_VPD)</span><br><span> </span><br><span> config HAVE_OPTION_TABLE_CMOS</span><br><span>         bool</span><br><span>@@ -506,6 +511,10 @@</span><br><span>    file containing NVRAM/CMOS bit definitions.</span><br><span>          It defaults to 'n' but can be selected in mainboard/*/Kconfig.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+config HAVE_OPTION_TABLE_VPD</span><br><span style="color: hsl(120, 100%, 40%);">+    bool</span><br><span style="color: hsl(120, 100%, 40%);">+  default y</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> config PIRQ_ROUTE</span><br><span>     bool</span><br><span>         default n</span><br><span>diff --git a/src/drivers/option_table/Makefile.inc b/src/drivers/option_table/Makefile.inc</span><br><span>index b099474..24a359b 100644</span><br><span>--- a/src/drivers/option_table/Makefile.inc</span><br><span>+++ b/src/drivers/option_table/Makefile.inc</span><br><span>@@ -7,3 +7,12 @@</span><br><span> smm-y += option_table_cmos.c</span><br><span> postcar-y += option_table_cmos.c</span><br><span> endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_USE_OPTION_TABLE_VPD),y)</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+smm-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+postcar-y += option_table_vpd.c</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/drivers/option_table/option_table_vpd.c b/src/drivers/option_table/option_table_vpd.c</span><br><span>new file mode 100644</span><br><span>index 0000000..41d35a2</span><br><span>--- /dev/null</span><br><span>+++ b/src/drivers/option_table/option_table_vpd.c</span><br><span>@@ -0,0 +1,29 @@</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 Google Inc.</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%);">+#include <types.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+//[WIP] dummy function</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%);">+      return CB_CMOS_ACCESS_ERROR;</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%);">+//[WIP] dummy function</span><br><span style="color: hsl(120, 100%, 40%);">+enum cb_err set_option(const char *name, void *value)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   return CB_CMOS_ACCESS_ERROR;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/util/cbfstool/default-x86.fmd b/util/cbfstool/default-x86.fmd</span><br><span>index 1f1aa43..39706fe 100644</span><br><span>--- a/util/cbfstool/default-x86.fmd</span><br><span>+++ b/util/cbfstool/default-x86.fmd</span><br><span>@@ -12,6 +12,7 @@</span><br><span>                 FMAP@##FMAP_BASE## ##FMAP_SIZE##</span><br><span>             ##CONSOLE_ENTRY##</span><br><span>            ##MRC_CACHE_ENTRY##</span><br><span style="color: hsl(120, 100%, 40%);">+           ##RO_VPD_ENTRY##</span><br><span>             COREBOOT(CBFS)@##CBFS_BASE## ##CBFS_SIZE##</span><br><span>   }</span><br><span> }</span><br><span>diff --git a/util/cbfstool/default.fmd b/util/cbfstool/default.fmd</span><br><span>index 8f4819e..61de02f 100644</span><br><span>--- a/util/cbfstool/default.fmd</span><br><span>+++ b/util/cbfstool/default.fmd</span><br><span>@@ -15,6 +15,7 @@</span><br><span>          FMAP@##FMAP_BASE## ##FMAP_SIZE##</span><br><span>             ##CONSOLE_ENTRY##</span><br><span>            ##MRC_CACHE_ENTRY##</span><br><span style="color: hsl(120, 100%, 40%);">+           ##RO_VPD_ENTRY##</span><br><span>             COREBOOT(CBFS)@##CBFS_BASE## ##CBFS_SIZE##</span><br><span>   }</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25550">change 25550</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/25550"/><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: I5aeafedf29c80e29c6cf00b821af6b4370e15baf </div>
<div style="display:none"> Gerrit-Change-Number: 25550 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Marcello Sylvester Bauer </div>