Skip to contentSkip to conversation

Enable building all dtb files

PATCH In review Rob Herring 4 participants 20 messages Oct 8, 2015 – Oct 27, 2015

Subsystems (8)
lore
Share & tools
lore

Rob Herring

author maintainer
#0 lore raw

v2 cover Enable building all dtb files

This series enables building all the dtb files in the kernel mostly independent of the kernel config. The option is only dependent on COMPILE_TEST, OF, and the new OF_ALL_DTBS options. This ensures that allyesconfig builds can build all dtb files although most arches have to build "dtbs" target explicitly. Some arches like ARM include dtbs in the default target.

Arch/arm-soc maintainers, Please ack and I will take this series via the DT tree.

v2:
- Add OF_ALL_DTBS option hidden behind COMPILE_TEST
- Expand to all architectures (with more than 1 dtb)

Rob

Rob Herring (13):
of: add config option to enable building of all dtbs
arc: use common make variables for dtb builds
arc: enable building of all dtbs
arm: enable building of all dtbs
arm64: enable building of all dtbs
h8300: enable building of all dtbs
metag: use common make variables for dtb builds
metag: enable building of all dtbs
mips: enable building of all dtbs
nios2: use common make variables for dtb builds
nios2: enable building of all dtbs
powerpc: enable building of all dtbs
xtensa: enable building of all dtbs

 arch/arc/Makefile              |  2 +-
 arch/arc/boot/dts/Makefile     |  6 ++++--
 arch/arm/boot/dts/Makefile     |  3 +++
 arch/arm64/boot/dts/Makefile   |  6 ++++++
 arch/h8300/boot/dts/Makefile   |  3 +++
 arch/metag/Makefile            |  2 +-
 arch/metag/boot/dts/Makefile   |  7 +++----
 arch/mips/boot/dts/Makefile    |  3 +++
 arch/nios2/Makefile            | 10 +++++-----
 arch/nios2/boot/Makefile       | 13 +++----------
 arch/nios2/boot/dts/Makefile   |  6 ++++++
 arch/powerpc/Makefile          |  6 ++++++
 arch/powerpc/boot/Makefile     |  5 ++++-
 arch/powerpc/boot/dts/Makefile |  5 +++++
 arch/xtensa/Makefile           |  4 ++++
 arch/xtensa/boot/dts/Makefile  |  7 ++++++-
 drivers/of/Kconfig             | 10 ++++++++++
 17 files changed, 73 insertions(+), 25 deletions(-)
 create mode 100644 arch/nios2/boot/dts/Makefile
 create mode 100644 arch/powerpc/boot/dts/Makefile
Signature · 1 line
2.1.4
author maintainer
#1 lore raw

PATCH v2 1/13 of: add config option to enable building of all dtbs

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs.

In order to only build dtbs, this option can be used by creating an allno.config file containing:
CONFIG_COMPILE_TEST=y
CONFIG_OF=y
CONFIG_OF_ALL_DTBS=y

And then running:
make KCONFIG_ALLCONFIG=1 allnoconfig
make dtbs

While building the dtbs themselves don't need a cross compiler, the scripts dependency does need one. This can be hacked around by commenting out "subdir-y += mod" in scripts/Makefile.

Cc Frank Rowand <[email protected]>
Cc Grant Likely <[email protected]>
---
 drivers/of/Kconfig | 10 ++++++++++
 1 file changed, 10 insertions(+)
drivers/of/Kconfig +10 -0
index 59bb855..e2a4841 100644
@@ -23,6 +23,16 @@ config OF_UNITTEST
 
 	  If unsure, say N here, but this option is safe to enable.
 
+config OF_ALL_DTBS
+	bool "Build all Device Tree Blobs"
+	depends on COMPILE_TEST
+	select DTC
+	help
+	  This option builds all possible Device Tree Blobs (DTBs) for the
+	  current architecture.
+
+	  If unsure, say N here, but this option is safe to enable.
+
 config OF_FLATTREE
 	bool
 	select DTC
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author maintainer
#2 lore raw

PATCH v2 2/13 arc: use common make variables for dtb builds

In reply to Rob Herring

Use dtb-y and always make variables to build dtbs instead of explicit dtbs rule. This is in preparation to support building all dtbs.

Cc Vineet Gupta <vgupta-HKixBCOQz3hWk0Htik3J/[email protected]>
---
 arch/arc/Makefile          | 2 +-
 arch/arc/boot/dts/Makefile | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
arch/arc/Makefile +1 -1
index 8a27a48..cf0cf34 100644
@@ -121,7 +121,7 @@ $(boot_targets): vmlinux
 	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
 
 dtbs: scripts
-	$(Q)$(MAKE) $(build)=$(boot)/dts dtbs
+	$(Q)$(MAKE) $(build)=$(boot)/dts
 
 archclean:
 	$(Q)$(MAKE) $(clean)=$(boot)
arch/arc/boot/dts/Makefile +2 -2
index b0e3f19..e8e46f9 100644
@@ -6,10 +6,10 @@ ifneq ($(CONFIG_ARC_BUILTIN_DTB_NAME),"")
 endif
 
 obj-y   += $(builtindtb-y).dtb.o
-targets += $(builtindtb-y).dtb
+dtb-y := $(builtindtb-y).dtb
 
 .SECONDARY: $(obj)/$(builtindtb-y).dtb.S
 
-dtbs:  $(addprefix  $(obj)/, $(builtindtb-y).dtb)
 
+always := $(dtb-y)
 clean-files := *.dtb  *.dtb.S
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Acked-by on v2 2/13
#3 lore raw

Re: [PATCH v2 02/13] arc: use common make variables for dtb builds

On Thursday 08 October 2015 11:24 PM, Rob Herring wrote:

Use dtb-y and always make variables to build dtbs instead of explicit dtbs rule. This is in preparation to support building all dtbs.

author maintainer
#4 lore raw

PATCH v2 3/13 arc: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Cc Vineet Gupta <vgupta-HKixBCOQz3hWk0Htik3J/[email protected]>
---
 arch/arc/boot/dts/Makefile | 2 ++
 1 file changed, 2 insertions(+)
arch/arc/boot/dts/Makefile +2 -0
index e8e46f9..a09f11b 100644
@@ -10,6 +10,8 @@ dtb-y := $(builtindtb-y).dtb
 
 .SECONDARY: $(obj)/$(builtindtb-y).dtb.S
 
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
 
 always := $(dtb-y)
 clean-files := *.dtb  *.dtb.S
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Acked-by on v2 3/13
#5 lore raw

Re: [PATCH v2 03/13] arc: enable building of all dtbs

On Thursday 08 October 2015 11:24 PM, Rob Herring wrote:

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Cc Vineet Gupta <vgupta-HKixBCOQz3hWk0Htik3J/[email protected]><mailto:vgupta-HKixBCOQz3hWk0Htik3J/[email protected]>

Sorry for the delay - slipped thru cracks.

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

author maintainer
#6 lore raw

PATCH v2 4/13 arm: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed. This is simpler for arm64 which has a bunch of sub-dirs.

---
 arch/arm/boot/dts/Makefile | 3 +++
 1 file changed, 3 insertions(+)
arch/arm/boot/dts/Makefile +3 -0
index 233159d..349eb12 100644
@@ -740,5 +740,8 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
 dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
 endif
 
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
 always		:= $(dtb-y)
 clean-files	:= *.dtb
Signature · 1 line
2.1.4
author maintainer
#7 lore raw

PATCH v2 5/13 arm64: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed. This is simpler for arm64 which has a bunch of sub-dirs.

Cc Catalin Marinas <[email protected]>
Cc Will Deacon <[email protected]>
Cc linux-arm-kernel at lists.infradead.org
---
 arch/arm64/boot/dts/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)
arch/arm64/boot/dts/Makefile +6 -0
index d9f8833..b01ec43 100644
@@ -14,3 +14,9 @@ dts-dirs += sprd
 dts-dirs += xilinx
 
 subdir-y	:= $(dts-dirs)
+
+dtstree		:= $(srctree)/$(src)
+
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(foreach d,$(dts-dirs), $(wildcard $(dtstree)/$(d)/*.dts)))
+
+always		:= $(dtb-y)
Signature · 1 line
2.1.4
#8 lore raw

Re: [PATCH v2 05/13] arm64: enable building of all dtbs

Quoted 5 lines · Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed. This is simpler for arm64 which has a bunch of sub-dirs.

This doesn't look simpler than the arm(32) version?

Quoted 21 lines
Cc Catalin Marinas <[email protected]>
Cc Will Deacon <[email protected]>
Cc linux-arm-kernel at lists.infradead.org
---
 arch/arm64/boot/dts/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)
arch/arm64/boot/dts/Makefile +5 -0
index d9f8833..b01ec43 100644
@@ -14,3 +14,9 @@ dts-dirs += sprd
 dts-dirs += xilinx
 
 subdir-y       := $(dts-dirs)
+
+dtstree                := $(srctree)/$(src)
+
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(foreach d,$(dts-dirs), $(wildcard $(dtstree)/$(d)/*.dts)))
+
Signature · 10 lines
Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
author maintainer
#9 lore raw

Re: [PATCH v2 05/13] arm64: enable building of all dtbs

Quoted 8 lines · Geert Uytterhoeven
Quoted 5 lines · Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed. This is simpler for arm64 which has a bunch of sub-dirs.

This doesn't look simpler than the arm(32) version?

I discussed this with Olof in the last version. In the ARM version, I could have done just one line "dtb-$(CONFIG_OF_ALL_DTBS) += $(dtb-)" to add all the disabled dtbs. On arm64, I would have to do that for each sub-dir Makefile as well as make sure any new sub-dirs have this line. In the end, I also prefer to build everything in the tree and not rely on the dtbs to be explicitly listed.

Rob

author maintainer
#10 lore raw

PATCH v2 6/13 h8300: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Cc Yoshinori Sato <[email protected]>
Cc uclinux-h8-devel-5NWGOfrQmneRv+LV9MX5uooqe+aC9MnS@public.gmane.org
---
 arch/h8300/boot/dts/Makefile | 3 +++
 1 file changed, 3 insertions(+)
arch/h8300/boot/dts/Makefile +3 -0
index 0abaf1a..6c08467 100644
@@ -8,5 +8,8 @@ dtb-$(CONFIG_H8300H_SIM) := h8300h_sim.dtb
 dtb-$(CONFIG_H8S_SIM) := h8s_sim.dtb
 dtb-$(CONFIG_H8S_EDOSK2674) := edosk2674.dtb
 
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
 always	    := $(dtb-y)
 clean-files := *.dtb.S *.dtb
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author maintainer
#11 lore raw

PATCH v2 7/13 metag: use common make variables for dtb builds

In reply to Rob Herring

Use dtb-y and always make variables to build dtbs instead of explicit dtbs rule. This is in preparation to support building all dtbs.

---
 arch/metag/Makefile          | 2 +-
 arch/metag/boot/dts/Makefile | 6 +-----
 2 files changed, 2 insertions(+), 6 deletions(-)
arch/metag/Makefile +1 -1
index 9739857..033a582 100644
@@ -72,7 +72,7 @@ $(boot_targets): vmlinux
 	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
 
 dtbs: scripts
-	$(Q)$(MAKE) $(build)=$(boot)/dts dtbs
+	$(Q)$(MAKE) $(build)=$(boot)/dts
 
 archclean:
 	$(Q)$(MAKE) $(clean)=$(boot)
arch/metag/boot/dts/Makefile +1 -5
index 72c1218..2533c38 100644
@@ -12,11 +12,7 @@ endif
 dtb-$(CONFIG_METAG_BUILTIN_DTB)	+= $(builtindtb-y).dtb
 obj-$(CONFIG_METAG_BUILTIN_DTB)	+= $(builtindtb-y).dtb.o
 
-targets	+= dtbs
-targets	+= $(dtb-y)
-
 .SECONDARY: $(obj)/$(builtindtb-y).dtb.S
 
-dtbs: $(addprefix $(obj)/, $(dtb-y))
-
+always += $(dtb-y)
 clean-files += *.dtb *.dtb.S
Signature · 1 line
2.1.4
author maintainer
#12 lore raw

PATCH v2 8/13 metag: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

---
 arch/metag/boot/dts/Makefile | 3 +++
 1 file changed, 3 insertions(+)
arch/metag/boot/dts/Makefile +3 -0
index 2533c38..097c6da 100644
@@ -12,6 +12,9 @@ endif
 dtb-$(CONFIG_METAG_BUILTIN_DTB)	+= $(builtindtb-y).dtb
 obj-$(CONFIG_METAG_BUILTIN_DTB)	+= $(builtindtb-y).dtb.o
 
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
 .SECONDARY: $(obj)/$(builtindtb-y).dtb.S
 
 always += $(dtb-y)
Signature · 1 line
2.1.4
author maintainer
#13 lore raw

PATCH v2 9/13 mips: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

---
 arch/mips/boot/dts/Makefile | 3 +++
 1 file changed, 3 insertions(+)
arch/mips/boot/dts/Makefile +3 -0
index 778a340..bac7b8d 100644
@@ -9,6 +9,9 @@ dts-dirs	+= ralink
 
 obj-y		:= $(addsuffix /, $(dts-dirs))
 
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(foreach d,$(dts-dirs), $(wildcard $(dtstree)/$(d)/*.dts)))
+
 always		:= $(dtb-y)
 subdir-y	:= $(dts-dirs)
 clean-files	:= *.dtb *.dtb.S
Signature · 1 line
2.1.4
author maintainer
#14 lore raw

PATCH v2 10/13 nios2: use common make variables for dtb builds

In reply to Rob Herring

Use common rules and dtb-y and always make variables to build dtbs instead of explicit dtbs rule. Add the missing script dependencies as well.

This is in preparation to support building all dtbs.

Cc Ley Foon Tan <[email protected]>
Cc nios2-dev-g9ZBwUv/Ih/[email protected]
---
 arch/nios2/Makefile          | 10 +++++-----
 arch/nios2/boot/Makefile     | 13 +++----------
 arch/nios2/boot/dts/Makefile |  3 +++
 3 files changed, 11 insertions(+), 15 deletions(-)
 create mode 100644 arch/nios2/boot/dts/Makefile
arch/nios2/Makefile +5 -5
index 2328f82..5508587 100644
@@ -41,7 +41,7 @@ core-y		+= arch/nios2/platform/
 INSTALL_PATH ?= /tftpboot
 nios2-boot := arch/$(ARCH)/boot
 BOOT_TARGETS = vmImage zImage
-PHONY += $(BOOT_TARGETS) install
+PHONY += $(BOOT_TARGETS) install dtbs
 KBUILD_IMAGE := $(nios2-boot)/vmImage
 
 ifneq ($(CONFIG_NIOS2_DTB_SOURCE),"")
@@ -53,11 +53,11 @@ all: vmImage
 archclean:
 	$(Q)$(MAKE) $(clean)=$(nios2-boot)
 
-%.dtb:
-	$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
+%.dtb: scripts
+	$(Q)$(MAKE) $(build)=$(nios2-boot)/dts $(nios2-boot)/dts/$@
 
-dtbs:
-	$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
+dtbs: prepare scripts
+	$(Q)$(MAKE) $(build)=$(nios2-boot)/dts
 
 $(BOOT_TARGETS): vmlinux
 	$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
arch/nios2/boot/Makefile +3 -10
index c899876..187e45d 100644
@@ -31,6 +31,9 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
 $(obj)/compressed/vmlinux: $(obj)/vmlinux.gz FORCE
 	$(Q)$(MAKE) $(build)=$(obj)/compressed $@
 
+# Let clean descend into subdirs
+subdir- := dts
+
 # Rule to build device tree blobs
 DTB_SRC := $(patsubst "%",%,$(CONFIG_NIOS2_DTB_SOURCE))
 
@@ -45,15 +48,5 @@ $(obj)/linked_dtb.o: $(obj)/system.dtb
 
 obj-$(CONFIG_NIOS2_DTB_SOURCE_BOOL) += linked_dtb.o
 
-targets += $(dtb-y)
-
-# Rule to build device tree blobs with make command
-$(obj)/%.dtb: $(src)/dts/%.dts FORCE
-	$(call if_changed_dep,dtc)
-
-$(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
-
-clean-files := *.dtb
-
 install:
 	sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
arch/nios2/boot/dts/Makefile new file +3 -0
new file mode 100644
index 0000000..1c52039
@@ -0,0 +1,3 @@
+always          := $(dtb-y)
+clean-files     := *.dtb
+
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author maintainer
#15 lore raw

PATCH v2 11/13 nios2: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

---
 arch/nios2/boot/dts/Makefile | 3 +++
 1 file changed, 3 insertions(+)
arch/nios2/boot/dts/Makefile +3 -0
index 1c52039..0b6bcf1 100644
@@ -1,3 +1,6 @@
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
 always          := $(dtb-y)
 clean-files     := *.dtb
 
Signature · 1 line
2.1.4
author maintainer
#16 lore raw

PATCH v2 12/13 powerpc: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Supporting this requires adding 'dtbs' make target which was not yet supported on powerpc.

Cc Benjamin Herrenschmidt <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Michael Ellerman <mpe-Gsx/[email protected]>
Cc linuxppc-dev-uLR06cmDAlY/[email protected]
---
 arch/powerpc/Makefile          | 6 ++++++
 arch/powerpc/boot/Makefile     | 5 ++++-
 arch/powerpc/boot/dts/Makefile | 5 +++++
 3 files changed, 15 insertions(+), 1 deletion(-)
 create mode 100644 arch/powerpc/boot/dts/Makefile
arch/powerpc/Makefile +6 -0
index b9b4af2..0ec35ff 100644
@@ -273,6 +273,11 @@ bootwrapper_install:
 %.dtb: scripts
 	$(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
 
+PHONY += dtbs
+
+dtbs: prepare scripts
+	$(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot)/dts
+
 # Used to create 'merged defconfigs'
 # To use it $(call) it with the first argument as the base defconfig
 # and the second argument as a space separated list of .config files to merge,
@@ -317,6 +322,7 @@ define archhelp
   @echo '  dtbImage.<dt>   - zImage with an embedded device tree blob'
   @echo '  simpleImage.<dt> - Firmware independent image.'
   @echo '  treeImage.<dt>  - Support for older IBM 4xx firmware (not U-Boot)'
+  echo  '  dtbs            - Build device tree blobs for enabled boards'
   @echo '  install         - Install kernel using'
   @echo '                    (your) ~/bin/$(INSTALLKERNEL) or'
   @echo '                    (distribution) /sbin/$(INSTALLKERNEL) or'
arch/powerpc/boot/Makefile +4 -1
index 4eec430..381df1a 100644
@@ -402,7 +402,7 @@ zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
 clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
 	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
 	zImage.miboot zImage.pmac zImage.pseries \
-	zImage.maple simpleImage.* otheros.bld *.dtb
+	zImage.maple simpleImage.* otheros.bld
 
 # clean up files cached by wrapper
 clean-kernel := vmlinux.strip vmlinux.bin
@@ -410,6 +410,9 @@ clean-kernel += $(addsuffix .gz,$(clean-kernel))
 # If not absolute clean-files are relative to $(obj).
 clean-files += $(addprefix $(objtree)/, $(clean-kernel))
 
+# Let clean descend into subdirs
+subdir- := dts
+
 WRAPPER_OBJDIR := /usr/lib/kernel-wrapper
 WRAPPER_DTSDIR := /usr/lib/kernel-wrapper/dts
 WRAPPER_BINDIR := /usr/sbin
arch/powerpc/boot/dts/Makefile new file +5 -0
new file mode 100644
index 0000000..f121775
@@ -0,0 +1,5 @@
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
+always		:= $(dtb-y)
+clean-files	:= *.dtb
Signature · 6 lines
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#17 lore raw

Re: [PATCH v2 12/13] powerpc: enable building of all dtbs

Quoted 7 lines · Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Supporting this requires adding 'dtbs' make target which was not yet supported on powerpc.

I'm not entirely clear why we want this? It just means we can test build all the dts regardless of what kernel config we are building?

Have you tested the powerpc build with this applied or do you want me to?

arch/powerpc/Makefile bootwrapper_install: · line 279

Quoted 12 lines
arch/powerpc/Makefile +4 -0
index b9b4af2..0ec35ff 100644
@@ -273,6 +273,11 @@ bootwrapper_install:
 %.dtb: scripts
 	$(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
 
+PHONY += dtbs
+
+dtbs: prepare scripts
+	$(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot)/dts

The ARCH should be powerpc, I guess you just copied the one above.

arch/powerpc/boot/Makefile zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) · line 405

Quoted 10 lines
arch/powerpc/boot/Makefile +1 -1
index 4eec430..381df1a 100644
@@ -402,7 +402,7 @@ zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
 clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
 	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
 	zImage.miboot zImage.pmac zImage.pseries \
-	zImage.maple simpleImage.* otheros.bld *.dtb
+	zImage.maple simpleImage.* otheros.bld

This looks like we used to clean *.dtb in the current dir but now we don't? But I'm probably just not understanding how clean-files works.

Quoted 16 lines
arch/powerpc/boot/Makefile +3 -0
@@ -410,6 +410,9 @@ clean-kernel += $(addsuffix .gz,$(clean-kernel))
 # If not absolute clean-files are relative to $(obj).
 clean-files += $(addprefix $(objtree)/, $(clean-kernel))
 
+# Let clean descend into subdirs
+subdir- := dts
+
 WRAPPER_OBJDIR := /usr/lib/kernel-wrapper
 WRAPPER_DTSDIR := /usr/lib/kernel-wrapper/dts
 WRAPPER_BINDIR := /usr/sbin
arch/powerpc/boot/dts/Makefile new file +0 -0
new file mode 100644
index 0000000..f121775

arch/powerpc/boot/dts/Makefile line 4

Quoted 4 lines
arch/powerpc/boot/dts/Makefile new file +4 -0
@@ -0,0 +1,5 @@
+dtstree		:= $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
+always		:= $(dtb-y)

How/is that different from just doing the more normal:

obj-$(CONFIG_OF_ALL_DTBS) := ...

?

cheers

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

author maintainer
#18 lore raw

Re: [PATCH v2 12/13] powerpc: enable building of all dtbs

Quoted 11 lines · Michael Ellerman
Quoted 7 lines · Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

Supporting this requires adding 'dtbs' make target which was not yet supported on powerpc.

I'm not entirely clear why we want this? It just means we can test build all the dts regardless of what kernel config we are building?

Yes. Given that I haven't found any that didn't build, that alone is probably not so important. There's also an effort to move DT binding docs to YAML, and I'm using dtc to dump out binding information to automatically populate the binding docs hence I need to build all. Eventually, we also plan to use the binding docs to validate dts files.

Quoted 1 line

Have you tested the powerpc build with this applied or do you want me to?

Yes, I've tested powerpc.

Quoted 9 lines
Quoted 9 lines
arch/powerpc/Makefile +0 -0
index b9b4af2..0ec35ff 100644
@@ -273,6 +273,11 @@ bootwrapper_install:
 %.dtb: scripts
      $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
 
Quoted 6 lines

arch/powerpc/Makefile bootwrapper_install: · line 279

Quoted 4 lines
arch/powerpc/Makefile +4 -0
+PHONY += dtbs
+
+dtbs: prepare scripts
+     $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot)/dts

The ARCH should be powerpc, I guess you just copied the one above.

Okay, I'll drop it (it should already be set).

Quoted 14 lines

arch/powerpc/boot/Makefile zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) · line 405

Quoted 11 lines
arch/powerpc/boot/Makefile +1 -1
index 4eec430..381df1a 100644
@@ -402,7 +402,7 @@ zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
 clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
      zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
      zImage.miboot zImage.pmac zImage.pseries \
-     zImage.maple simpleImage.* otheros.bld *.dtb
+     zImage.maple simpleImage.* otheros.bld

This looks like we used to clean *.dtb in the current dir but now we don't? But I'm probably just not understanding how clean-files works.

dtbs target is building in boot/dts. I just noticed that %.dtb targets (or dtbImage.% targets) still build in boot/. I need to move them to boot/dts/ as well to align with all other arches. This clean should probably stay so dtbs get cleaned in either location.

Quoted 24 lines
Quoted 17 lines
arch/powerpc/boot/Makefile +3 -0
@@ -410,6 +410,9 @@ clean-kernel += $(addsuffix .gz,$(clean-kernel))
 # If not absolute clean-files are relative to $(obj).
 clean-files += $(addprefix $(objtree)/, $(clean-kernel))
 
+# Let clean descend into subdirs
+subdir- := dts
+
 WRAPPER_OBJDIR := /usr/lib/kernel-wrapper
 WRAPPER_DTSDIR := /usr/lib/kernel-wrapper/dts
 WRAPPER_BINDIR := /usr/sbin
arch/powerpc/boot/dts/Makefile new file +0 -0
new file mode 100644
index 0000000..f121775

arch/powerpc/boot/dts/Makefile line 4

Quoted 4 lines
arch/powerpc/boot/dts/Makefile new file +4 -0
@@ -0,0 +1,5 @@
+dtstree              := $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
+always               := $(dtb-y)

How/is that different from just doing the more normal:

Quoted 3 lines

obj-$(CONFIG_OF_ALL_DTBS) := ...

?

obj-y will build the dtb into the kernel which some arches do and not what we want here.

Rob

author maintainer
#19 lore raw

PATCH v2 13/13 xtensa: enable building of all dtbs

In reply to Rob Herring

Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs are not really dependent on a platform being enabled or any other kernel config, so for testing coverage it is convenient to build all of the dtbs. This builds all dts files in the tree, not just targets listed.

---
 arch/xtensa/Makefile          | 4 ++++
 arch/xtensa/boot/dts/Makefile | 7 ++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)
arch/xtensa/Makefile +4 -0
index f9e6a06..709b574 100644
@@ -101,6 +101,10 @@ zImage: vmlinux
 %.dtb:
 	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
 
+dtbs: scripts
+	$(Q)$(MAKE) $(build)=$(boot)/dts
+
 define archhelp
   @echo '* zImage      - Compressed kernel image (arch/xtensa/boot/images/zImage.*)'
+  @echo '  dtbs        - Build device tree blobs for enabled boards'
 endef
arch/xtensa/boot/dts/Makefile +6 -1
index 5f711bb..a15e241 100644
@@ -12,4 +12,9 @@ ifneq ($(CONFIG_BUILTIN_DTB),"")
 obj-$(CONFIG_OF) += $(BUILTIN_DTB)
 endif
 
-clean-files := *.dtb.S
+dtstree := $(srctree)/$(src)
+dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
+
+always += $(dtb-y)
+clean-files += *.dtb *.dtb.S
+
Signature · 1 line
2.1.4