[U-Boot] [PATCH 4/5] test: overlay: Add unit test for stacked overlay

Marek Vasut marex at denx.de
Fri Jul 7 08:32:31 UTC 2017


On 07/07/2017 09:48 AM, Moritz Fischer wrote:
> Hi Pantelis,
> 
> nit inline
> 
> On Fri, Jun 30, 2017 at 9:23 AM, Pantelis Antoniou
> <pantelis.antoniou at konsulko.com> wrote:
>> Verify that stacked overlays work.
>>
>> Signed-off-by: Pantelis Antoniou <pantelis.antoniou at konsulko.com>
> 
> Reviewed-by: Moritz Fischer <moritz.fischer at ettus.com>
>> ---
>>  test/overlay/Makefile                     |  1 +
>>  test/overlay/cmd_ut_overlay.c             | 34 ++++++++++++++++++++++++++++++-
>>  test/overlay/test-fdt-overlay-stacked.dts | 21 +++++++++++++++++++
>>  3 files changed, 55 insertions(+), 1 deletion(-)
>>  create mode 100644 test/overlay/test-fdt-overlay-stacked.dts
>>
>> diff --git a/test/overlay/Makefile b/test/overlay/Makefile
>> index 907f085..416645c 100644
>> --- a/test/overlay/Makefile
>> +++ b/test/overlay/Makefile
>> @@ -13,3 +13,4 @@ DTC_FLAGS += -@
>>  # DT overlays
>>  obj-y += test-fdt-base.dtb.o
>>  obj-y += test-fdt-overlay.dtb.o
>> +obj-y += test-fdt-overlay-stacked.dtb.o
>> diff --git a/test/overlay/cmd_ut_overlay.c b/test/overlay/cmd_ut_overlay.c
>> index cbef720..d8f5c8f 100644
>> --- a/test/overlay/cmd_ut_overlay.c
>> +++ b/test/overlay/cmd_ut_overlay.c
>> @@ -20,6 +20,7 @@
>>
>>  extern u32 __dtb_test_fdt_base_begin;
>>  extern u32 __dtb_test_fdt_overlay_begin;
>> +extern u32 __dtb_test_fdt_overlay_stacked_begin;
>>
>>  static int fdt_getprop_u32_by_index(void *fdt, const char *path,
>>                                     const char *name, int index,
>> @@ -201,6 +202,19 @@ static int fdt_overlay_local_phandles(struct unit_test_state *uts)
>>  }
>>  OVERLAY_TEST(fdt_overlay_local_phandles, 0);
>>
>> +static int fdt_overlay_stacked(struct unit_test_state *uts)
>> +{
>> +       void *fdt = uts->priv;
>> +       u32 val = 0;
>> +
>> +       ut_assertok(fdt_getprop_u32(fdt, "/new-local-node", "stacked-test-int-property",
>> +                                   &val));
>> +       ut_asserteq(43, val);
>> +
>> +       return CMD_RET_SUCCESS;
>> +}
>> +OVERLAY_TEST(fdt_overlay_stacked, 0);
>> +
>>  int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>  {
>>         struct unit_test *tests = ll_entry_start(struct unit_test,
>> @@ -210,7 +224,8 @@ int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>         struct unit_test *test;
>>         void *fdt_base = &__dtb_test_fdt_base_begin;
>>         void *fdt_overlay = &__dtb_test_fdt_overlay_begin;
>> -       void *fdt_base_copy, *fdt_overlay_copy;
>> +       void *fdt_overlay_stacked = &__dtb_test_fdt_overlay_stacked_begin;
>> +       void *fdt_base_copy, *fdt_overlay_copy, *fdt_overlay_stacked_copy;
>>
>>         uts = calloc(1, sizeof(*uts));
>>         if (!uts)
>> @@ -228,6 +243,10 @@ int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>         if (!fdt_overlay_copy)
>>                 return -ENOMEM;
>>
>> +       fdt_overlay_stacked_copy = malloc(FDT_COPY_SIZE);
>> +       if (!fdt_overlay_stacked_copy)
>> +               return -ENOMEM;
>> +
>>         /*
>>          * Resize the FDT to 4k so that we have room to operate on
>>          *
>> @@ -245,9 +264,21 @@ int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>         ut_assertok(fdt_open_into(fdt_overlay, fdt_overlay_copy,
>>                                   FDT_COPY_SIZE));
>>
>> +       /*
>> +        * Resize the stacked overlay to 4k so that we have room to operate on
>> +        *
>> +        * (and relocate it since the memory might be mapped
>> +        * read-only)
>> +        */
>> +       ut_assertok(fdt_open_into(fdt_overlay_stacked, fdt_overlay_stacked_copy,
>> +                                 FDT_COPY_SIZE));
>> +
>>         /* Apply the overlay */
>>         ut_assertok(fdt_overlay_apply(fdt_base_copy, fdt_overlay_copy));
>>
>> +       /* Apply the stacked overlay */
>> +       ut_assertok(fdt_overlay_apply(fdt_base_copy, fdt_overlay_stacked_copy));
>> +
>>         if (argc == 1)
>>                 printf("Running %d environment tests\n", n_ents);
>>
>> @@ -263,6 +294,7 @@ int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>
>>         printf("Failures: %d\n", uts->fail_count);
>>
>> +       free(fdt_overlay_stacked_copy);
>>         free(fdt_overlay_copy);
>>         free(fdt_base_copy);
>>         free(uts);
>> diff --git a/test/overlay/test-fdt-overlay-stacked.dts b/test/overlay/test-fdt-overlay-stacked.dts
>> new file mode 100644
>> index 0000000..9fb7c7b
>> --- /dev/null
>> +++ b/test/overlay/test-fdt-overlay-stacked.dts
>> @@ -0,0 +1,21 @@
>> +/*
>> + * Copyright (c) 2016 NextThing Co
>> + * Copyright (c) 2016 Free Electrons
>> + * Copyright (c) 2018 Konsulko Group
> 
> Are you time-traveling or anticipating a long review process ;-)

After the configfs stuff in Linux, I think the later ;-)

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list