Hi Eddie,
On Thu, 19 Oct 2023 at 16:29, Eddie James <eaja...@linux.ibm.com> wrote: > > > On 10/13/23 12:22, Ilias Apalodimas wrote: > > Hi Eddie, > > > > This doesn't apply on -master, can you please rebase? > > > Ugh I thought you wanted -next... I can rebase again. Yea by the time the patches were sent -next got merged into -master, so I tried master now to include them into the 2024.01 release. Apologies, if you don't mind please rebase Thanks /Ilias > > > > > > 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 > >>