Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 1 | ## |
| 2 | ## This file is part of the coreboot project. |
| 3 | ## |
| 4 | ## Copyright (C) 2014 The ChromiumOS Authors. All rights reserved. |
| 5 | ## |
| 6 | ## This program is free software; you can redistribute it and/or modify |
| 7 | ## it under the terms of the GNU General Public License as published by |
| 8 | ## the Free Software Foundation; version 2 of the License. |
| 9 | ## |
| 10 | ## This program is distributed in the hope that it will be useful, |
| 11 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | ## GNU General Public License for more details. |
| 14 | ## |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 15 | |
Julius Werner | 5fc7c28 | 2017-03-17 14:29:10 -0700 | [diff] [blame] | 16 | ifeq ($(CONFIG_VBOOT),y) |
| 17 | |
Furquan Shaikh | 0325dc6 | 2016-07-25 13:02:36 -0700 | [diff] [blame] | 18 | bootblock-y += bootmode.c |
| 19 | romstage-y += bootmode.c |
| 20 | ramstage-y += bootmode.c |
| 21 | verstage-y += bootmode.c |
| 22 | postcar-y += bootmode.c |
| 23 | |
Aaron Durbin | 26681ec | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 24 | verstage-generic-ccopts += -D__PRE_RAM__ -D__VERSTAGE__ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 25 | |
Furquan Shaikh | 7632ce0 | 2018-03-29 14:49:40 -0700 | [diff] [blame] | 26 | ramstage-y += gbb.c |
| 27 | |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 28 | bootblock-y += vbnv.c |
| 29 | verstage-y += vbnv.c |
| 30 | romstage-y += vbnv.c |
| 31 | ramstage-y += vbnv.c |
| 32 | |
| 33 | bootblock-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 34 | verstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 35 | romstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 36 | ramstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 37 | |
| 38 | bootblock-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 39 | verstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 40 | romstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 41 | ramstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 42 | |
| 43 | bootblock-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 44 | verstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 45 | romstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 46 | ramstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 47 | |
| 48 | bootblock-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 49 | verstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 50 | romstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 51 | ramstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 52 | |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 53 | bootblock-y += vboot_loader.c |
| 54 | romstage-y += vboot_loader.c |
| 55 | ramstage-y += vboot_loader.c |
| 56 | verstage-y += vboot_loader.c |
Andrey Petrov | 60c6432 | 2016-04-14 14:12:47 -0700 | [diff] [blame] | 57 | postcar-y += vboot_loader.c |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 58 | |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 59 | bootblock-y += vboot_common.c |
| 60 | verstage-y += vboot_common.c |
| 61 | romstage-y += vboot_common.c |
| 62 | ramstage-y += vboot_common.c |
| 63 | postcar-y += vboot_common.c |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 64 | |
Daisuke Nojiri | 54af625 | 2014-11-04 12:32:29 -0800 | [diff] [blame] | 65 | bootblock-y += common.c |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 66 | verstage-y += vboot_logic.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 67 | verstage-y += common.c |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 68 | verstage-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += verstage.c |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 69 | ifeq (${CONFIG_VBOOT_MOCK_SECDATA},y) |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 70 | verstage-y += secdata_mock.c |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 71 | romstage-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += secdata_mock.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 72 | else |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 73 | verstage-y += secdata_tpm.c |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 74 | romstage-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += secdata_tpm.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 75 | endif |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 76 | romstage-y += vboot_handoff.c common.c |
| 77 | |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 78 | ramstage-y += common.c |
Andrey Petrov | 60c6432 | 2016-04-14 14:12:47 -0700 | [diff] [blame] | 79 | postcar-y += common.c |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 80 | |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 81 | ifeq ($(CONFIG_VBOOT_SEPARATE_VERSTAGE),y) |
Aaron Durbin | d1cf44c | 2015-05-08 15:58:06 -0500 | [diff] [blame] | 82 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-verstage-y)) |
| 83 | else |
| 84 | ifeq ($(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK),y) |
| 85 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-bootblock-y)) |
| 86 | else |
| 87 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-romstage-y)) |
| 88 | endif |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 89 | endif # CONFIG_VBOOT_SEPARATE_VERSTAGE |
Aaron Durbin | d1cf44c | 2015-05-08 15:58:06 -0500 | [diff] [blame] | 90 | |
Bill Richardson | c860315 | 2015-01-27 17:28:18 -0800 | [diff] [blame] | 91 | VB2_LIB = $(obj)/external/vboot_reference/vboot_fw20.a |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 92 | VBOOT_CFLAGS += $(patsubst -I%,-I$(top)/%, $(filter-out -I$(obj), $(filter-out -include $(src)/include/kconfig.h, $(CPPFLAGS_verstage)))) |
| 93 | VBOOT_CFLAGS += $(CFLAGS_verstage) |
| 94 | VBOOT_CFLAGS += $(verstage-c-ccopts) |
Paul Kocialkowski | 6a10694 | 2015-08-03 23:03:27 +0200 | [diff] [blame] | 95 | VBOOT_CFLAGS += -I$(abspath $(obj)) -include $(top)/src/include/kconfig.h -Wno-missing-prototypes |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 96 | VBOOT_CFLAGS += -DVBOOT_DEBUG |
| 97 | |
| 98 | $(VB2_LIB): $(obj)/config.h |
Patrick Georgi | 78a5f22 | 2017-01-30 15:29:34 +0100 | [diff] [blame] | 99 | printf " MAKE $(subst $(obj)/,,$(@))\n" |
| 100 | +FIRMWARE_ARCH=$(VB_FIRMWARE_ARCH) \ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 101 | CC="$(CC_verstage)" \ |
| 102 | CFLAGS="$(VBOOT_CFLAGS)" VBOOT2="y" \ |
Paul Kocialkowski | 4611451 | 2016-07-24 12:10:38 +0200 | [diff] [blame] | 103 | $(MAKE) -C $(VBOOT_SOURCE) \ |
Paul Kocialkowski | 6a10694 | 2015-08-03 23:03:27 +0200 | [diff] [blame] | 104 | BUILD=$(abspath $(dir $(VB2_LIB))) \ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 105 | V=$(V) \ |
Bill Richardson | c860315 | 2015-01-27 17:28:18 -0800 | [diff] [blame] | 106 | fwlib20 |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 107 | |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 108 | verstage-srcs += $(VB2_LIB) |
Patrick Georgi | ba80887 | 2015-04-27 18:09:22 +0200 | [diff] [blame] | 109 | |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 110 | ifeq ($(CONFIG_VBOOT_SEPARATE_VERSTAGE),y) |
Furquan Shaikh | b038f41 | 2016-11-07 23:47:11 -0800 | [diff] [blame] | 111 | |
| 112 | # This works under the assumption that romstage and verstage use the same |
| 113 | # architecture and thus CC_verstage is the same as CC_romstage. If this is not |
| 114 | # true, VB2_LIB needs to ensure that correct CC is being used. |
| 115 | ifeq ($(CONFIG_VBOOT_HAS_REC_HASH_SPACE),y) |
| 116 | romstage-srcs += $(VB2_LIB) |
| 117 | endif |
| 118 | |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 119 | cbfs-files-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += $(CONFIG_CBFS_PREFIX)/verstage |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 120 | $(CONFIG_CBFS_PREFIX)/verstage-file := $(objcbfs)/verstage.elf |
| 121 | $(CONFIG_CBFS_PREFIX)/verstage-type := stage |
Julius Werner | 09f2921 | 2015-09-29 13:51:35 -0700 | [diff] [blame] | 122 | $(CONFIG_CBFS_PREFIX)/verstage-compression := $(CBFS_PRERAM_COMPRESS_FLAG) |
Furquan Shaikh | 94b18a1 | 2016-05-04 23:25:16 -0700 | [diff] [blame] | 123 | |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 124 | ifeq ($(CONFIG_ARCH_VERSTAGE_X86_32)$(CONFIG_ARCH_VERSTAGE_X86_64),y) |
Furquan Shaikh | 94b18a1 | 2016-05-04 23:25:16 -0700 | [diff] [blame] | 125 | $(CONFIG_CBFS_PREFIX)/verstage-options := -a 64 -S ".car.data" |
| 126 | |
| 127 | # If CAR does not support execution of code, verstage on x86 is expected to be |
| 128 | # xip. |
| 129 | ifneq ($(CONFIG_NO_XIP_EARLY_STAGES),y) |
| 130 | $(CONFIG_CBFS_PREFIX)/verstage-options += --xip |
| 131 | endif |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 132 | |
| 133 | endif |
| 134 | |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 135 | else # CONFIG_VBOOT_SEPARATE_VERSTAGE |
Aaron Durbin | d1cf44c | 2015-05-08 15:58:06 -0500 | [diff] [blame] | 136 | ifeq ($(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK),y) |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 137 | postinclude-hooks += $$(eval bootblock-srcs += $$(verstage-srcs)) |
Aaron Durbin | 57e3728 | 2015-04-28 16:17:25 -0500 | [diff] [blame] | 138 | else |
Julius Werner | e91d170 | 2017-03-20 15:32:15 -0700 | [diff] [blame] | 139 | postinclude-hooks += $$(eval romstage-srcs += $$(verstage-srcs)) |
Patrick Georgi | efc6aa0 | 2015-04-27 18:13:50 +0200 | [diff] [blame] | 140 | endif |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 141 | endif # CONFIG_VBOOT_SEPARATE_VERSTAGE |
Patrick Georgi | c8d4abd | 2016-01-20 15:54:31 +0100 | [diff] [blame] | 142 | |
| 143 | # Define a list of files that need to be in RO only. |
| 144 | # All other files will be installed into RO and RW regions |
| 145 | # Use $(sort) to cut down on extra spaces that would be translated to commas |
| 146 | regions-for-file = $(subst $(spc),$(comma),$(sort \ |
| 147 | $(if $(filter \ |
| 148 | $(if $(filter y,$(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK)),, \ |
| 149 | %/romstage) \ |
| 150 | mts \ |
| 151 | %/verstage \ |
Patrick Georgi | eda794d | 2016-02-05 11:01:24 +0100 | [diff] [blame] | 152 | locales \ |
| 153 | locale_%.bin \ |
| 154 | font.bin \ |
| 155 | vbgfx.bin \ |
Lee Leahy | 5e34752 | 2017-01-04 08:51:52 -0800 | [diff] [blame] | 156 | rmu.bin \ |
Martin Roth | bbd5ee41 | 2017-10-05 13:53:16 -0600 | [diff] [blame] | 157 | $(call strip_quotes,$(CONFIG_RO_REGION_ONLY)) \ |
Patrick Georgi | c8d4abd | 2016-01-20 15:54:31 +0100 | [diff] [blame] | 158 | ,$(1)),COREBOOT,COREBOOT FW_MAIN_A FW_MAIN_B))) |
Furquan Shaikh | 0325dc6 | 2016-07-25 13:02:36 -0700 | [diff] [blame] | 159 | |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 160 | CONFIG_GBB_HWID := $(call strip_quotes,$(CONFIG_GBB_HWID)) |
| 161 | CONFIG_GBB_BMPFV_FILE := $(call strip_quotes,$(CONFIG_GBB_BMPFV_FILE)) |
| 162 | CONFIG_VBOOT_KEYBLOCK := $(call strip_quotes,$(CONFIG_VBOOT_KEYBLOCK)) |
| 163 | CONFIG_VBOOT_FIRMWARE_PRIVKEY := $(call strip_quotes,$(CONFIG_VBOOT_FIRMWARE_PRIVKEY)) |
| 164 | CONFIG_VBOOT_KERNEL_KEY := $(call strip_quotes,$(CONFIG_VBOOT_KERNEL_KEY)) |
| 165 | CONFIG_VBOOT_FWID_MODEL := $(call strip_quotes,$(CONFIG_VBOOT_FWID_MODEL)) |
| 166 | CONFIG_VBOOT_FWID_VERSION := $(call strip_quotes,$(CONFIG_VBOOT_FWID_VERSION)) |
| 167 | |
| 168 | # bool-to-mask(var, value) |
| 169 | # return "value" if var is "y", 0 otherwise |
| 170 | bool-to-mask = $(if $(filter y,$(1)),$(2),0) |
| 171 | |
| 172 | GBB_FLAGS := $(call int-add, \ |
| 173 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DEV_SCREEN_SHORT_DELAY),0x1) \ |
| 174 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_LOAD_OPTION_ROMS),0x2) \ |
| 175 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_ENABLE_ALTERNATE_OS),0x4) \ |
| 176 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FORCE_DEV_SWITCH_ON),0x8) \ |
| 177 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FORCE_DEV_BOOT_USB),0x10) \ |
| 178 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK),0x20) \ |
| 179 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_ENTER_TRIGGERS_TONORM),0x40) \ |
| 180 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FORCE_DEV_BOOT_LEGACY),0x80) \ |
| 181 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FAFT_KEY_OVERIDE),0x100) \ |
| 182 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC),0x200) \ |
| 183 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY),0x400) \ |
| 184 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC),0x800) \ |
| 185 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DISABLE_LID_SHUTDOWN),0x1000) \ |
| 186 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FORCE_DEV_BOOT_FASTBOOT_FULL_CAP),0x2000) \ |
Julius Werner | ae42385 | 2018-03-23 21:02:48 -0700 | [diff] [blame] | 187 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_FORCE_MANUAL_RECOVERY),0x4000) \ |
| 188 | $(call bool-to-mask,$(CONFIG_GBB_FLAG_DISABLE_FWMP),0x8000) \ |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 189 | ) |
| 190 | |
| 191 | ifneq ($(CONFIG_GBB_BMPFV_FILE),) |
| 192 | $(obj)/gbb.sizetmp: $(obj)/coreboot.rom |
| 193 | $(CBFSTOOL) $< read -r GBB -f $@ |
| 194 | |
| 195 | $(obj)/gbb.stub: $(obj)/coreboot.rom $(FUTILITY) $(obj)/gbb.sizetmp |
| 196 | @printf " CREATE GBB (with BMPFV)\n" |
| 197 | $(FUTILITY) gbb_utility -c 0x100,0x1000,$(call int-subtract,$(call file-size,$(obj)/gbb.sizetmp) 0x2180),0x1000 $@.tmp |
| 198 | mv $@.tmp $@ |
| 199 | else |
| 200 | $(obj)/gbb.stub: $(obj)/coreboot.rom $(FUTILITY) |
| 201 | @printf " CREATE GBB (without BMPFV)\n" |
| 202 | $(FUTILITY) gbb_utility -c 0x100,0x1000,0,0x1000 $@.tmp |
| 203 | mv $@.tmp $@ |
| 204 | endif |
| 205 | |
| 206 | $(obj)/gbb.region: $(obj)/gbb.stub |
| 207 | @printf " SETUP GBB\n" |
| 208 | cp $< $@.tmp |
| 209 | $(FUTILITY) gbb_utility -s \ |
| 210 | --hwid="$(CONFIG_GBB_HWID)" \ |
| 211 | --rootkey="$(CONFIG_VBOOT_ROOT_KEY)" \ |
| 212 | --recoverykey="$(CONFIG_VBOOT_RECOVERY_KEY)" \ |
| 213 | --flags=$(GBB_FLAGS) \ |
| 214 | $@.tmp |
| 215 | ifneq ($(CONFIG_GBB_BMPFV_FILE),) |
| 216 | $(FUTILITY) gbb_utility -s \ |
| 217 | --bmpfv="$(CONFIG_GBB_BMPFV_FILE)" \ |
| 218 | $@.tmp |
| 219 | endif |
| 220 | mv $@.tmp $@ |
| 221 | |
| 222 | $(obj)/fwid.region: |
| 223 | printf "$(CONFIG_VBOOT_FWID_MODEL)$(CONFIG_VBOOT_FWID_VERSION)\0" > $@ |
| 224 | |
| 225 | build_complete:: $(obj)/gbb.region $(obj)/fwid.region |
| 226 | @printf " WRITE GBB\n" |
| 227 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r GBB -i 0 -f $(obj)/gbb.region |
| 228 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r RO_FRID -i 0 -f $(obj)/fwid.region |
| 229 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r RW_FWID_A -i 0 -f $(obj)/fwid.region |
| 230 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r RW_FWID_B -i 0 -f $(obj)/fwid.region |
| 231 | |
| 232 | ifneq ($(shell grep "SHARED_DATA" "$(CONFIG_FMDFILE)"),) |
| 233 | build_complete:: |
| 234 | printf "\0" > $(obj)/shared_data.region |
| 235 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r SHARED_DATA -i 0 -f $(obj)/shared_data.region |
| 236 | endif |
| 237 | |
| 238 | # Extract FW_MAIN_? region and minimize it if the last file is empty, so it |
| 239 | # doesn't contain this empty file (that can have a significant size), |
| 240 | # improving a lot on hash times due to a smaller amount of data loaded from |
| 241 | # firmware storage. |
| 242 | # When passing the minimized image to vbutil_firmware, its length is recorded |
| 243 | # in the keyblock, and coreboot's vboot code clips the region_device to match, |
| 244 | # which prevents any potential extension attacks. |
| 245 | $(obj)/FW_MAIN_%.bin: $(obj)/coreboot.rom |
Patrick Georgi | bf375e3 | 2017-09-20 12:01:28 +0200 | [diff] [blame] | 246 | $(CBFSTOOL) $< truncate -r $(basename $(notdir $@)) > $@.tmp.size |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 247 | $(CBFSTOOL) $< read -r $(basename $(notdir $@)) -f $@.tmp |
Patrick Georgi | bf375e3 | 2017-09-20 12:01:28 +0200 | [diff] [blame] | 248 | head -c $$( printf "%d" $$(cat $@.tmp.size)) $@.tmp > $@.tmp2 |
| 249 | mv $@.tmp2 $@ |
| 250 | rm -f $@.tmp $@.tmp.size |
Julius Werner | 58c3938 | 2017-02-13 17:53:29 -0800 | [diff] [blame] | 251 | |
| 252 | $(obj)/VBLOCK_%.bin: $(obj)/FW_MAIN_%.bin $(FUTILITY) |
| 253 | $(FUTILITY) vbutil_firmware \ |
| 254 | --vblock $@ \ |
| 255 | --keyblock "$(CONFIG_VBOOT_KEYBLOCK)" \ |
| 256 | --signprivate "$(CONFIG_VBOOT_FIRMWARE_PRIVKEY)" \ |
| 257 | --version $(CONFIG_VBOOT_KEYBLOCK_VERSION) \ |
| 258 | --fv $< \ |
| 259 | --kernelkey "$(CONFIG_VBOOT_KERNEL_KEY)" \ |
| 260 | --flags $(CONFIG_VBOOT_KEYBLOCK_PREAMBLE_FLAGS) |
| 261 | |
| 262 | files_added:: $(obj)/VBLOCK_A.bin $(obj)/VBLOCK_B.bin |
| 263 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r VBLOCK_A -f $(obj)/VBLOCK_A.bin |
| 264 | $(CBFSTOOL) $(obj)/coreboot.rom write -u -r VBLOCK_B -f $(obj)/VBLOCK_B.bin |
| 265 | |
Furquan Shaikh | 0325dc6 | 2016-07-25 13:02:36 -0700 | [diff] [blame] | 266 | endif # CONFIG_VBOOT |