From patchwork Fri Aug 11 08:52:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pantelis Antoniou X-Patchwork-Id: 800474 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=konsulko.com header.i=@konsulko.com header.b="U/bNrY6K"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xTJpv2bJdz9t2W for ; Fri, 11 Aug 2017 18:59:35 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2AD0FC21C4F; Fri, 11 Aug 2017 08:59:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 0B672C21E07; Fri, 11 Aug 2017 08:56:41 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 58D6AC21DDC; Fri, 11 Aug 2017 08:55:57 +0000 (UTC) Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by lists.denx.de (Postfix) with ESMTPS id F37DEC21D5D for ; Fri, 11 Aug 2017 08:55:53 +0000 (UTC) Received: by mail-wm0-f46.google.com with SMTP id f15so41936771wmg.1 for ; Fri, 11 Aug 2017 01:55:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=konsulko.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EiiquOuYww0ExSYvhacceNPdH2wtNIIQ6xbmA7ajnqE=; b=U/bNrY6KrAvXTK82E8BfKLb7S0ig89r/LCqCmletE/FeNvpzw9kwX2ven9bYCdC6i3 l0nBswDpfyBesuvlPgjl06h4AF4INPOBG7Wg3bqiSbkME8qg8TWuUuu8l47q+iSZhaL8 utdNZu+STvqQMNimFMJWKxlqYgS1vyiWVLau0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EiiquOuYww0ExSYvhacceNPdH2wtNIIQ6xbmA7ajnqE=; b=prH46Hi0Yv5NdJ8ihVCKJtkPMAc4FT22yN0CsgITY4wb16MMWKHbWlg8u7R9xqFLkx F2gQ7mGKRc5QtQaYSXPUMCa+4tNfXO5l3iMzCkjBqnDWGrXWDQyuBW0GkiUEnlF6DhWG O+BTS3dvnbG+tu19uEcOy5Aoa+3FJxRt3h2l+xTY8rnrLUGUDBO2kCIqumxwa4L8zZnw emAhp3wTyIPV6gU0t1dj8FkoLjOeZr/nQCYwVr5g8gBdek6xkpVD8j2s+e1Y1HqawLFK j5fioYOqUmmSP6SG0+I9ZmIyjIXrU+5H086Q7Cfi3oxfGZXaew+2tazLP/gb6V4mC7I+ bBig== X-Gm-Message-State: AHYfb5gTKCLopsOEJP6wfipvZBaE9CIvVbdZ35U04u4n4AFZaZU4Cy+2 0BtC5h31qGIUqAUe X-Received: by 10.28.33.85 with SMTP id h82mr8912362wmh.18.1502441753689; Fri, 11 Aug 2017 01:55:53 -0700 (PDT) Received: from localhost.localdomain ([195.97.110.117]) by smtp.gmail.com with ESMTPSA id o71sm759811wmg.15.2017.08.11.01.55.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 11 Aug 2017 01:55:53 -0700 (PDT) From: Pantelis Antoniou To: Tom Rini Date: Fri, 11 Aug 2017 11:52:48 +0300 Message-Id: <1502441568-22896-11-git-send-email-pantelis.antoniou@konsulko.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1502441568-22896-1-git-send-email-pantelis.antoniou@konsulko.com> References: <1502441568-22896-1-git-send-email-pantelis.antoniou@konsulko.com> Cc: Marek Vasut , Pantelis Antoniou , Tero Kristo , u-boot@lists.denx.de, Maxime Ripard , Stefan Roese , Alan Ott Subject: [U-Boot] [PATCH v2 10/10] test: overlay: Add unit test for stacked overlay X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Verify that stacked overlays work. Signed-off-by: Pantelis Antoniou Reviewed-by: Simon Glass --- 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 7106f42..24891ee 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 ut_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(ut_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 + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +/dts-v1/; +/plugin/; + +/ { + /* Test that we can reference an overlay symbol */ + fragment@0 { + target = <&local>; + + __overlay__ { + stacked-test-int-property = <43>; + }; + }; +};