* [PATCH v3 0/9] Devicetree build consolidation @ 2018-09-10 15:03 Rob Herring 2018-09-10 15:04 ` [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules Rob Herring 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-09-10 15:03 UTC (permalink / raw) To: linux-arm-kernel This series addresses a couple of issues I have with building dts files. First, the ability to build all the dts files in the tree. This has been supported on most arches for some time with powerpc being the main exception. The reason powerpc wasn't supported was it needed a change in the location built dtb files are put. Secondly, it's a pain to acquire all the cross-compilers needed to build dtbs for each arch. There's no reason to build with the cross compiler and the host compiler is perfectly fine as we only need the pre-processor. I started addressing just those 2 problems, but kept finding small differences such as target dependencies and dtbs_install support across architectures. Instead of trying to align all these, I've consolidated the build targets moving them out of the arch makefiles. I'd like to take the series via the DT tree. Rob v3: - Rework dtc dependency to avoid 2 entry paths to scripts/dtc/. Essentially, I copied 'scripts_basic'. - Add missing scripts_basic dependency for dtc and missing PHONY tag. - Drop the '|' order only from dependencies - Drop %.dtb.S and %.dtb.o as top-level targets - PPC: remove duplicate mpc5200 dtbs from image-y targets v2: - Fix $arch/boot/dts path check for out of tree builds - Fix dtc dependency for building built-in dtbs - Fix microblaze built-in dtb building - Add dtbs target for microblaze Rob Herring (9): powerpc: build .dtb files in dts directory nios2: build .dtb files in dts directory nios2: use common rules to build built-in dtb nios2: fix building all dtbs c6x: use common built-in dtb support kbuild: consolidate Devicetree dtb build rules powerpc: enable building all dtbs c6x: enable building all dtbs microblaze: enable building all dtbs Makefile | 35 ++++++++++++++++++- arch/arc/Makefile | 6 ---- arch/arm/Makefile | 20 +---------- arch/arm64/Makefile | 17 +-------- arch/c6x/Makefile | 2 -- arch/c6x/boot/dts/Makefile | 17 ++++----- arch/c6x/boot/dts/linked_dtb.S | 2 -- arch/c6x/include/asm/sections.h | 1 - arch/c6x/kernel/setup.c | 4 +-- arch/c6x/kernel/vmlinux.lds.S | 10 ------ arch/h8300/Makefile | 11 +----- arch/microblaze/Makefile | 4 +-- arch/microblaze/boot/dts/Makefile | 4 +++ arch/mips/Makefile | 15 +------- arch/nds32/Makefile | 2 +- arch/nios2/Makefile | 11 +----- arch/nios2/boot/Makefile | 22 ------------ arch/nios2/boot/dts/Makefile | 6 ++++ arch/nios2/boot/linked_dtb.S | 19 ----------- arch/powerpc/Makefile | 3 -- arch/powerpc/boot/Makefile | 55 ++++++++++++++---------------- arch/powerpc/boot/dts/Makefile | 6 ++++ arch/powerpc/boot/dts/fsl/Makefile | 4 +++ arch/xtensa/Makefile | 12 +------ scripts/Makefile | 3 +- scripts/Makefile.lib | 2 +- scripts/dtc/Makefile | 2 +- 27 files changed, 100 insertions(+), 195 deletions(-) delete mode 100644 arch/c6x/boot/dts/linked_dtb.S create mode 100644 arch/nios2/boot/dts/Makefile delete mode 100644 arch/nios2/boot/linked_dtb.S create mode 100644 arch/powerpc/boot/dts/Makefile create mode 100644 arch/powerpc/boot/dts/fsl/Makefile -- 2.17.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-10 15:03 [PATCH v3 0/9] Devicetree build consolidation Rob Herring @ 2018-09-10 15:04 ` Rob Herring 2018-09-11 15:40 ` Rob Herring 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-09-10 15:04 UTC (permalink / raw) To: linux-arm-kernel There is nothing arch specific about building dtb files other than their location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. The dependencies and supported targets are all slightly different. Also, a cross-compiler for each arch is needed, but really the host compiler preprocessor is perfectly fine for building dtbs. Move the build rules to a common location and remove the arch specific ones. This is done in a single step to avoid warnings about overriding rules. The build dependencies had been a mixture of 'scripts' and/or 'prepare'. These pull in several dependencies some of which need a target compiler (specifically devicetable-offsets.h) and aren't needed to build dtbs. All that is really needed is dtc, so adjust the dependencies to only be dtc. This change enables support 'dtbs_install' on some arches which were missing the target. Acked-by: Will Deacon <will.deacon@arm.com> Acked-by: Paul Burton <paul.burton@mips.com> Acked-by: Ley Foon Tan <ley.foon.tan@intel.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Michal Marek <michal.lkml@markovi.net> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Michal Simek <monstr@monstr.eu> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: James Hogan <jhogan@kernel.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Chris Zankel <chris@zankel.net> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: linux-kbuild at vger.kernel.org Cc: linux-snps-arc at lists.infradead.org Cc: linux-arm-kernel at lists.infradead.org Cc: uclinux-h8-devel at lists.sourceforge.jp Cc: linux-mips at linux-mips.org Cc: nios2-dev at lists.rocketboards.org Cc: linuxppc-dev at lists.ozlabs.org Cc: linux-xtensa at linux-xtensa.org Signed-off-by: Rob Herring <robh@kernel.org> --- Makefile | 35 ++++++++++++++++++++++++++++++- arch/arc/Makefile | 6 ------ arch/arm/Makefile | 20 +----------------- arch/arm64/Makefile | 17 +-------------- arch/c6x/Makefile | 2 -- arch/h8300/Makefile | 11 +--------- arch/microblaze/Makefile | 4 +--- arch/microblaze/boot/dts/Makefile | 2 ++ arch/mips/Makefile | 15 +------------ arch/nds32/Makefile | 2 +- arch/nios2/Makefile | 7 ------- arch/nios2/boot/Makefile | 4 ---- arch/powerpc/Makefile | 3 --- arch/xtensa/Makefile | 12 +---------- scripts/Makefile | 3 +-- scripts/Makefile.lib | 2 +- scripts/dtc/Makefile | 2 +- 17 files changed, 46 insertions(+), 101 deletions(-) diff --git a/Makefile b/Makefile index 19948e556941..c43859eba70f 100644 --- a/Makefile +++ b/Makefile @@ -1071,7 +1071,7 @@ include/config/kernel.release: $(srctree)/Makefile FORCE # Carefully list dependencies so we do not try to build scripts twice # in parallel PHONY += scripts -scripts: scripts_basic asm-generic gcc-plugins $(autoksyms_h) +scripts: scripts_basic scripts_dtc asm-generic gcc-plugins $(autoksyms_h) $(Q)$(MAKE) $(build)=$(@) # Things we need to do before we recursively start building the kernel @@ -1215,6 +1215,33 @@ kselftest-merge: $(srctree)/tools/testing/selftests/*/config +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig +# --------------------------------------------------------------------------- +# Devicetree files + +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) +dtstree := arch/$(SRCARCH)/boot/dts +endif + +ifdef CONFIG_OF_EARLY_FLATTREE + +%.dtb : scripts_dtc + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ + +PHONY += dtbs dtbs_install +dtbs: scripts_dtc + $(Q)$(MAKE) $(build)=$(dtstree) + +dtbs_install: dtbs + $(Q)$(MAKE) $(dtbinst)=$(dtstree) + +all: dtbs + +endif + +PHONY += scripts_dtc +scripts_dtc: scripts_basic + $(Q)$(MAKE) $(build)=scripts/dtc + # --------------------------------------------------------------------------- # Modules @@ -1424,6 +1451,12 @@ help: @echo ' kselftest-merge - Merge all the config dependencies of kselftest to existing' @echo ' .config.' @echo '' + @$(if $(dtstree), \ + echo 'Devicetree:'; \ + echo '* dtbs - Build device tree blobs for enabled boards'; \ + echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)'; \ + echo '') + @echo 'Userspace tools targets:' @echo ' use "make tools/help"' @echo ' or "cd tools; make help"' diff --git a/arch/arc/Makefile b/arch/arc/Makefile index fb026196aaab..5c7bc6d62f43 100644 --- a/arch/arc/Makefile +++ b/arch/arc/Makefile @@ -132,11 +132,5 @@ boot_targets += uImage uImage.bin uImage.gz $(boot_targets): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ -%.dtb %.dtb.S %.dtb.o: scripts - $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@ - -dtbs: scripts - $(Q)$(MAKE) $(build)=$(boot)/dts - archclean: $(Q)$(MAKE) $(clean)=$(boot) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index d1516f85f25d..161c2df6567e 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -307,12 +307,7 @@ else KBUILD_IMAGE := $(boot)/zImage endif -# Build the DT binary blobs if we have OF configured -ifeq ($(CONFIG_USE_OF),y) -KBUILD_DTBS := dtbs -endif - -all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTBS) +all: $(notdir $(KBUILD_IMAGE)) archheaders: @@ -339,17 +334,6 @@ $(BOOT_TARGETS): vmlinux $(INSTALL_TARGETS): $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ -%.dtb: | scripts - $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ - -PHONY += dtbs dtbs_install - -dtbs: prepare scripts - $(Q)$(MAKE) $(build)=$(boot)/dts - -dtbs_install: - $(Q)$(MAKE) $(dtbinst)=$(boot)/dts - PHONY += vdso_install vdso_install: ifeq ($(CONFIG_VDSO),y) @@ -371,8 +355,6 @@ define archhelp echo ' uImage - U-Boot wrapped zImage' echo ' bootpImage - Combined zImage and initial RAM disk' echo ' (supply initrd image via make variable INITRD=<path>)' - echo '* dtbs - Build device tree blobs for enabled boards' - echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' echo ' install - Install uncompressed kernel' echo ' zinstall - Install compressed kernel' echo ' uinstall - Install U-Boot wrapped compressed kernel' diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 106039d25e2f..b4e994cd3a42 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -113,9 +113,8 @@ core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a # Default target when executing plain make boot := arch/arm64/boot KBUILD_IMAGE := $(boot)/Image.gz -KBUILD_DTBS := dtbs -all: Image.gz $(KBUILD_DTBS) +all: Image.gz Image: vmlinux @@ -127,17 +126,6 @@ Image.%: Image zinstall install: $(Q)$(MAKE) $(build)=$(boot) $@ -%.dtb: scripts - $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@ - -PHONY += dtbs dtbs_install - -dtbs: prepare scripts - $(Q)$(MAKE) $(build)=$(boot)/dts - -dtbs_install: - $(Q)$(MAKE) $(dtbinst)=$(boot)/dts - PHONY += vdso_install vdso_install: $(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso $@ @@ -145,7 +133,6 @@ vdso_install: # We use MRPROPER_FILES and CLEAN_FILES now archclean: $(Q)$(MAKE) $(clean)=$(boot) - $(Q)$(MAKE) $(clean)=$(boot)/dts # We need to generate vdso-offsets.h before compiling certain files in kernel/. # In order to do that, we should use the archprepare target, but we can't since @@ -160,8 +147,6 @@ vdso_prepare: prepare0 define archhelp echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)' echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' - echo '* dtbs - Build device tree blobs for enabled boards' - echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' echo ' install - Install uncompressed kernel' echo ' zinstall - Install compressed kernel' echo ' Install using (your) ~/bin/installkernel or' diff --git a/arch/c6x/Makefile b/arch/c6x/Makefile index 3fe8a948e94c..b7aa854f7008 100644 --- a/arch/c6x/Makefile +++ b/arch/c6x/Makefile @@ -40,9 +40,7 @@ boot := arch/$(ARCH)/boot DTB:=$(subst dtbImage.,,$(filter dtbImage.%, $(MAKECMDGOALS))) export DTB -ifneq ($(DTB),) core-y += $(boot)/dts/ -endif # With make 3.82 we cannot mix normal and wildcard targets diff --git a/arch/h8300/Makefile b/arch/h8300/Makefile index 58634e6bae92..4003ddc616e1 100644 --- a/arch/h8300/Makefile +++ b/arch/h8300/Makefile @@ -31,21 +31,12 @@ CROSS_COMPILE := h8300-unknown-linux- endif core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ -ifneq '$(CONFIG_H8300_BUILTIN_DTB)' '""' -core-y += arch/h8300/boot/dts/ -endif +core-y += arch/$(ARCH)/boot/dts/ libs-y += arch/$(ARCH)/lib/ boot := arch/h8300/boot -%.dtb %.dtb.S %.dtb.o: | scripts - $(Q)$(MAKE) $(build)=arch/h8300/boot/dts arch/h8300/boot/dts/$@ - -PHONY += dtbs -dtbs: scripts - $(Q)$(MAKE) $(build)=arch/h8300/boot/dts - archmrproper: archclean: diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile index 4f3ab5707265..0823d291fbeb 100644 --- a/arch/microblaze/Makefile +++ b/arch/microblaze/Makefile @@ -65,9 +65,7 @@ boot := arch/microblaze/boot # Are we making a simpleImage.<boardname> target? If so, crack out the boardname DTB:=$(subst simpleImage.,,$(filter simpleImage.%, $(MAKECMDGOALS))) -ifneq ($(DTB),) - core-y += $(boot)/dts/ -endif +core-y += $(boot)/dts/ # defines filename extension depending memory management type ifeq ($(CONFIG_MMU),) diff --git a/arch/microblaze/boot/dts/Makefile b/arch/microblaze/boot/dts/Makefile index 1f77913d404d..fe9af267f598 100644 --- a/arch/microblaze/boot/dts/Makefile +++ b/arch/microblaze/boot/dts/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 # +ifneq ($(DTB),) obj-y += linked_dtb.o # Ensure system.dtb exists @@ -11,6 +12,7 @@ ifneq ($(DTB),system) $(obj)/system.dtb: $(obj)/$(DTB).dtb $(call if_changed,cp) endif +endif quiet_cmd_cp = CP $< $@$2 cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false) diff --git a/arch/mips/Makefile b/arch/mips/Makefile index d74b3742fa5d..d43eeaa6d75b 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile @@ -407,18 +407,7 @@ endif CLEAN_FILES += vmlinux.32 vmlinux.64 # device-trees -core-$(CONFIG_BUILTIN_DTB) += arch/mips/boot/dts/ - -%.dtb %.dtb.S %.dtb.o: | scripts - $(Q)$(MAKE) $(build)=arch/mips/boot/dts arch/mips/boot/dts/$@ - -PHONY += dtbs -dtbs: scripts - $(Q)$(MAKE) $(build)=arch/mips/boot/dts - -PHONY += dtbs_install -dtbs_install: - $(Q)$(MAKE) $(dtbinst)=arch/mips/boot/dts +core-y += arch/mips/boot/dts/ archprepare: ifdef CONFIG_MIPS32_N32 @@ -461,8 +450,6 @@ define archhelp echo ' uImage.lzma - U-Boot image (lzma)' echo ' uImage.lzo - U-Boot image (lzo)' echo ' uzImage.bin - U-Boot image (self-extracting)' - echo ' dtbs - Device-tree blobs for enabled boards' - echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' echo echo ' These will be default as appropriate for a configured platform.' echo diff --git a/arch/nds32/Makefile b/arch/nds32/Makefile index 63f4f173e5f4..adcac830d051 100644 --- a/arch/nds32/Makefile +++ b/arch/nds32/Makefile @@ -43,7 +43,7 @@ CHECKFLAGS += -D__NDS32_EB__ endif boot := arch/nds32/boot -core-$(BUILTIN_DTB) += $(boot)/dts/ +core-y += $(boot)/dts/ .PHONY: FORCE diff --git a/arch/nios2/Makefile b/arch/nios2/Makefile index db2e78fe65c7..52c03e60b114 100644 --- a/arch/nios2/Makefile +++ b/arch/nios2/Makefile @@ -56,12 +56,6 @@ all: vmImage archclean: $(Q)$(MAKE) $(clean)=$(nios2-boot) -%.dtb %.dtb.S %.dtb.o: | scripts - $(Q)$(MAKE) $(build)=$(nios2-boot)/dts $(nios2-boot)/dts/$@ - -dtbs: - $(Q)$(MAKE) $(build)=$(nios2-boot)/dts - $(BOOT_TARGETS): vmlinux $(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@ @@ -74,5 +68,4 @@ define archhelp echo ' (your) ~/bin/$(INSTALLKERNEL) or' echo ' (distribution) /sbin/$(INSTALLKERNEL) or' echo ' install to $$(INSTALL_PATH)' - echo ' dtbs - Build device tree blobs for enabled boards' endef diff --git a/arch/nios2/boot/Makefile b/arch/nios2/boot/Makefile index 0b48f1bf086d..37dfc7e584bc 100644 --- a/arch/nios2/boot/Makefile +++ b/arch/nios2/boot/Makefile @@ -31,9 +31,5 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE $(obj)/compressed/vmlinux: $(obj)/vmlinux.gz FORCE $(Q)$(MAKE) $(build)=$(obj)/compressed $@ -targets += $(dtb-y) - -$(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y)) - install: sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 53ea887eb34e..42f225f6ec93 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -293,9 +293,6 @@ $(BOOT_TARGETS2): vmlinux bootwrapper_install: $(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@) -%.dtb: scripts - $(Q)$(MAKE) $(build)=$(boot)/dts $(patsubst %,$(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, diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index 295c120ed099..13fd3301c517 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile @@ -84,28 +84,18 @@ LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) head-y := arch/xtensa/kernel/head.o core-y += arch/xtensa/kernel/ arch/xtensa/mm/ core-y += $(buildvar) $(buildplf) +core-y += arch/xtensa/boot/dts/ libs-y += arch/xtensa/lib/ $(LIBGCC) drivers-$(CONFIG_OPROFILE) += arch/xtensa/oprofile/ -ifneq ($(CONFIG_BUILTIN_DTB),"") -core-$(CONFIG_OF) += arch/xtensa/boot/dts/ -endif - boot := arch/xtensa/boot all Image zImage uImage: vmlinux $(Q)$(MAKE) $(build)=$(boot) $@ -%.dtb: - $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@ - -dtbs: scripts - $(Q)$(MAKE) $(build)=$(boot)/dts - define archhelp @echo '* Image - Kernel ELF image with reset vector' @echo '* zImage - Compressed kernel image (arch/xtensa/boot/images/zImage.*)' @echo '* uImage - U-Boot wrapped image' - @echo ' dtbs - Build device tree blobs for enabled boards' endef diff --git a/scripts/Makefile b/scripts/Makefile index 61affa300d25..ece52ff20171 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -39,8 +39,7 @@ build_unifdef: $(obj)/unifdef subdir-$(CONFIG_MODVERSIONS) += genksyms subdir-y += mod subdir-$(CONFIG_SECURITY_SELINUX) += selinux -subdir-$(CONFIG_DTC) += dtc subdir-$(CONFIG_GDB_SCRIPTS) += gdb # Let clean descend into subdirs -subdir- += basic kconfig package gcc-plugins +subdir- += basic dtc kconfig package gcc-plugins diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 61e596650ed3..8fe4468f9bda 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -283,7 +283,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE quiet_cmd_dtc = DTC $@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ - $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ + $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ $(DTC) -O dtb -o $@ -b 0 \ $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile index 1c943e03eaf2..e535b457babb 100644 --- a/scripts/dtc/Makefile +++ b/scripts/dtc/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 # scripts/dtc makefile -hostprogs-y := dtc +hostprogs-$(CONFIG_DTC) := dtc always := $(hostprogs-y) dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-10 15:04 ` [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules Rob Herring @ 2018-09-11 15:40 ` Rob Herring 2018-09-12 1:00 ` Masahiro Yamada 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-09-11 15:40 UTC (permalink / raw) To: linux-arm-kernel On Mon, Sep 10, 2018 at 10:04 AM Rob Herring <robh@kernel.org> wrote: > > There is nothing arch specific about building dtb files other than their > location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. > The dependencies and supported targets are all slightly different. > Also, a cross-compiler for each arch is needed, but really the host > compiler preprocessor is perfectly fine for building dtbs. Move the > build rules to a common location and remove the arch specific ones. This > is done in a single step to avoid warnings about overriding rules. > > The build dependencies had been a mixture of 'scripts' and/or 'prepare'. > These pull in several dependencies some of which need a target compiler > (specifically devicetable-offsets.h) and aren't needed to build dtbs. > All that is really needed is dtc, so adjust the dependencies to only be > dtc. > > This change enables support 'dtbs_install' on some arches which were > missing the target. [...] > @@ -1215,6 +1215,33 @@ kselftest-merge: > $(srctree)/tools/testing/selftests/*/config > +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig > > +# --------------------------------------------------------------------------- > +# Devicetree files > + > +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > +dtstree := arch/$(SRCARCH)/boot/dts > +endif > + > +ifdef CONFIG_OF_EARLY_FLATTREE This can be true when dtstree is unset. So this line should be this instead to fix the 0-day reported error: ifneq ($(dtstree),) > + > +%.dtb : scripts_dtc > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > + > +PHONY += dtbs dtbs_install > +dtbs: scripts_dtc > + $(Q)$(MAKE) $(build)=$(dtstree) > + > +dtbs_install: dtbs > + $(Q)$(MAKE) $(dtbinst)=$(dtstree) > + > +all: dtbs > + > +endif ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-11 15:40 ` Rob Herring @ 2018-09-12 1:00 ` Masahiro Yamada 2018-09-13 15:51 ` Geert Uytterhoeven 0 siblings, 1 reply; 13+ messages in thread From: Masahiro Yamada @ 2018-09-12 1:00 UTC (permalink / raw) To: linux-arm-kernel 2018-09-12 0:40 GMT+09:00 Rob Herring <robh@kernel.org>: > On Mon, Sep 10, 2018 at 10:04 AM Rob Herring <robh@kernel.org> wrote: >> >> There is nothing arch specific about building dtb files other than their >> location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. >> The dependencies and supported targets are all slightly different. >> Also, a cross-compiler for each arch is needed, but really the host >> compiler preprocessor is perfectly fine for building dtbs. Move the >> build rules to a common location and remove the arch specific ones. This >> is done in a single step to avoid warnings about overriding rules. >> >> The build dependencies had been a mixture of 'scripts' and/or 'prepare'. >> These pull in several dependencies some of which need a target compiler >> (specifically devicetable-offsets.h) and aren't needed to build dtbs. >> All that is really needed is dtc, so adjust the dependencies to only be >> dtc. >> >> This change enables support 'dtbs_install' on some arches which were >> missing the target. > > [...] > >> @@ -1215,6 +1215,33 @@ kselftest-merge: >> $(srctree)/tools/testing/selftests/*/config >> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig >> >> +# --------------------------------------------------------------------------- >> +# Devicetree files >> + >> +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) >> +dtstree := arch/$(SRCARCH)/boot/dts >> +endif >> + >> +ifdef CONFIG_OF_EARLY_FLATTREE > > This can be true when dtstree is unset. So this line should be this > instead to fix the 0-day reported error: > > ifneq ($(dtstree),) > >> + >> +%.dtb : scripts_dtc >> + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ >> + >> +PHONY += dtbs dtbs_install >> +dtbs: scripts_dtc >> + $(Q)$(MAKE) $(build)=$(dtstree) >> + >> +dtbs_install: dtbs >> + $(Q)$(MAKE) $(dtbinst)=$(dtstree) >> + >> +all: dtbs >> + >> +endif Ah, right. Even x86 can enable OF and OF_UNITTEST. Another solution might be, guard it by 'depends on ARCH_SUPPORTS_OF'. This is actually what ACPI does. menuconfig ACPI bool "ACPI (Advanced Configuration and Power Interface) Support" depends on ARCH_SUPPORTS_ACPI ... -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-12 1:00 ` Masahiro Yamada @ 2018-09-13 15:51 ` Geert Uytterhoeven 2018-09-23 10:31 ` Masahiro Yamada 2018-09-28 17:21 ` Andreas Färber 0 siblings, 2 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2018-09-13 15:51 UTC (permalink / raw) To: linux-arm-kernel Hi Yamada-san, On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > 2018-09-12 0:40 GMT+09:00 Rob Herring <robh@kernel.org>: > > On Mon, Sep 10, 2018 at 10:04 AM Rob Herring <robh@kernel.org> wrote: > >> There is nothing arch specific about building dtb files other than their > >> location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. > >> The dependencies and supported targets are all slightly different. > >> Also, a cross-compiler for each arch is needed, but really the host > >> compiler preprocessor is perfectly fine for building dtbs. Move the > >> build rules to a common location and remove the arch specific ones. This > >> is done in a single step to avoid warnings about overriding rules. > >> > >> The build dependencies had been a mixture of 'scripts' and/or 'prepare'. > >> These pull in several dependencies some of which need a target compiler > >> (specifically devicetable-offsets.h) and aren't needed to build dtbs. > >> All that is really needed is dtc, so adjust the dependencies to only be > >> dtc. > >> > >> This change enables support 'dtbs_install' on some arches which were > >> missing the target. > > > > [...] > > > >> @@ -1215,6 +1215,33 @@ kselftest-merge: > >> $(srctree)/tools/testing/selftests/*/config > >> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig > >> > >> +# --------------------------------------------------------------------------- > >> +# Devicetree files > >> + > >> +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > >> +dtstree := arch/$(SRCARCH)/boot/dts > >> +endif > >> + > >> +ifdef CONFIG_OF_EARLY_FLATTREE > > > > This can be true when dtstree is unset. So this line should be this > > instead to fix the 0-day reported error: > > > > ifneq ($(dtstree),) > > > >> + > >> +%.dtb : scripts_dtc > >> + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > >> + > >> +PHONY += dtbs dtbs_install > >> +dtbs: scripts_dtc > >> + $(Q)$(MAKE) $(build)=$(dtstree) > >> + > >> +dtbs_install: dtbs > >> + $(Q)$(MAKE) $(dtbinst)=$(dtstree) > >> + > >> +all: dtbs > >> + > >> +endif > > > Ah, right. > Even x86 can enable OF and OF_UNITTEST. > > > > Another solution might be, > guard it by 'depends on ARCH_SUPPORTS_OF'. > > > > This is actually what ACPI does. > > menuconfig ACPI > bool "ACPI (Advanced Configuration and Power Interface) Support" > depends on ARCH_SUPPORTS_ACPI > ... ACPI is a real platform feature, as it depends on firmware. CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, even if it has ACPI ;-) 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-13 15:51 ` Geert Uytterhoeven @ 2018-09-23 10:31 ` Masahiro Yamada 2018-09-28 15:41 ` Rob Herring 2018-09-28 17:21 ` Andreas Färber 1 sibling, 1 reply; 13+ messages in thread From: Masahiro Yamada @ 2018-09-23 10:31 UTC (permalink / raw) To: linux-arm-kernel 2018-09-13 11:51 GMT-04:00 Geert Uytterhoeven <geert@linux-m68k.org>: > Hi Yamada-san, > > On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: >> 2018-09-12 0:40 GMT+09:00 Rob Herring <robh@kernel.org>: >> > On Mon, Sep 10, 2018 at 10:04 AM Rob Herring <robh@kernel.org> wrote: >> >> There is nothing arch specific about building dtb files other than their >> >> location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. >> >> The dependencies and supported targets are all slightly different. >> >> Also, a cross-compiler for each arch is needed, but really the host >> >> compiler preprocessor is perfectly fine for building dtbs. Move the >> >> build rules to a common location and remove the arch specific ones. This >> >> is done in a single step to avoid warnings about overriding rules. >> >> >> >> The build dependencies had been a mixture of 'scripts' and/or 'prepare'. >> >> These pull in several dependencies some of which need a target compiler >> >> (specifically devicetable-offsets.h) and aren't needed to build dtbs. >> >> All that is really needed is dtc, so adjust the dependencies to only be >> >> dtc. >> >> >> >> This change enables support 'dtbs_install' on some arches which were >> >> missing the target. >> > >> > [...] >> > >> >> @@ -1215,6 +1215,33 @@ kselftest-merge: >> >> $(srctree)/tools/testing/selftests/*/config >> >> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig >> >> >> >> +# --------------------------------------------------------------------------- >> >> +# Devicetree files >> >> + >> >> +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) >> >> +dtstree := arch/$(SRCARCH)/boot/dts >> >> +endif >> >> + >> >> +ifdef CONFIG_OF_EARLY_FLATTREE >> > >> > This can be true when dtstree is unset. So this line should be this >> > instead to fix the 0-day reported error: >> > >> > ifneq ($(dtstree),) >> > >> >> + >> >> +%.dtb : scripts_dtc >> >> + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ >> >> + >> >> +PHONY += dtbs dtbs_install >> >> +dtbs: scripts_dtc >> >> + $(Q)$(MAKE) $(build)=$(dtstree) >> >> + >> >> +dtbs_install: dtbs >> >> + $(Q)$(MAKE) $(dtbinst)=$(dtstree) >> >> + >> >> +all: dtbs >> >> + >> >> +endif >> >> >> Ah, right. >> Even x86 can enable OF and OF_UNITTEST. >> >> >> >> Another solution might be, >> guard it by 'depends on ARCH_SUPPORTS_OF'. >> >> >> >> This is actually what ACPI does. >> >> menuconfig ACPI >> bool "ACPI (Advanced Configuration and Power Interface) Support" >> depends on ARCH_SUPPORTS_ACPI >> ... > > ACPI is a real platform feature, as it depends on firmware. > > CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, > even if it has ACPI ;-) > OK, understood. Thanks! -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-23 10:31 ` Masahiro Yamada @ 2018-09-28 15:41 ` Rob Herring 2018-10-01 5:49 ` Masahiro Yamada 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-09-28 15:41 UTC (permalink / raw) To: linux-arm-kernel On Sun, Sep 23, 2018 at 06:31:14AM -0400, Masahiro Yamada wrote: > 2018-09-13 11:51 GMT-04:00 Geert Uytterhoeven <geert@linux-m68k.org>: > > Hi Yamada-san, > > > > On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada > > <yamada.masahiro@socionext.com> wrote: > >> 2018-09-12 0:40 GMT+09:00 Rob Herring <robh@kernel.org>: > >> > On Mon, Sep 10, 2018 at 10:04 AM Rob Herring <robh@kernel.org> wrote: > >> >> There is nothing arch specific about building dtb files other than their > >> >> location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. > >> >> The dependencies and supported targets are all slightly different. > >> >> Also, a cross-compiler for each arch is needed, but really the host > >> >> compiler preprocessor is perfectly fine for building dtbs. Move the > >> >> build rules to a common location and remove the arch specific ones. This > >> >> is done in a single step to avoid warnings about overriding rules. > >> >> > >> >> The build dependencies had been a mixture of 'scripts' and/or 'prepare'. > >> >> These pull in several dependencies some of which need a target compiler > >> >> (specifically devicetable-offsets.h) and aren't needed to build dtbs. > >> >> All that is really needed is dtc, so adjust the dependencies to only be > >> >> dtc. > >> >> > >> >> This change enables support 'dtbs_install' on some arches which were > >> >> missing the target. > >> > > >> > [...] > >> > > >> >> @@ -1215,6 +1215,33 @@ kselftest-merge: > >> >> $(srctree)/tools/testing/selftests/*/config > >> >> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig > >> >> > >> >> +# --------------------------------------------------------------------------- > >> >> +# Devicetree files > >> >> + > >> >> +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > >> >> +dtstree := arch/$(SRCARCH)/boot/dts > >> >> +endif > >> >> + > >> >> +ifdef CONFIG_OF_EARLY_FLATTREE > >> > > >> > This can be true when dtstree is unset. So this line should be this > >> > instead to fix the 0-day reported error: > >> > > >> > ifneq ($(dtstree),) > >> > > >> >> + > >> >> +%.dtb : scripts_dtc > >> >> + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > >> >> + > >> >> +PHONY += dtbs dtbs_install > >> >> +dtbs: scripts_dtc > >> >> + $(Q)$(MAKE) $(build)=$(dtstree) > >> >> + > >> >> +dtbs_install: dtbs > >> >> + $(Q)$(MAKE) $(dtbinst)=$(dtstree) > >> >> + > >> >> +all: dtbs > >> >> + > >> >> +endif > >> > >> > >> Ah, right. > >> Even x86 can enable OF and OF_UNITTEST. > >> > >> > >> > >> Another solution might be, > >> guard it by 'depends on ARCH_SUPPORTS_OF'. > >> > >> > >> > >> This is actually what ACPI does. > >> > >> menuconfig ACPI > >> bool "ACPI (Advanced Configuration and Power Interface) Support" > >> depends on ARCH_SUPPORTS_ACPI > >> ... > > > > ACPI is a real platform feature, as it depends on firmware. > > > > CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, > > even if it has ACPI ;-) > > > > OK, understood. Any other comments on this? I'd like to get the series into linux-next soon. There was one other problem 0-day reported when building with CONFIG_OF=n while setting CONFIG_OF_ALL_DTBS=y on the kernel command line. The problem is dtc is not built as setting options on the command line doesn't invoke kconfig select(s). This can be fixed by also adding CONFIG_DTC=y to the command line, always building dtc regardless of Kconfig, or making 'all' conditionally dependent on 'dtbs'. I've gone with the last option as that is how this problem was avoided before. So the hunk in question with the 2 fixes now looks like this: @@ -1215,6 +1215,35 @@ kselftest-merge: $(srctree)/tools/testing/selftests/*/config +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig +# --------------------------------------------------------------------------- +# Devicetree files + +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) +dtstree := arch/$(SRCARCH)/boot/dts +endif + +ifneq ($(dtstree),) + +%.dtb : scripts_dtc + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ + +PHONY += dtbs dtbs_install +dtbs: scripts_dtc + $(Q)$(MAKE) $(build)=$(dtstree) + +dtbs_install: dtbs + $(Q)$(MAKE) $(dtbinst)=$(dtstree) + +ifdef CONFIG_OF_EARLY_FLATTREE +all: dtbs +endif + +endif + +PHONY += scripts_dtc +scripts_dtc: scripts_basic + $(Q)$(MAKE) $(build)=scripts/dtc + # --------------------------------------------------------------------------- # Modules ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-28 15:41 ` Rob Herring @ 2018-10-01 5:49 ` Masahiro Yamada 2018-10-01 13:25 ` Rob Herring 0 siblings, 1 reply; 13+ messages in thread From: Masahiro Yamada @ 2018-10-01 5:49 UTC (permalink / raw) To: linux-arm-kernel Hi Rob, 2018?9?29?(?) 0:43 Rob Herring <robh@kernel.org>: > +# > --------------------------------------------------------------------------- > +# Devicetree files > + > +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > +dtstree := arch/$(SRCARCH)/boot/dts > +endif > + > +ifneq ($(dtstree),) > + > +%.dtb : scripts_dtc %.dtb: prepare3 prepare because we need to make sure KERNELRELEASE is correctly defined before dtbs_install happens. > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > + > +PHONY += dtbs dtbs_install > +dtbs: scripts_dtc dtbs: prepare3 scripts_dtc > + $(Q)$(MAKE) $(build)=$(dtstree) > + > +dtbs_install: dtbs Please do not have dtbs_install to depend on dtbs. No install targets should ever trigger building anything in the source tree. For the background, see the commit log of 19514fc665ffbce624785f76ee7ad0ea6378a527 > + $(Q)$(MAKE) $(dtbinst)=$(dtstree) > + > +ifdef CONFIG_OF_EARLY_FLATTREE > +all: dtbs > +endif > + > +endif > + > +PHONY += scripts_dtc > +scripts_dtc: scripts_basic > + $(Q)$(MAKE) $(build)=scripts/dtc > + > # > --------------------------------------------------------------------------- > # Modules > -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-10-01 5:49 ` Masahiro Yamada @ 2018-10-01 13:25 ` Rob Herring 2018-10-01 14:48 ` Masahiro Yamada 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-10-01 13:25 UTC (permalink / raw) To: linux-arm-kernel On Mon, Oct 1, 2018 at 12:49 AM Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > > Hi Rob, > > > 2018?9?29?(?) 0:43 Rob Herring <robh@kernel.org>: > > > +# > > --------------------------------------------------------------------------- > > +# Devicetree files > > + > > +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > > +dtstree := arch/$(SRCARCH)/boot/dts > > +endif > > + > > +ifneq ($(dtstree),) > > + > > +%.dtb : scripts_dtc > > %.dtb: prepare3 prepare I assume you didn't mean to drop scripts_dtc as that doesn't work. Why "prepare" here and not on dtbs? > because we need to make sure KERNELRELEASE > is correctly defined before dtbs_install happens. Yes, indeed. With prepare3 added I get: cp: cannot create regular file '/boot/dtbs/4.19.0-rc3-00009-g0afba9b7b2ea-dirty': No such file or directory vs. with it: cp: cannot create regular file '/boot/dtbs/': Not a directory > > > > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > > + > > +PHONY += dtbs dtbs_install > > +dtbs: scripts_dtc > > > dtbs: prepare3 scripts_dtc > > > > > + $(Q)$(MAKE) $(build)=$(dtstree) > > + > > +dtbs_install: dtbs > > > Please do not have dtbs_install to depend on dtbs. > > No install targets should ever trigger building anything > in the source tree. > > > For the background, see the commit log of > 19514fc665ffbce624785f76ee7ad0ea6378a527 Okay, thanks. Rob ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-10-01 13:25 ` Rob Herring @ 2018-10-01 14:48 ` Masahiro Yamada 0 siblings, 0 replies; 13+ messages in thread From: Masahiro Yamada @ 2018-10-01 14:48 UTC (permalink / raw) To: linux-arm-kernel Hi Rob, 2018?10?1?(?) 22:26 Rob Herring <robh@kernel.org>: > > On Mon, Oct 1, 2018 at 12:49 AM Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: > > > > Hi Rob, > > > > > > 2018?9?29?(?) 0:43 Rob Herring <robh@kernel.org>: > > > > > +# > > > --------------------------------------------------------------------------- > > > +# Devicetree files > > > + > > > +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),) > > > +dtstree := arch/$(SRCARCH)/boot/dts > > > +endif > > > + > > > +ifneq ($(dtstree),) > > > + > > > +%.dtb : scripts_dtc > > > > %.dtb: prepare3 prepare > > I assume you didn't mean to drop scripts_dtc as that doesn't work. > > Why "prepare" here and not on dtbs? Sorry, my mistake. %.dtb: prepare3 scripts_dtc is the correct one. > > because we need to make sure KERNELRELEASE > > is correctly defined before dtbs_install happens. > > Yes, indeed. With prepare3 added I get: > > cp: cannot create regular file > '/boot/dtbs/4.19.0-rc3-00009-g0afba9b7b2ea-dirty': No such file or > directory > > vs. with it: > > cp: cannot create regular file '/boot/dtbs/': Not a directory > > > > > > > > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > > > + > > > +PHONY += dtbs dtbs_install > > > +dtbs: scripts_dtc > > > > > > dtbs: prepare3 scripts_dtc > > > > > > > > > + $(Q)$(MAKE) $(build)=$(dtstree) > > > + > > > +dtbs_install: dtbs > > > > > > Please do not have dtbs_install to depend on dtbs. > > > > No install targets should ever trigger building anything > > in the source tree. > > > > > > For the background, see the commit log of > > 19514fc665ffbce624785f76ee7ad0ea6378a527 > > Okay, thanks. > > Rob -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-13 15:51 ` Geert Uytterhoeven 2018-09-23 10:31 ` Masahiro Yamada @ 2018-09-28 17:21 ` Andreas Färber 2018-09-28 18:41 ` Rob Herring 1 sibling, 1 reply; 13+ messages in thread From: Andreas Färber @ 2018-09-28 17:21 UTC (permalink / raw) To: linux-arm-kernel Hi Geert, Am 13.09.18 um 17:51 schrieb Geert Uytterhoeven: > On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: >> Even x86 can enable OF and OF_UNITTEST. >> >> Another solution might be, >> guard it by 'depends on ARCH_SUPPORTS_OF'. >> >> This is actually what ACPI does. >> >> menuconfig ACPI >> bool "ACPI (Advanced Configuration and Power Interface) Support" >> depends on ARCH_SUPPORTS_ACPI >> ... > > ACPI is a real platform feature, as it depends on firmware. > > CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, > even if it has ACPI ;-) How would loading a DT overlay work on an ACPI platform? I.e., what would it overlay against and how to practically load such a file? I wonder whether that could be helpful for USB devices and serdev... Cheers, Andreas -- SUSE Linux GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany GF: Felix Imend?rffer, Jane Smithard, Graham Norton HRB 21284 (AG N?rnberg) ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-28 17:21 ` Andreas Färber @ 2018-09-28 18:41 ` Rob Herring 2018-10-01 7:53 ` Geert Uytterhoeven 0 siblings, 1 reply; 13+ messages in thread From: Rob Herring @ 2018-09-28 18:41 UTC (permalink / raw) To: linux-arm-kernel On Fri, Sep 28, 2018 at 12:21 PM Andreas F?rber <afaerber@suse.de> wrote: > > Hi Geert, > > Am 13.09.18 um 17:51 schrieb Geert Uytterhoeven: > > On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada > > <yamada.masahiro@socionext.com> wrote: > >> Even x86 can enable OF and OF_UNITTEST. > >> > >> Another solution might be, > >> guard it by 'depends on ARCH_SUPPORTS_OF'. > >> > >> This is actually what ACPI does. > >> > >> menuconfig ACPI > >> bool "ACPI (Advanced Configuration and Power Interface) Support" > >> depends on ARCH_SUPPORTS_ACPI > >> ... > > > > ACPI is a real platform feature, as it depends on firmware. > > > > CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, > > even if it has ACPI ;-) > > How would loading a DT overlay work on an ACPI platform? I.e., what > would it overlay against and how to practically load such a file? The DT unittests do just that. I run them on x86 and UM builds. In this case, the loading source is built-in. > I wonder whether that could be helpful for USB devices and serdev... How to load the overlays is pretty orthogonal to the issues to be solved here. It would certainly be possible to move forward with prototyping this and just have the overlay built-in. It may not even need to be an overlay if we can support multiple root nodes. Rob ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules 2018-09-28 18:41 ` Rob Herring @ 2018-10-01 7:53 ` Geert Uytterhoeven 0 siblings, 0 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2018-10-01 7:53 UTC (permalink / raw) To: linux-arm-kernel On Fri, Sep 28, 2018 at 8:42 PM Rob Herring <robh@kernel.org> wrote: > On Fri, Sep 28, 2018 at 12:21 PM Andreas F?rber <afaerber@suse.de> wrote: > > Am 13.09.18 um 17:51 schrieb Geert Uytterhoeven: > > > On Wed, Sep 12, 2018 at 3:02 AM Masahiro Yamada > > > <yamada.masahiro@socionext.com> wrote: > > >> Even x86 can enable OF and OF_UNITTEST. > > >> > > >> Another solution might be, > > >> guard it by 'depends on ARCH_SUPPORTS_OF'. > > >> > > >> This is actually what ACPI does. > > >> > > >> menuconfig ACPI > > >> bool "ACPI (Advanced Configuration and Power Interface) Support" > > >> depends on ARCH_SUPPORTS_ACPI > > >> ... > > > > > > ACPI is a real platform feature, as it depends on firmware. > > > > > > CONFIG_OF can be enabled, and DT overlays can be loaded, on any platform, > > > even if it has ACPI ;-) > > > > How would loading a DT overlay work on an ACPI platform? I.e., what > > would it overlay against and how to practically load such a file? > > The DT unittests do just that. I run them on x86 and UM builds. In > this case, the loading source is built-in. > > > I wonder whether that could be helpful for USB devices and serdev... > > How to load the overlays is pretty orthogonal to the issues to be > solved here. It would certainly be possible to move forward with > prototyping this and just have the overlay built-in. It may not even > need to be an overlay if we can support multiple root nodes. You indeed need to refer to some anchors for most use cases, although a simple MMIO device could just be anchored to the root node. Topologies hanging off a USB device would be my first use case, too, for serdev, or for e.g. the mcp2210 USB-SPI bridge. 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-10-01 14:48 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-09-10 15:03 [PATCH v3 0/9] Devicetree build consolidation Rob Herring 2018-09-10 15:04 ` [PATCH v3 6/9] kbuild: consolidate Devicetree dtb build rules Rob Herring 2018-09-11 15:40 ` Rob Herring 2018-09-12 1:00 ` Masahiro Yamada 2018-09-13 15:51 ` Geert Uytterhoeven 2018-09-23 10:31 ` Masahiro Yamada 2018-09-28 15:41 ` Rob Herring 2018-10-01 5:49 ` Masahiro Yamada 2018-10-01 13:25 ` Rob Herring 2018-10-01 14:48 ` Masahiro Yamada 2018-09-28 17:21 ` Andreas Färber 2018-09-28 18:41 ` Rob Herring 2018-10-01 7:53 ` Geert Uytterhoeven
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).