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

Moritz Fischer moritz.fischer at ettus.com
Fri Jul 7 07:48:03 UTC 2017


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 ;-)
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +/ {
> +       /* Test that we can reference an overlay symbol */
> +       fragment at 0 {
> +               target = <&local>;
> +
> +               __overlay__ {
> +                       stacked-test-int-property = <43>;
> +               };
> +       };
> +};
> --
> 2.1.4
>


More information about the U-Boot mailing list