Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp376229imu; Thu, 8 Nov 2018 22:10:51 -0800 (PST) X-Google-Smtp-Source: AJdET5fBxLBZ6DXaIvuiqCgQiRWCAVV71nyn6RdmJY4AV9dSYeZTfm7HTq9xxcal3kztN9gllu2z X-Received: by 2002:a62:2f04:: with SMTP id v4-v6mr3921090pfv.2.1541743851890; Thu, 08 Nov 2018 22:10:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541743851; cv=none; d=google.com; s=arc-20160816; b=S3rCbZx82mX+ZO6Hp1ddkaaN5lnBjzv3SbaSn3H4a2gDDXuKiJsDtt9ammYUsPrtO0 aBnxnmsKLCiZSNXRKX+ae4Rm3PsifJecG48tTtY9Z8Z2I316aFyFgUaCGzmUylg8W4OJ MalblXTzttd1M/Q1LPv5d7LnUerjtCCHHcSWlD1QhaY8v83LbDfqNe6Tv7r50w83xUxO Js9brRB39EMWBH5PkgtDd9T790t4GBzVELEryCKx3S8+wW9Ihmc6v9niAVI3Wb8WQdyt qJtt2ixq3mFyf8KTiyTqLwvODPOFAbIj4o6gjG/0qGKyAyAF6U9xUqZgtJmjYgi6TcTQ DEfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=cuC5fkmMeEqcg/kIc3ytOs24liArJsl1Rxlcr3OwYd0=; b=SRQwSFiXmmo56As3vr+TcRqVLc1wMNGzdQWnMb/QLdRJR5fa+ycn6qnLfiRcVs/JFI iv/UZT2R6ls0bMfU/X7bSc0HxaadOP0dCvpc6vuMPCKb88dGJBUE77cGIwi7ZFxRBShP FiEXZJ/LVnACpPD01Xu2GhLb3sRYFi+1iu9Op21sMShDPmB1Yq8MBWIzhFf6629fpJS1 vOuBf9RinkhBaHmIC2FjTWAp2u1WAjh0gvOdjuHMDxREHFIHUFU8UzCJYKqSmFOsequk S+FKpoJjk5QCPG4FnI/x0F6ed3BvcXDARq81NBw12hbBYUrY3dA2KEltXJwAEIDYVi/M GknA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=i3VPxCbY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e193-v6si6738861pfc.131.2018.11.08.22.10.36; Thu, 08 Nov 2018 22:10:51 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=i3VPxCbY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728095AbeKIPq6 (ORCPT + 99 others); Fri, 9 Nov 2018 10:46:58 -0500 Received: from mail-pg1-f195.google.com ([209.85.215.195]:34833 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728054AbeKIPq5 (ORCPT ); Fri, 9 Nov 2018 10:46:57 -0500 Received: by mail-pg1-f195.google.com with SMTP id 32-v6so413549pgu.2; Thu, 08 Nov 2018 22:07:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cuC5fkmMeEqcg/kIc3ytOs24liArJsl1Rxlcr3OwYd0=; b=i3VPxCbYrGTe71MjP0t1QUsx00IzfkHOfhu9a2mGtWx50O17igJWDbLfbsfxSTP6uz iVg6UHdqZpRlfpyTbj+172chJt5YzbEk5tOAzzSf1N9CivOjXRic3/lvwQyOrHTY/3wJ PKEPe4FDdrfIL50/T/KTe9ykaIQ7oO6mykMjtrz+glrhwwsO/TbPTYaqrWRb68R4zSup /WH0dWadrvVqJmjYCGAzyK1Z/2dM0dX71r9Dn6ZuQ4IqmPcAEsvjVDu1XhemPiAvJu+A o/oDRRG9KNTJlbjEaLoJC1etTyEwk7l0ThV/JCDOHwTkBl0Iwy6e2d1z72FNjufA0UM9 iYAg== 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=cuC5fkmMeEqcg/kIc3ytOs24liArJsl1Rxlcr3OwYd0=; b=s8MeNjpjisLmNveIFtEAZ3X38PWY9BsQQuBTZLqgKoNgIsFg+jfbIuLaooNQPo/WGo bpxSxg8gQEevUugootP/v6id+N0AXU2A5YwUB+acDWpvB+xZJ8rEZdL02jVR502Bh8MW TYqrLnh5eUmtLq87MG2YMMi5HpFTvFaLTTAkOUBBDvtDpxaDF3ehqj4Rt43c1XPbfcgU jnnoruuEipJpKcryjBvJzS60x3wT5o7H7XqwYUkVTCkmkeyTCHfgWWraS2HJv3nzLVEM JFNqfYImf6BqtflE7zg6L0T8R1DTsxsyNezYfpe2jVpMh03E2Qg3NYRO0lqS9a9VkZph OKnA== X-Gm-Message-State: AGRZ1gIAueFQb8KqThu+iNdNgKvlIB9wkw0f/Cv/OtK8m0Hs1aWroEzr N8h1tZfv2qcT5P8ls9HrZEc= X-Received: by 2002:a63:50b:: with SMTP id 11mr6213835pgf.411.1541743676627; Thu, 08 Nov 2018 22:07:56 -0800 (PST) Received: from localhost.localdomain (c-24-6-192-50.hsd1.ca.comcast.net. [24.6.192.50]) by smtp.gmail.com with ESMTPSA id c70-v6sm6620722pfg.97.2018.11.08.22.07.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 08 Nov 2018 22:07:56 -0800 (PST) From: frowand.list@gmail.com To: Rob Herring , Pantelis Antoniou , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , Alan Tull , Moritz Fischer Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, devicetree@vger.kernel.org, linux-fpga@vger.kernel.org Subject: [PATCH v7 10/17] of: overlay: test case of two fragments adding same node Date: Thu, 8 Nov 2018 22:05:58 -0800 Message-Id: <1541743565-23163-11-git-send-email-frowand.list@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1541743565-23163-1-git-send-email-frowand.list@gmail.com> References: <1541743565-23163-1-git-send-email-frowand.list@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Frank Rowand Multiple overlay fragments adding or deleting the same node is not supported. An attempt to do so results in an incorrect devicetree. The node name will be munged for the second add. After adding this patch, the unittest messages will show: Duplicate name in motor-1, renamed to "controller#1" OF: overlay: of_overlay_apply() err=0 ### dt-test ### of_overlay_fdt_apply() expected -22, ret=0, overlay_bad_add_dup_node ### dt-test ### FAIL of_unittest_overlay_high_level():2419 Adding overlay 'overlay_bad_add_dup_node' failed ... ### dt-test ### end of unittest - 210 passed, 1 failed The incorrect (munged) node name "controller#1" can be seen in the /proc filesystem: $ pwd /proc/device-tree/testcase-data-2/substation@100/motor-1 $ ls compatible controller controller#1 name phandle spin $ ls controller power_bus $ ls controller#1 power_bus_emergency Tested-by: Alan Tull Signed-off-by: Frank Rowand --- drivers/of/unittest-data/Makefile | 1 + .../of/unittest-data/overlay_bad_add_dup_node.dts | 28 ++++++++++++++++++++++ drivers/of/unittest.c | 5 ++++ 3 files changed, 34 insertions(+) create mode 100644 drivers/of/unittest-data/overlay_bad_add_dup_node.dts diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile index 013d85e694c6..166dbdbfd1c5 100644 --- a/drivers/of/unittest-data/Makefile +++ b/drivers/of/unittest-data/Makefile @@ -17,6 +17,7 @@ obj-$(CONFIG_OF_OVERLAY) += overlay.dtb.o \ overlay_12.dtb.o \ overlay_13.dtb.o \ overlay_15.dtb.o \ + overlay_bad_add_dup_node.dtb.o \ overlay_bad_phandle.dtb.o \ overlay_bad_symbol.dtb.o \ overlay_base.dtb.o diff --git a/drivers/of/unittest-data/overlay_bad_add_dup_node.dts b/drivers/of/unittest-data/overlay_bad_add_dup_node.dts new file mode 100644 index 000000000000..145dfc3b1024 --- /dev/null +++ b/drivers/of/unittest-data/overlay_bad_add_dup_node.dts @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +/* + * &electric_1/motor-1 and &spin_ctrl_1 are the same node: + * /testcase-data-2/substation@100/motor-1 + * + * Thus the new node "controller" in each fragment will + * result in an attempt to add the same node twice. + * This will result in an error and the overlay apply + * will fail. + */ + +&electric_1 { + + motor-1 { + controller { + power_bus = < 0x1 0x2 >; + }; + }; +}; + +&spin_ctrl_1 { + controller { + power_bus_emergency = < 0x101 0x102 >; + }; +}; diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index 49ae2aa744d6..f82edf829f43 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -2161,6 +2161,7 @@ struct overlay_info { OVERLAY_INFO_EXTERN(overlay_12); OVERLAY_INFO_EXTERN(overlay_13); OVERLAY_INFO_EXTERN(overlay_15); +OVERLAY_INFO_EXTERN(overlay_bad_add_dup_node); OVERLAY_INFO_EXTERN(overlay_bad_phandle); OVERLAY_INFO_EXTERN(overlay_bad_symbol); @@ -2183,6 +2184,7 @@ struct overlay_info { OVERLAY_INFO(overlay_12, 0), OVERLAY_INFO(overlay_13, 0), OVERLAY_INFO(overlay_15, 0), + OVERLAY_INFO(overlay_bad_add_dup_node, -EINVAL), OVERLAY_INFO(overlay_bad_phandle, -EINVAL), OVERLAY_INFO(overlay_bad_symbol, -EINVAL), {} @@ -2430,6 +2432,9 @@ static __init void of_unittest_overlay_high_level(void) unittest(overlay_data_apply("overlay", NULL), "Adding overlay 'overlay' failed\n"); + unittest(overlay_data_apply("overlay_bad_add_dup_node", NULL), + "Adding overlay 'overlay_bad_add_dup_node' failed\n"); + unittest(overlay_data_apply("overlay_bad_phandle", NULL), "Adding overlay 'overlay_bad_phandle' failed\n"); -- Frank Rowand