x86: Use CONFIG_CHROMEOS_VBOOT for verified boot
authorSimon Glass <sjg@chromium.org>
Wed, 4 Nov 2020 16:57:35 +0000 (09:57 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Fri, 6 Nov 2020 01:51:31 +0000 (09:51 +0800)
At present CONFIG_CHROMEOS is used to determine whether verified boot is
in use. The code to implement that is not in U-Boot mainline.

However, it is useful to be able to boot a Chromebook in developer mode
in U-Boot mainline without needing the verified boot code.

To allow this, use CONFIG_CHROMEOS_VBOOT to indicate that verified boot
should be used, and CONFIG_CHROMEOS to indicate that the board supports
Chrome OS. That allows us to define CONFIG_CHROMEOS on coral.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/cpu/apollolake/acpi.c
arch/x86/dts/chromebook_coral.dts
arch/x86/dts/chromebook_samus.dts
arch/x86/include/asm/intel_gnvs.h
arch/x86/lib/tpl.c
common/Kconfig.boot
configs/chromebook_coral_defconfig

index 69b544f0d986541bcf701a08675ee2480bf67851..5af8a181b1e02211a0fc62cc840bdee4cc9cdf3f 100644 (file)
@@ -75,7 +75,8 @@ int acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 
        /* TODO(sjg@chromium.org): Add the console log to gnvs->cbmc */
 
-#ifdef CONFIG_CHROMEOS
+/* Disable this code until a later patch */
+#if 0
        /* Initialise Verified Boot data */
        chromeos_init_acpi(&gnvs->chromeos);
        gnvs->chromeos.vbt2 = ACTIVE_ECFW_RO;
index 92f70b13dd799b7cac63c025742f12b922568c12..43f4b33da1bb1e9f6a4e4638289eda4549e9f7fb 100644 (file)
@@ -9,7 +9,7 @@
 /include/ "rtc.dtsi"
 /include/ "tsc_timer.dtsi"
 
-#ifdef CONFIG_CHROMEOS
+#ifdef CONFIG_CHROMEOS_VBOOT
 #include "chromeos-x86.dtsi"
 #include "flashmap-x86-ro.dtsi"
 #include "flashmap-16mb-rw.dtsi"
index 772ea5c91be66a52849169d98039f578a419373f..d8e04a669851785997c9790bc013039b40217249 100644 (file)
@@ -9,7 +9,7 @@
 /include/ "rtc.dtsi"
 /include/ "tsc_timer.dtsi"
 
-#ifdef CONFIG_CHROMEOS
+#ifdef CONFIG_CHROMEOS_VBOOT
 #include "chromeos-x86.dtsi"
 #include "flashmap-x86-ro.dtsi"
 #include "flashmap-8mb-rw.dtsi"
index 632307427cd70dc61e5208828cf32f4134611793..7f9f101371cf5fcc609939e2dd9692831dc83674 100644 (file)
@@ -85,9 +85,6 @@ struct __packed acpi_global_nvs {
        u8      unused2[0x1000 - 0x100];        /* Pad out to 4096 bytes */
 #endif
 };
-
-#ifdef CONFIG_CHROMEOS
 check_member(acpi_global_nvs, chromeos, GNVS_CHROMEOS_ACPI_OFFSET);
-#endif
 
 #endif /* _INTEL_GNVS_H_ */
index 6f7eb43a1724d256585b7658257491ebfa003c3b..15b0212d190a3346a042f0eb3c742c6b1b42821e 100644 (file)
@@ -75,7 +75,7 @@ void board_init_f_r(void)
 
 u32 spl_boot_device(void)
 {
-       return IS_ENABLED(CONFIG_CHROMEOS) ? BOOT_DEVICE_CROS_VBOOT :
+       return IS_ENABLED(CONFIG_CHROMEOS_VBOOT) ? BOOT_DEVICE_CROS_VBOOT :
                BOOT_DEVICE_SPI_MMAP;
 }
 
index 522f5f3d6a426aa7aa97c934264eb62e77dadb73..3f6d9c1a25858e2e19c76891051a3a931076e5c3 100644 (file)
@@ -343,6 +343,23 @@ config ARCH_FIXUP_FDT_MEMORY
          used for booting OS with different memory setup where the part of
          the memory location should be used for different purpose.
 
+config CHROMEOS
+       bool "Support booting Chrome OS"
+       help
+         Chrome OS requires U-Boot to set up a table indicating the boot mode
+         (e.g. Developer mode) and a few other things. Enable this if you are
+         booting on a Chromebook to avoid getting an error about an invalid
+         firmware ID.
+
+config CHROMEOS_VBOOT
+       bool "Support Chrome OS verified boot"
+       help
+         This is intended to enable the full Chrome OS verified boot support
+         in U-Boot. It is not actually implemented in the U-Boot source code
+         at present, so this option is always set to 'n'. It allows
+         distinguishing between booting Chrome OS in a basic way (developer
+         mode) and a full boot.
+
 endmenu                # Boot images
 
 menu "Boot timing"
index 0ec95af75e0126b1f53727689dfa98cb144faa4f..827974f7fcf19781f755ecdd6797118b8a5f0acd 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_INTEL_CAR_CQOS=y
 CONFIG_X86_OFFSET_U_BOOT=0xffd00000
 CONFIG_X86_OFFSET_SPL=0xffe80000
 CONFIG_INTEL_GENERIC_WIFI=y
+CONFIG_CHROMEOS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_SPL_BOOTSTAGE=y
 CONFIG_TPL_BOOTSTAGE=y