Hi Eddie, This doesn't apply on -master, can you please rebase?
Thanks /Ilias On Thu, 12 Oct 2023 at 16:49, Eddie James <eaja...@linux.ibm.com> wrote: > > Use the sandbox TPM driver to measure some boot images in a unit > test case. > > Signed-off-by: Eddie James <eaja...@linux.ibm.com> > Reviewed-by: Simon Glass <s...@chromium.org> > Acked-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> > --- > Changes since v5: > - Only compile in the measurement u-boot command when > CONFIG_MEASURED_BOOT is enabled. > > arch/sandbox/dts/sandbox.dtsi | 13 +++++++ > arch/sandbox/dts/test.dts | 13 +++++++ > configs/sandbox_defconfig | 1 + > include/test/suites.h | 1 + > test/boot/Makefile | 1 + > test/boot/measurement.c | 66 +++++++++++++++++++++++++++++++++++ > test/cmd_ut.c | 4 +++ > 7 files changed, 99 insertions(+) > create mode 100644 test/boot/measurement.c > > diff --git a/arch/sandbox/dts/sandbox.dtsi b/arch/sandbox/dts/sandbox.dtsi > index ff7e5584c5..241f397ba6 100644 > --- a/arch/sandbox/dts/sandbox.dtsi > +++ b/arch/sandbox/dts/sandbox.dtsi > @@ -4,11 +4,23 @@ > * and sandbox64 builds. > */ > > +#include <config.h> > #include <dt-bindings/input/input.h> > > #define USB_CLASS_HUB 9 > > / { > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + event_log: tcg_event_log { > + no-map; > + reg = <(CFG_SYS_SDRAM_SIZE - 0x2000) 0x2000>; > + }; > + }; > + > binman { > }; > > @@ -342,6 +354,7 @@ > > tpm2 { > compatible = "sandbox,tpm2"; > + memory-region = <&event_log>; > }; > > triangle { > diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts > index 9a863ea732..bb2ddd9bf2 100644 > --- a/arch/sandbox/dts/test.dts > +++ b/arch/sandbox/dts/test.dts > @@ -9,6 +9,7 @@ > > /dts-v1/; > > +#include <config.h> > #include <dt-bindings/gpio/gpio.h> > #include <dt-bindings/gpio/sandbox-gpio.h> > #include <dt-bindings/input/input.h> > @@ -68,6 +69,17 @@ > osd0 = "/osd"; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + event_log: tcg_event_log { > + no-map; > + reg = <(CFG_SYS_SDRAM_SIZE - 0x2000) 0x2000>; > + }; > + }; > + > binman: binman { > }; > > @@ -1422,6 +1434,7 @@ > > tpm2 { > compatible = "sandbox,tpm2"; > + memory-region = <&event_log>; > }; > > tpm { > diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig > index d667cb9ae4..12c387a77e 100644 > --- a/configs/sandbox_defconfig > +++ b/configs/sandbox_defconfig > @@ -349,3 +349,4 @@ CONFIG_UNIT_TEST=y > CONFIG_UT_TIME=y > CONFIG_UT_DM=y > CONFIG_ARM_FFA_TRANSPORT=y > +CONFIG_MEASURED_BOOT=y > diff --git a/include/test/suites.h b/include/test/suites.h > index 1c7dc65966..48ed549c13 100644 > --- a/include/test/suites.h > +++ b/include/test/suites.h > @@ -45,6 +45,7 @@ int do_ut_font(struct cmd_tbl *cmdtp, int flag, int argc, > char *const argv[]); > int do_ut_lib(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); > int do_ut_loadm(struct cmd_tbl *cmdtp, int flag, int argc, char *const > argv[]); > int do_ut_log(struct cmd_tbl *cmdtp, int flag, int argc, char * const > argv[]); > +int do_ut_measurement(struct cmd_tbl *cmdtp, int flag, int argc, char * > const argv[]); > int do_ut_mem(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); > int do_ut_optee(struct cmd_tbl *cmdtp, int flag, int argc, char *const > argv[]); > int do_ut_overlay(struct cmd_tbl *cmdtp, int flag, int argc, > diff --git a/test/boot/Makefile b/test/boot/Makefile > index 52947580ae..068522cb9e 100644 > --- a/test/boot/Makefile > +++ b/test/boot/Makefile > @@ -4,6 +4,7 @@ > > obj-$(CONFIG_BOOTSTD) += bootdev.o bootstd_common.o bootflow.o bootmeth.o > obj-$(CONFIG_FIT) += image.o > +obj-$(CONFIG_MEASURED_BOOT) += measurement.o > > obj-$(CONFIG_EXPO) += expo.o > obj-$(CONFIG_CEDIT) += cedit.o > diff --git a/test/boot/measurement.c b/test/boot/measurement.c > new file mode 100644 > index 0000000000..9db2ed324c > --- /dev/null > +++ b/test/boot/measurement.c > @@ -0,0 +1,66 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Test for measured boot functions > + * > + * Copyright 2023 IBM Corp. > + * Written by Eddie James <eaja...@linux.ibm.com> > + */ > + > +#include <common.h> > +#include <bootm.h> > +#include <malloc.h> > +#include <test/suites.h> > +#include <test/test.h> > +#include <test/ut.h> > +#include <asm/io.h> > + > +#define MEASUREMENT_TEST(_name, _flags) \ > + UNIT_TEST(_name, _flags, measurement_test) > + > +static int measure(struct unit_test_state *uts) > +{ > + struct bootm_headers images; > + const size_t size = 1024; > + u8 *kernel; > + u8 *initrd; > + size_t i; > + > + kernel = malloc(size); > + initrd = malloc(size); > + > + images.os.image_start = map_to_sysmem(kernel); > + images.os.image_len = size; > + > + images.rd_start = map_to_sysmem(initrd); > + images.rd_end = images.rd_start + size; > + > + images.ft_addr = malloc(size); > + images.ft_len = size; > + > + env_set("bootargs", "measurement testing"); > + > + for (i = 0; i < size; ++i) { > + kernel[i] = 0xf0 | (i & 0xf); > + initrd[i] = (i & 0xf0) | 0xf; > + images.ft_addr[i] = i & 0xff; > + } > + > + ut_assertok(bootm_measure(&images)); > + > + free(images.ft_addr); > + free(initrd); > + free(kernel); > + > + return 0; > +} > +MEASUREMENT_TEST(measure, 0); > + > +int do_ut_measurement(struct cmd_tbl *cmdtp, int flag, int argc, > + char *const argv[]) > +{ > + struct unit_test *tests = UNIT_TEST_SUITE_START(measurement_test); > + const int n_ents = UNIT_TEST_SUITE_COUNT(measurement_test); > + > + return cmd_ut_category("measurement", "measurement_test_", tests, > + n_ents, argc, argv); > +} > diff --git a/test/cmd_ut.c b/test/cmd_ut.c > index 0f56409e80..e87adcb71e 100644 > --- a/test/cmd_ut.c > +++ b/test/cmd_ut.c > @@ -99,6 +99,10 @@ static struct cmd_tbl cmd_ut_sub[] = { > #if CONFIG_IS_ENABLED(UT_UNICODE) && !defined(API_BUILD) > U_BOOT_CMD_MKENT(unicode, CONFIG_SYS_MAXARGS, 1, do_ut_unicode, "", > ""), > #endif > +#ifdef CONFIG_MEASURED_BOOT > + U_BOOT_CMD_MKENT(measurement, CONFIG_SYS_MAXARGS, 1, > do_ut_measurement, > + "", ""), > +#endif > #ifdef CONFIG_SANDBOX > U_BOOT_CMD_MKENT(compression, CONFIG_SYS_MAXARGS, 1, > do_ut_compression, > "", ""), > -- > 2.39.3 >