From patchwork Mon Jan 31 16:31:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 12730883 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D0D71C433F5 for ; Mon, 31 Jan 2022 16:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=Wx5cqqVcZzQULyu3DgfjMT35QfNCjINVKHmlLDunmvc=; b=EPKi4nGjBzt1Qz qJc6HR6pmcqm2826n1HapSfDaBXUG7V1g/8pRy99eIqSp6AqQRCSYBBAnbFX1RFkUmf93FexBrjCF KsczI28r4qqkILm+AIwYL0DIHmO5hzUBslUa4PDkqfaABnBbaciVzr2zRfMGkl+UcCWX40eAZb6Nr N1IEXi5ClumWJUttXHev77T/34NsZfQ+SbSE7SyVN0VZfHfZyC6TQlEUQYMsPapIn9/bIyZHiGqMG Hb10aViOXCkhHYEKia52TQ+nH98D8XvGBGP9xXRTEkyIhIhlGDxJSvvpbgErZuFsqqcNNit2N0FPO tgP3+U6NO5D0TUBk1rDQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nEZlO-009uCn-2c; Mon, 31 Jan 2022 16:42:47 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nEZaf-009sDg-Nm for linux-arm-kernel@lists.infradead.org; Mon, 31 Jan 2022 16:31:43 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 59C61ED1; Mon, 31 Jan 2022 08:31:38 -0800 (PST) Received: from donnerap.arm.com (donnerap.cambridge.arm.com [10.1.196.172]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8E6AF3F73B; Mon, 31 Jan 2022 08:31:37 -0800 (PST) From: Andre Przywara To: Mark Rutland Cc: Jaxson Han , linux-arm-kernel@lists.infradead.org, Vladimir Murzin Subject: [boot-wrapper PATCH v3] Makefile: avoid dtc warnings on re-compiling DTB Date: Mon, 31 Jan 2022 16:31:22 +0000 Message-Id: <20220131163122.2188634-1-andre.przywara@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220131_083141_891654_D56F3376 X-CRM114-Status: GOOD ( 13.70 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When we add the PSCI nodes to the provided DTB, we use dtc to de-compile the blob first, then re-compile it with our nodes and properties added. In our input DTB the proper phandle references have already been lost, all we see in the DTB is phandle properties in the target node, and some numbers in the clocks and gpios properties: =========== clk24mhz { compatible = "fixed-clock"; #clock-cells = <0x00>; clock-frequency = <0x16e3600>; clock-output-names = "v2m:clk24mhz"; -> phandle = <0x05>; }; ... serial@90000 { compatible = "arm,pl011", "arm,primecell"; reg = <0x90000 0x1000>; interrupts = <0x05>; -> clocks = <0x05 0x05>; clock-names = "uartclk", "apb_pclk"; }; =========== dtc warns that those numbers might be wrong: ========= :177.6-27: Warning (clocks_property): /bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/serial@90000: clocks: cell 0 is not a phandle reference .... ========= The proper solution would be to use references (&v2m_clk24mhz) instead, as there are in the source .dts file, but we don't have that information anymore, and cannot easily recover it. To avoid the lengthy list of warnings, just drop those checks from the dtc compilation run. This disables more checks than we want or need, but we somewhat trust in the original DTB to be sane, so that should be fine. Since those warning options are not supported by older dtc versions, introduce a compatiblity check before using them. Signed-off-by: Andre Przywara Tested-by: Vladimir Murzin --- Hi, this replaces the reverted version of the patch, adding runtime detection of dtc's compatibility. Works fine with a clueless dtc 1.4.1. Cheers, Andre Makefile.am | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 40bc5d6..08e304a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -162,8 +162,16 @@ $(COMMON_SRC): model.lds: $(LD_SCRIPT) Makefile $(CPP) $(CPPFLAGS) -ansi -DPHYS_OFFSET=$(PHYS_OFFSET) -DMBOX_OFFSET=$(MBOX_OFFSET) -DKERNEL_OFFSET=$(KERNEL_OFFSET) -DFDT_OFFSET=$(FDT_OFFSET) -DFS_OFFSET=$(FS_OFFSET) $(XEN) -DXEN_OFFSET=$(XEN_OFFSET) -DKERNEL=$(KERNEL_IMAGE) -DFILESYSTEM=$(FILESYSTEM) -DTEXT_LIMIT=$(TEXT_LIMIT) -P -C -o $@ $< +# Run dtc with an given command line option to check support for it. +define test-dtc-option +$(if $(shell echo "/dts-v1/;/{};" | $(DTC) $(1) -o /dev/null 2>&1),,$(1)) +endef + +DTC_NOWARN = $(call test-dtc-option,-Wno-clocks_property) +DTC_NOWARN += $(call test-dtc-option,-Wno-gpios_property) + fdt.dtb: $(KERNEL_DTB) Makefile - ( $(DTC) -O dts -I dtb $(KERNEL_DTB) ; echo "/ { $(CHOSEN_NODE) $(PSCI_NODE) }; $(CPU_NODES)" ) | $(DTC) -O dtb -o $@ - + ( $(DTC) -O dts -I dtb $(KERNEL_DTB) ; echo "/ { $(CHOSEN_NODE) $(PSCI_NODE) }; $(CPU_NODES)" ) | $(DTC) -O dtb -o $@ $(DTC_NOWARN) - # The filesystem archive might not exist if INITRD is not being used .PHONY: all clean $(FILESYSTEM)