mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [RFC PATCH 0/2] Run DT schema check on selected device trees
@ 2026-07-30 13:07 Bruno Thomsen
  2026-07-30 13:07 ` [ptxdist] [RFC PATCH 1/2] host-system-python: add dtschema Bruno Thomsen
  2026-07-30 13:07 ` [ptxdist] [RFC PATCH 2/2] kernel: validate device trees against the DT schema Bruno Thomsen
  0 siblings, 2 replies; 3+ messages in thread
From: Bruno Thomsen @ 2026-07-30 13:07 UTC (permalink / raw)
  To: ptxdist; +Cc: Bruno Thomsen

From: Bruno Thomsen Bruno Thomsen <bruno.thomsen@gmail.com>

During development of new boards or preparation of upstream patches
it can be very useful to run dt-schema check on device trees.

Tested with the following PTXCONF values:

PTXCONF_KERNEL_DTS_PATH="${KERNEL_DIR}/arch/${GENERIC_KERNEL_ARCH}/boot/dts/ti/omap"
PTXCONF_KERNEL_DTS="am335x-emperor.dts am335x-emperor-mini.dts"

Bruno Thomsen (2):
  host-system-python: add dtschema
  kernel: validate device trees against the DT schema

 platforms/kernel.in            | 25 +++++++++++++++++++++++
 rules/host-system-python3.in   |  4 ++++
 rules/host-system-python3.make |  9 +++++++++
 rules/kernel.make              | 36 ++++++++++++++++++++++++++++++++++
 4 files changed, 74 insertions(+)


base-commit: fccbfeb4cf9fbf8a6e53d5deb5fc45d9de70aaff
--
2.55.0




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ptxdist] [RFC PATCH 1/2] host-system-python: add dtschema
  2026-07-30 13:07 [ptxdist] [RFC PATCH 0/2] Run DT schema check on selected device trees Bruno Thomsen
@ 2026-07-30 13:07 ` Bruno Thomsen
  2026-07-30 13:07 ` [ptxdist] [RFC PATCH 2/2] kernel: validate device trees against the DT schema Bruno Thomsen
  1 sibling, 0 replies; 3+ messages in thread
From: Bruno Thomsen @ 2026-07-30 13:07 UTC (permalink / raw)
  To: ptxdist; +Cc: Bruno Thomsen

Used for device tree validation.

Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
---
 rules/host-system-python3.in   | 4 ++++
 rules/host-system-python3.make | 9 +++++++++
 2 files changed, 13 insertions(+)

diff --git a/rules/host-system-python3.in b/rules/host-system-python3.in
index 4d6ea7d1d..2d8296852 100644
--- a/rules/host-system-python3.in
+++ b/rules/host-system-python3.in
@@ -15,6 +15,10 @@ config HOST_SYSTEM_PYTHON3_CRYPTOGRAPHY
 config HOST_SYSTEM_PYTHON3_DEV
 	bool

+config HOST_SYSTEM_PYTHON3_DTSCHEMA
+	select HOST_SYSTEM_PYTHON3_SYSTEM_PACKAGES
+	bool
+
 config HOST_SYSTEM_PYTHON3_NUMPY
 	select HOST_SYSTEM_PYTHON3_SYSTEM_PACKAGES
 	bool
diff --git a/rules/host-system-python3.make b/rules/host-system-python3.make
index 6de4466d0..8923acfd6 100644
--- a/rules/host-system-python3.make
+++ b/rules/host-system-python3.make
@@ -42,6 +42,15 @@ ifdef PTXCONF_HOST_SYSTEM_PYTHON3_DEV
 		ptxd_bailout "Python development files module not found! \
 	Please install python3-dev (debian)";
 endif
+ifdef PTXCONF_HOST_SYSTEM_PYTHON3_DTSCHEMA
+	@echo "Checking for Python dtschema ..."
+	@$(SYSTEMPYTHON3) -c 'import dtschema' 2>/dev/null || \
+		ptxd_bailout "Python dtschema module not found! \
+	Please install python3-dtschema (debian)";
+	@dt-validate --version >/dev/null 2>&1 || \
+		ptxd_bailout "'dt-validate' not found in PATH! \
+	Please install python3-dtschema (debian)";
+endif
 ifdef PTXCONF_HOST_SYSTEM_PYTHON3_NUMPY
 	@echo "Checking for Python Numpy ..."
 	@$(SYSTEMPYTHON3) -c 'import numpy' 2>/dev/null || \
--
2.55.0




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ptxdist] [RFC PATCH 2/2] kernel: validate device trees against the DT schema
  2026-07-30 13:07 [ptxdist] [RFC PATCH 0/2] Run DT schema check on selected device trees Bruno Thomsen
  2026-07-30 13:07 ` [ptxdist] [RFC PATCH 1/2] host-system-python: add dtschema Bruno Thomsen
@ 2026-07-30 13:07 ` Bruno Thomsen
  1 sibling, 0 replies; 3+ messages in thread
From: Bruno Thomsen @ 2026-07-30 13:07 UTC (permalink / raw)
  To: ptxdist; +Cc: Bruno Thomsen

Make it possible to do device tree validation on
dts/dtsi during development and preparation for
upstream.

Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
---
 platforms/kernel.in | 25 +++++++++++++++++++++++++
 rules/kernel.make   | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+)

diff --git a/platforms/kernel.in b/platforms/kernel.in
index 2c6d906e8..79a414fd8 100644
--- a/platforms/kernel.in
+++ b/platforms/kernel.in
@@ -11,6 +11,8 @@ menuconfig KERNEL
 	select HOST_LZ4			if KERNEL_LZ4
 	select HOST_LIBKMOD		if KERNEL_MODULES
 	select HOST_SYSTEM_BC
+	select HOST_SYSTEM_PYTHON3	if KERNEL_DTB_CHECK
+	select HOST_SYSTEM_PYTHON3_DTSCHEMA	if KERNEL_DTB_CHECK
 	select HOST_OPENSSL		if KERNEL_OPENSSL
 	select HOST_LIBELF		if KERNEL_LIBELF
 	select HOST_BINDGEN_CLI		if KERNEL_RUST
@@ -232,6 +234,29 @@ config KERNEL_DTSO
 
 endif
 
+config KERNEL_DTB_CHECK
+	bool
+	depends on KERNEL_DTB
+	prompt "validate device trees against the DT schema"
+	help
+	  Additionally build the device trees with the kernel build system
+	  ('make CHECK_DTBS=y <board>.dtb') to validate them against the
+	  device tree bindings in Documentation/devicetree/bindings.
+	  Problems are reported as warnings, they do not break the build.
+
+	  This requires the 'dtschema' python package on the build host and
+	  it noticeably increases the build time of the kernel, because the
+	  schema of all bindings must be processed first.
+
+	  Only device trees that are part of the kernel tree can be checked.
+	  Each file in KERNEL_DTS is looked up in KERNEL_DTS_PATH and the
+	  first match below a 'boot/dts' directory is checked, even if the
+	  device tree itself is built from an earlier entry in the search
+	  path. Device trees without such a match are skipped with a
+	  warning. So for device trees in a vendor directory, that directory
+	  must be part of KERNEL_DTS_PATH, e.g.
+	  "${KERNEL_DIR}/arch/${GENERIC_KERNEL_ARCH}/boot/dts/ti/omap".
+
 config KERNEL_CODE_SIGNING
 	prompt "use code signing infrastructure"
 	select KERNEL_OPENSSL
diff --git a/rules/kernel.make b/rules/kernel.make
index af0dd3913..eaed71023 100644
--- a/rules/kernel.make
+++ b/rules/kernel.make
@@ -215,6 +215,36 @@ KERNEL_MAKE_OPT		= \
 	$(KERNEL_IMAGE) \
 	$(call ptx/ifdef, PTXCONF_KERNEL_MODULES,modules)
 
+#
+# device tree validation
+#
+# The kernel build system can only validate device trees from the kernel tree.
+# Look up the device trees in KERNEL_DTS_PATH and use the first match below a
+# 'boot/dts' directory.
+#
+kernel/dtb-check-file	= \
+	$(firstword $(foreach dts, \
+		$(call ptx/in-path-all,KERNEL_DTS_PATH,$(1)), \
+		$(if $(findstring /boot/dts/,$(dts)),$(dts))))
+
+# the dtb make targets are relative to arch/<arch>/boot/dts
+kernel/dtb-check-target	= \
+	$(patsubst %.dts,%.dtb,$(patsubst /%,%,$(word 2, \
+		$(subst /boot/dts,$(ptx/def/space), \
+			$(call kernel/dtb-check-file,$(1))))))
+
+KERNEL_DTB_CHECK_FILES	= $(strip \
+	$(foreach dts,$(KERNEL_DTS),$(call kernel/dtb-check-target,$(dts))))
+
+KERNEL_DTB_CHECK_SKIPPED = $(strip \
+	$(foreach dts,$(KERNEL_DTS), \
+		$(if $(call kernel/dtb-check-file,$(dts)),,$(dts))))
+
+KERNEL_DTB_CHECK_OPT	= \
+	$(KERNEL_SHARED_OPT) \
+	CHECK_DTBS=y \
+	$(KERNEL_DTB_CHECK_FILES)
+
 KERNEL_TOOL_PERF_OPTS	:= \
 	-C $(KERNEL_DIR)/tools/perf \
 	O=$(KERNEL_BUILD_DIR)/tools/perf \
@@ -263,6 +293,12 @@ $(STATEDIR)/kernel.compile:
 		$(KERNEL_BUILD_DIR)/usr/initramfs_data.cpio.* \
 		$(KERNEL_BUILD_DIR)/usr/.initramfs_data.cpio.*
 	@$(call world/compile, KERNEL)
+ifdef PTXCONF_KERNEL_DTB_CHECK
+	@$(foreach dts, $(KERNEL_DTB_CHECK_SKIPPED), \
+		echo "dtb-check: skipping '$(dts)': no match below 'boot/dts' in KERNEL_DTS_PATH";)
+	@$(if $(KERNEL_DTB_CHECK_FILES), \
+		$(call world/execute, KERNEL, $(MAKE) $(KERNEL_DTB_CHECK_OPT)))
+endif
 ifdef PTXCONF_KERNEL_TOOL_PERF
 	@mkdir -p $(KERNEL_BUILD_DIR)/tools/perf
 	@$(call compile, KERNEL, $(KERNEL_TOOL_PERF_OPTS))
-- 
2.55.0




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-30 13:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-30 13:07 [ptxdist] [RFC PATCH 0/2] Run DT schema check on selected device trees Bruno Thomsen
2026-07-30 13:07 ` [ptxdist] [RFC PATCH 1/2] host-system-python: add dtschema Bruno Thomsen
2026-07-30 13:07 ` [ptxdist] [RFC PATCH 2/2] kernel: validate device trees against the DT schema Bruno Thomsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox