Hi, Is there a way to do this? $ make ARCH=powerpc randconfig # and force PPC32 and separately $ make ARCH=powerpc randconfig # and force PPC64 I suppose that I could do something like this (for PPC64): $ make ARCH=powerpc randconfig $ ./scripts/config -d PPC32 -e PPC64 $ make ARCH=powerpc olddefconfig $ make ARCH=powerpc all but that's awkward and sort of defeats the randomness -- i.e., the randomness is done before the ARCH=PPC{32,64} is forced, and then some of the config items won't be valid during the 'make olddefconfig'. If the answer is No, then I will try to make a patch (at least for local use) that does something like x86 does for i386 | x86_64, or sparc does for sparc32 | sparc64. [time passes] OK, I have a patch that seems for work as far as setting PPC32=y or PPC64=y... but it has a problem during linking of vmlinux: crosstool/gcc-9.3.0-nolibc/powerpc-linux/bin/powerpc-linux-ld:./arch/powerpc/kernel/vmlinux.lds:6: syntax error and the (bad) generated vmlinux.lds file says (at line 6): OUTPUT_ARCH(1:common) while it should say: OUTPUT_ARCH(powerpc:common) Does anyone have any ideas about this problem? The ARCH=ppc32 / ARCH=ppc64 patch is below FYI. It is missing an update to Documentation/kbuild/kbuild.rst (aliases). thanks. -- --- Makefile | 8 ++++++++ arch/powerpc/Makefile | 14 +++++++------- arch/powerpc/kernel/vdso64/Makefile | 2 +- arch/powerpc/platforms/Kconfig.cputype | 5 +++-- 4 files changed, 19 insertions(+), 10 deletions(-) --- linux-next-20210420.orig/Makefile +++ linux-next-20210420/Makefile @@ -411,6 +411,14 @@ ifeq ($(ARCH),sh64) SRCARCH := sh endif +# Additional ARCH settings for powerpc +ifeq ($(ARCH),ppc32) + SRCARCH := powerpc +endif +ifeq ($(ARCH),ppc64) + SRCARCH := powerpc +endif + export cross_compiling := ifneq ($(SRCARCH),$(SUBARCH)) cross_compiling := 1 --- linux-next-20210420.orig/arch/powerpc/platforms/Kconfig.cputype +++ linux-next-20210420/arch/powerpc/platforms/Kconfig.cputype @@ -1,11 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 config PPC32 bool - default y if !PPC64 + default y if !PPC64 || "$(ARCH)" = "ppc32" select KASAN_VMALLOC if KASAN && MODULES config PPC64 - bool "64-bit kernel" + bool "64-bit kernel" if "$(ARCH)" = "powerpc" + default y if "$(ARCH)" = "ppc64" select ZLIB_DEFLATE help This option selects whether a 32-bit or a 64-bit kernel --- linux-next-20210420.orig/arch/powerpc/kernel/vdso64/Makefile +++ linux-next-20210420/arch/powerpc/kernel/vdso64/Makefile @@ -30,7 +30,7 @@ ccflags-y := -shared -fno-common -fno-bu asflags-y := -D__VDSO64__ -s targets += vdso64.lds -CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) +CPPFLAGS_vdso64.lds += -P -C -U$(SRCARCH) # link rule for the .so file, .lds has to be first $(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday.o FORCE --- linux-next-20210420.orig/arch/powerpc/Makefile +++ linux-next-20210420/arch/powerpc/Makefile @@ -204,7 +204,7 @@ endif asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1) -KBUILD_CPPFLAGS += -I $(srctree)/arch/$(ARCH) $(asinstr) +KBUILD_CPPFLAGS += -I $(srctree)/arch/$(SRCARCH) $(asinstr) KBUILD_AFLAGS += $(AFLAGS-y) KBUILD_CFLAGS += $(call cc-option,-msoft-float) KBUILD_CFLAGS += -pipe $(CFLAGS-y) @@ -279,7 +279,7 @@ BOOT_TARGETS2 := zImage% dtbImage% treeI PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2) -boot := arch/$(ARCH)/boot +boot := arch/$(SRCARCH)/boot $(BOOT_TARGETS1): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@) @@ -297,8 +297,8 @@ bootwrapper_install: # without the .config suffix. define merge_into_defconfig $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ - -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/$(1) \ - $(foreach config,$(2),$(srctree)/arch/$(ARCH)/configs/$(config).config) + -m -O $(objtree) $(srctree)/arch/$(SRCARCH)/configs/$(1) \ + $(foreach config,$(2),$(srctree)/arch/$(SRCARCH)/configs/$(config).config) +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig endef @@ -378,7 +378,7 @@ ppc64_book3e_allmodconfig: define archhelp @echo '* zImage - Build default images selected by kernel config' - @echo ' zImage.* - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)' + @echo ' zImage.* - Compressed kernel image (arch/$(SRCARCH)/boot/zImage.*)' @echo ' uImage - U-Boot native image format' @echo ' cuImage.<dt> - Backwards compatible U-Boot image for older' @echo ' versions which do not support device trees' @@ -389,12 +389,12 @@ define archhelp @echo ' (your) ~/bin/$(INSTALLKERNEL) or' @echo ' (distribution) /sbin/$(INSTALLKERNEL) or' @echo ' install to $$(INSTALL_PATH) and run lilo' - @echo ' *_defconfig - Select default config from arch/$(ARCH)/configs' + @echo ' *_defconfig - Select default config from arch/$(SRCARCH)/configs' @echo '' @echo ' Targets with <dt> embed a device tree blob inside the image' @echo ' These targets support board with firmware that does not' @echo ' support passing a device tree directly. Replace <dt> with the' - @echo ' name of a dts file from the arch/$(ARCH)/boot/dts/ directory' + @echo ' name of a dts file from the arch/$(SRCARCH)/boot/dts/ directory' @echo ' (minus the .dts extension).' endef