Message ID | 45afab41-cc5f-dffa-712a-d5fb1a9d0a23@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | powerpc{32,64} randconfigs | expand |
Hi Le 21/04/2021 à 01:31, Randy Dunlap a écrit : > [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 following change fixes the problem, allthough I guess that's not what you want to do at the end. diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 1b6094a13034..00f72699c518 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -358,7 +358,7 @@ targets += $(lib-y) $(always-y) $(MAKECMDGOALS) # Linker scripts preprocessor (.lds.S -> .lds) # --------------------------------------------------------------------------- quiet_cmd_cpp_lds_S = LDS $@ - cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -U$(ARCH) \ + cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -U$(SRCARCH) \ -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< $(obj)/%.lds: $(src)/%.lds.S FORCE > > The ARCH=ppc32 / ARCH=ppc64 patch is below FYI. > It is missing an update to Documentation/kbuild/kbuild.rst (aliases). > > > thanks. >
Le 21/04/2021 à 01:31, Randy Dunlap a écrit : > --- 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" I don't think you need that change. If the ARCH is neither 'powerpc' not 'ppc64' CONFIG_PPC64 isn't set so CONFIG_PPC32 is set. > 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
Le 21/04/2021 à 01:31, Randy Dunlap a écrit : > --- 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) Maybe it would be better to do -Upowerpc like in VDSO32 > > # 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
On 4/20/21 11:37 PM, Christophe Leroy wrote: > > > Le 21/04/2021 à 01:31, Randy Dunlap a écrit : >> --- 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) > > Maybe it would be better to do -Upowerpc like in VDSO32 > OK, thanks for getting that done. :) >> # 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
Randy Dunlap <rdunlap@infradead.org> writes: > Hi, > > Is there a way to do this? > > $ make ARCH=powerpc randconfig # and force PPC32 Sort of: $ KCONFIG_ALLCONFIG=arch/powerpc/configs/book3s_32.config make randconfig But that also forces BOOK3S. > and separately > $ make ARCH=powerpc randconfig # and force PPC64 No. ... > 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? I guess your patch broke something? :D Not sure sorry. What about something like this? cheers diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 3212d076ac6a..712c5e8768ce 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -376,6 +376,16 @@ PHONY += ppc64_book3e_allmodconfig $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-64bit.config \ -f $(srctree)/Makefile allmodconfig +PHONY += ppc32_randconfig +ppc32_randconfig: + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/32-bit.config \ + -f $(srctree)/Makefile randconfig + +PHONY += ppc64_randconfig +ppc64_randconfig: + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/64-bit.config \ + -f $(srctree)/Makefile randconfig + define archhelp @echo '* zImage - Build default images selected by kernel config' @echo ' zImage.* - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)' diff --git a/arch/powerpc/configs/32-bit.config b/arch/powerpc/configs/32-bit.config new file mode 100644 index 000000000000..bdf833009006 --- /dev/null +++ b/arch/powerpc/configs/32-bit.config @@ -0,0 +1 @@ +CONFIG_PPC64=n diff --git a/arch/powerpc/configs/64-bit.config b/arch/powerpc/configs/64-bit.config new file mode 100644 index 000000000000..0fe6406929e2 --- /dev/null +++ b/arch/powerpc/configs/64-bit.config @@ -0,0 +1 @@ +CONFIG_PPC64=y
On Wed, Apr 21, 2021 at 4:15 PM Michael Ellerman <mpe@ellerman.id.au> wrote: > > Randy Dunlap <rdunlap@infradead.org> writes: > > Hi, > > > > Is there a way to do this? > > > > $ make ARCH=powerpc randconfig # and force PPC32 > > Sort of: > > $ KCONFIG_ALLCONFIG=arch/powerpc/configs/book3s_32.config make randconfig > > But that also forces BOOK3S. > > > and separately > > $ make ARCH=powerpc randconfig # and force PPC64 > > No. > > ... > > 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? > > I guess your patch broke something? :D > Not sure sorry. > > What about something like this? > > cheers > > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index 3212d076ac6a..712c5e8768ce 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -376,6 +376,16 @@ PHONY += ppc64_book3e_allmodconfig > $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-64bit.config \ > -f $(srctree)/Makefile allmodconfig > > +PHONY += ppc32_randconfig > +ppc32_randconfig: > + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/32-bit.config \ > + -f $(srctree)/Makefile randconfig > + > +PHONY += ppc64_randconfig > +ppc64_randconfig: > + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/64-bit.config \ > + -f $(srctree)/Makefile randconfig > + > define archhelp > @echo '* zImage - Build default images selected by kernel config' > @echo ' zImage.* - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)' > diff --git a/arch/powerpc/configs/32-bit.config b/arch/powerpc/configs/32-bit.config > new file mode 100644 > index 000000000000..bdf833009006 > --- /dev/null > +++ b/arch/powerpc/configs/32-bit.config > @@ -0,0 +1 @@ > +CONFIG_PPC64=n Please do: # CONFIG_PPC64 is not set > diff --git a/arch/powerpc/configs/64-bit.config b/arch/powerpc/configs/64-bit.config > new file mode 100644 > index 000000000000..0fe6406929e2 > --- /dev/null > +++ b/arch/powerpc/configs/64-bit.config > @@ -0,0 +1 @@ > +CONFIG_PPC64=y >
On 4/21/21 12:15 AM, Michael Ellerman wrote: > Randy Dunlap <rdunlap@infradead.org> writes: >> Hi, >> >> Is there a way to do this? >> >> $ make ARCH=powerpc randconfig # and force PPC32 > > Sort of: > > $ KCONFIG_ALLCONFIG=arch/powerpc/configs/book3s_32.config make randconfig > > But that also forces BOOK3S. > >> and separately >> $ make ARCH=powerpc randconfig # and force PPC64 > > No. > > ... >> 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? > > I guess your patch broke something? :D > Not sure sorry. > > What about something like this? > > cheers > > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index 3212d076ac6a..712c5e8768ce 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -376,6 +376,16 @@ PHONY += ppc64_book3e_allmodconfig > $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-64bit.config \ > -f $(srctree)/Makefile allmodconfig > > +PHONY += ppc32_randconfig > +ppc32_randconfig: > + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/32-bit.config \ > + -f $(srctree)/Makefile randconfig > + > +PHONY += ppc64_randconfig > +ppc64_randconfig: > + $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/64-bit.config \ > + -f $(srctree)/Makefile randconfig > + > define archhelp > @echo '* zImage - Build default images selected by kernel config' > @echo ' zImage.* - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)' > diff --git a/arch/powerpc/configs/32-bit.config b/arch/powerpc/configs/32-bit.config > new file mode 100644 > index 000000000000..bdf833009006 > --- /dev/null > +++ b/arch/powerpc/configs/32-bit.config > @@ -0,0 +1 @@ > +CONFIG_PPC64=n I used the suggested change here (above). > diff --git a/arch/powerpc/configs/64-bit.config b/arch/powerpc/configs/64-bit.config > new file mode 100644 > index 000000000000..0fe6406929e2 > --- /dev/null > +++ b/arch/powerpc/configs/64-bit.config > @@ -0,0 +1 @@ > +CONFIG_PPC64=y > Reviewed-by: Randy Dunlap <rdunlap@infradead.org> Tested-by: Randy Dunlap <rdunlap@infradead.org> Please merge this. :) thanks.
On 4/20/21 11:45 PM, Randy Dunlap wrote: > On 4/20/21 11:37 PM, Christophe Leroy wrote: >> >> >> Le 21/04/2021 à 01:31, Randy Dunlap a écrit : >>> --- 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) >> >> Maybe it would be better to do -Upowerpc like in VDSO32 >> > > OK, thanks for getting that done. :) > >>> # 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 Just to wrap this up, I got this method working also. Thanks for all of your help, Christophe.
Le 28/04/2021 à 01:45, Randy Dunlap a écrit : > On 4/21/21 12:15 AM, Michael Ellerman wrote: >> Randy Dunlap <rdunlap@infradead.org> writes: > > Reviewed-by: Randy Dunlap <rdunlap@infradead.org> > Tested-by: Randy Dunlap <rdunlap@infradead.org> > > > Please merge this. :) > Merged as f259fb893c69 ("powerpc/Makefile: Add ppc32/ppc64_randconfig targets")
--- 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