u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: "Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
	"Sean Anderson" <seanga2@gmail.com>,
	"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Tom Rini" <trini@konsulko.com>,
	"Mark Kettenis" <mark.kettenis@xs4all.nl>,
	"François Ozog" <francois.ozog@linaro.org>,
	"Simon Glass" <sjg@chromium.org>,
	"Jerry Van Baren" <vanbaren@cideas.com>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>
Subject: [PATCH v8 30/32] fdt: Makefile: Ensure that OF_BOARD is used when needed
Date: Thu, 16 Dec 2021 20:59:37 -0700	[thread overview]
Message-ID: <20211217035939.670884-30-sjg@chromium.org> (raw)
In-Reply-To: <20211217035939.670884-1-sjg@chromium.org>

Boards which define OF_HAS_PRIOR_STAGE must define OF_BOARD at present,
since a custom function is the only way to obtain the devicetree at
runtime.

Add a build error when this requirement is not met, to avoid accepting
any patches which break this requirement.

Add a whitelist for boards which use it, currently none. This whitelist
can be updated for local development, if needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v8:
- Add new patch to ensure that OF_BOARD is used when needed

 Makefile                 |  7 +++++++
 scripts/check-of.sh      | 42 ++++++++++++++++++++++++++++++++++++++++
 scripts/of_whitelist.txt |  1 +
 3 files changed, 50 insertions(+)
 create mode 100755 scripts/check-of.sh
 create mode 100644 scripts/of_whitelist.txt

diff --git a/Makefile b/Makefile
index 6671c5d9e2f..98ef2642f68 100644
--- a/Makefile
+++ b/Makefile
@@ -1061,6 +1061,10 @@ quiet_cmd_cfgcheck = CFGCHK  $2
 cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
 		$(srctree)/scripts/config_whitelist.txt $(srctree)
 
+quiet_cmd_ofcheck = OFCHK   $2
+cmd_ofcheck = $(srctree)/scripts/check-of.sh $2 \
+		$(srctree)/scripts/of_whitelist.txt
+
 # Concat the value of all the CONFIGs (result is 'y' or 'yy', etc. )
 got = $(foreach cfg,$(1),$($(cfg)))
 
@@ -1139,6 +1143,9 @@ endif
 	@# know about unless they are in Kconfig. All the existing CONFIG
 	@# options are whitelisted, so new ones should not be added.
 	$(call cmd,cfgcheck,u-boot.cfg)
+	@# Check that this build does not override OF_HAS_PRIOR_STAGE by
+	@# disabling OF_BOARD.
+	$(call cmd,ofcheck,$(KCONFIG_CONFIG))
 
 PHONY += dtbs
 dtbs: dts/dt.dtb
diff --git a/scripts/check-of.sh b/scripts/check-of.sh
new file mode 100755
index 00000000000..3ce7105cad4
--- /dev/null
+++ b/scripts/check-of.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Copyright 2021 Google LLC
+# Written by Simon Glass <sjg@chromium.org>
+#
+# Check that the .config file provided does not try to disable OF_BOARD for
+# boards that use CONFIG_OF_HAS_PRIOR_STAGE
+#
+# Usage
+#    check-of.sh <path to .config> <path to whitelist file>
+#
+# For example:
+#   scripts/check-of.sh b/chromebook_link/u-boot.cfg kconfig_whitelist.txt
+#
+# Exit code is 0 if OK, 3 if the .config is wrong, as above
+
+set -e
+set -u
+
+PROG_NAME="${0##*/}"
+
+usage() {
+	echo "$PROG_NAME <path to .config> <path to whitelist file>"
+	exit 1
+}
+
+[ $# -ge 2 ] || usage
+
+path="$1"
+whitelist="$2"
+
+sys_config="$(sed -n 's/CONFIG_SYS_CONFIG_NAME="\(.*\)"$/\1/p' "${path}")"
+
+if grep -q OF_HAS_PRIOR_STAGE=y "${path}"; then
+	if ! grep -lq CONFIG_OF_BOARD=y "${path}"; then
+		echo >&2 "This board uses a prior stage to provide the device tree."
+		echo >&2 "Please enable CONFIG_OF_BOARD to ensure that it works correctly."
+		if grep -q "${sys_config}" "${whitelist}"; then
+			exit 0
+		fi
+		exit 3
+	fi
+fi
diff --git a/scripts/of_whitelist.txt b/scripts/of_whitelist.txt
new file mode 100644
index 00000000000..e82cf557bb2
--- /dev/null
+++ b/scripts/of_whitelist.txt
@@ -0,0 +1 @@
+# List of boards which are permitted to use OF_HAS_PRIOR_STAGE without OF_BOARD
-- 
2.34.1.173.g76aa8bc2d0-goog


  parent reply	other threads:[~2021-12-17  4:05 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17  3:59 [PATCH v8 00/32] fdt: Make OF_BOARD a boolean option Simon Glass
2021-12-17  3:59 ` [PATCH v8 01/32] arm: qemu: Mention -nographic in the docs Simon Glass
2021-12-24 14:34   ` Tom Rini
2021-12-17  3:59 ` [PATCH v8 02/32] arm: riscv: qemu: Explain how to extract the generated dt Simon Glass
2021-12-17  3:59 ` [PATCH v8 03/32] arm: qemu: Add a devicetree file for qemu_arm Simon Glass
2021-12-17  3:59 ` [PATCH v8 04/32] arm: qemu: Add a devicetree file for qemu_arm64 virt Simon Glass
2021-12-17  3:59 ` [PATCH v8 05/32] riscv: qemu: Split devicetree files for qemu_riscv32/64 Simon Glass
2021-12-17  3:59 ` [PATCH v8 06/32] arm: rpi: Sync rpi dts files from Linux Simon Glass
2021-12-17  3:59 ` [PATCH v8 07/32] arm: vexpress: Add a devicetree files for juno Simon Glass
2021-12-18  3:30   ` Linus Walleij
2021-12-17  3:59 ` [PATCH v8 08/32] arm: xenguest_arm64: Add a empty devicetree file Simon Glass
2021-12-17  3:59 ` [PATCH v8 09/32] arm: octeontx: Add an " Simon Glass
2021-12-17  3:59 ` [PATCH v8 10/32] arm: xilinx_versal_virt: Add a " Simon Glass
2021-12-17  3:59 ` [PATCH v8 11/32] arm: bcm7xxx: " Simon Glass
2021-12-17  3:59 ` [PATCH v8 12/32] arm: qemu-ppce500: " Simon Glass
2021-12-17  3:59 ` [PATCH v8 13/32] arm: highbank: Add devicetree files Simon Glass
2021-12-17  3:59 ` [PATCH v8 14/32] fdt: Make OF_BOARD a bool option Simon Glass
2021-12-17  3:59 ` [PATCH v8 15/32] fdt: Drop CONFIG_BINMAN_STANDALONE_FDT Simon Glass
2021-12-17  3:59 ` [PATCH v8 16/32] fdt: Make it easier to debug u-boot.dtsi files Simon Glass
2021-12-17  3:59 ` [PATCH v8 17/32] fdt: Move MULTI_DTB_FIT handling out of fdtdec_setup() Simon Glass
2021-12-17  3:59 ` [PATCH v8 18/32] fdt: Drop #ifdefs with MULTI_DTB_FIT Simon Glass
2021-12-17  3:59 ` [PATCH v8 19/32] fdt: Drop CONFIG_SPL_BUILD check in fdtdec_setup() Simon Glass
2021-12-17  3:59 ` [PATCH v8 20/32] fdt: Drop #ifdef around board_fdt_blob_setup() Simon Glass
2021-12-17  3:59 ` [PATCH v8 21/32] fdt: Use if() for fdtcontroladdr check Simon Glass
2021-12-17  3:59 ` [PATCH v8 22/32] fdt: Drop OF_CONTROL check in fdtdec_setup() Simon Glass
2021-12-17  3:59 ` [PATCH v8 23/32] fdt: Drop remaining preprocessor macros " Simon Glass
2021-12-17  3:59 ` [PATCH v8 24/32] fdt: Don't call board_fdt_blob_setup() without OF_BOARD Simon Glass
2021-12-17  3:59 ` [PATCH v8 25/32] dm: core: Allow getting some basic stats Simon Glass
2021-12-17  3:59 ` [PATCH v8 26/32] fdt: Record where the devicetree came from Simon Glass
2021-12-17  3:59 ` [PATCH v8 27/32] fdt: Report the devicetree source Simon Glass
2021-12-17  3:59 ` [PATCH v8 28/32] fdt: Add a Kconfig for boards with a prior stage Simon Glass
2021-12-17  3:59 ` [PATCH v8 29/32] fdt: Enable OF_HAS_PRIOR_STAGE for most boards with OF_BOARD Simon Glass
2021-12-17  3:59 ` Simon Glass [this message]
2021-12-24 14:34   ` [PATCH v8 30/32] fdt: Makefile: Ensure that OF_BOARD is used when needed Tom Rini
2021-12-17  3:59 ` [PATCH v8 31/32] fdt: Avoid emitting an device tree when not needed Simon Glass
2021-12-17  3:59 ` [PATCH v8 32/32] fdt: Show a runtime warning based on devicetree source Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211217035939.670884-30-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=francois.ozog@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=mark.kettenis@xs4all.nl \
    --cc=seanga2@gmail.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=vanbaren@cideas.com \
    --cc=xypron.glpk@gmx.de \
    --cc=yamada.masahiro@socionext.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).