Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp698023imu; Mon, 5 Nov 2018 07:28:57 -0800 (PST) X-Google-Smtp-Source: AJdET5cgWwsPXHXngJAmI0MW2v2f5jAa6+FUMkX9tqtkf15WuJvPPYV1kphd1D4maPlqh9LtEp8M X-Received: by 2002:a65:57cb:: with SMTP id q11mr15140480pgr.60.1541431737039; Mon, 05 Nov 2018 07:28:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541431737; cv=none; d=google.com; s=arc-20160816; b=x63jWGUemS+Vi4SU6NzBxtITDXG4Zhe28iR2KeooyuVQmZn3vBEnoSyJdDB8Wsp9LU LxkPVww4p+6vZSZSst9ISRdognDi+zzU+TtJ5n9FYR2DRhZ40YdDsOdnneew6L41sLd3 YhR63EP48k2a8XKsER+z4TXiU97S73x03PfEiwcz+lgwOFrYuzjMtttZBb1s1AiU4qLq f0IRpSQo7Hcgp+NGcY4J4D94csIVa7F36FXZpAnE/6n/y8Mchq2jA0e6iI0rTTDC0s9t AEhxCuMZQL34IBDtppQB41TUOLpzylD+kOsZnqyo4iJWsdqt6QouWc43SQSQyajQoWww dWew== 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=rdKH9sSTLD6THO9+a+UQEdwJf2nCoEn8lkKeVstPKtQtOAC+69nCimB8KNDGg6NYfW qO1XczPfyy/MXI6akD4dBwUAEqQv5w4zmo0gksg1YWtAyNzyEOmuwldz99z41g5bLUwz PhxCyjMid85Ljdbm9Zp9aoEULJSVVJlLil67tyiUYA6FIlSOotBCya/7jSRX3SNTXoHO +7ZQxm20Z10XeCeiwduJswidml63siJwRSczSpDXOqLPEdf88X8QruIqzD4g3Xb1In27 Q1k4665EIoxJy89lCfFEPqLPVhvcAXFxtGuH8C9pUs5jUghfyGQZI6xk83QiplGq5iPM gltA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AfUNoUD8; 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 m187-v6si11418250pfm.159.2018.11.05.07.28.41; Mon, 05 Nov 2018 07:28:57 -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=AfUNoUD8; 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 S2387490AbeKFArV (ORCPT + 99 others); Mon, 5 Nov 2018 19:47:21 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:44300 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387436AbeKFArU (ORCPT ); Mon, 5 Nov 2018 19:47:20 -0500 Received: by mail-pl1-f194.google.com with SMTP id s5-v6so4606206plq.11; Mon, 05 Nov 2018 07:27:07 -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=AfUNoUD8wiDdmh2Ngs19Q8Y4zpYlXZa5ffOFd7VZEsxpYkSrjAch8S7SXJr5Kp+mOu 7qhNAmcIG6OwOJLjsCl3BR2frIr3EkwSA/LvaT79aTQ1nGSNGmbZxbvmnaz8RfjpiqYt u5Z7L1rFxvpsqP+dB0tZvwgDaALkFx4XVhD1AmdpGkUbp7ARlr5kMTS0T8he3BuRvMHl 2yhjvc4JjutcvP2sZaVbTO8+o9SYv8G6gK5yQIG9rzRbzTmt65Er2VmzQsf5k3F16D34 b+YzwEYngJ4ngjqMYv9DL7kwpsKrYgFnWattFXPvcs43VB79jGoM95y6UyiXtJRy09h4 nTEg== 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=nHhDIPFMOLcKsFv1DiC9zN190Ng5qd4gfdW4xDiwTvnOqbkU6hNPS0OtUaBLZOFTeU 8LlI+b2o7o5zdcuQo8AVjvU+zOJ1MiGctChTYr6cxmtFyekE/za0O9/w+4YosHH0NeiX c4kAiAIpeA2Q5WSgu78hwYYvSY8vm6p9wwH+7bR9zqFl5ya6VDPWFpwKKGjkD55G4ZRe Do/ZUhFbPWNJr7W63qWh8xQGgROchVAGiGmxGRU9DzZ6OFTXlUtw+pET3taSi4SNVIT3 OkzRjzT+c1ZvUR8Actsf0hRP7tUj5T4Y+1gJDxdhRoMgI/x9RUdlbwD5uELROINAY1th qytA== X-Gm-Message-State: AGRZ1gIwIggGm5W9UI7j17Q4IL6PXOoBgGi56/x0rIGgntEM0VVysl8Z nNBUkPGmXMTrODANGrfiETg= X-Received: by 2002:a17:902:5a2:: with SMTP id f31-v6mr22225941plf.320.1541431627260; Mon, 05 Nov 2018 07:27:07 -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 u76-v6sm37260578pfa.176.2018.11.05.07.27.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 05 Nov 2018 07:27:06 -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 v6 11/18] of: overlay: test case of two fragments adding same node Date: Mon, 5 Nov 2018 07:25:08 -0800 Message-Id: <1541431515-25197-12-git-send-email-frowand.list@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1541431515-25197-1-git-send-email-frowand.list@gmail.com> References: <1541431515-25197-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