Re: [PATCH] powerpc/boot: Copy serial.c in Makefile
Hi mpe, >> Further analysis suggests that making with -j1 triggers the issue, but >> everything works with -j2 and above. That would make sense with the >> timeline of when I discovered the issue because I changed my build >> script to not build in parallel. > > I don't get why -j makes a difference, but that does explain why we > haven't seen it, none of my tests use -j 1 :) I don't understand either - only that with -j1 V=1 I get powerpc64le-linux-gnu-gcc ... -c -o arch/powerpc/boot/serial.o arch/powerpc/boot/serial.c and with -j2 I get: powerpc64le-linux-gnu-gcc ... -c -o arch/powerpc/boot/serial.o /home/dja/dev/linux/linux/arch/powerpc/boot/serial.c So for some reason j2 is getting the absolute path and j1 is getting a relative path. I have absolutely no idea why this would be. > I don't think we actually want to copy serial.c, we just want to specify > a dependency, does this work for you? Yeah I think you're right, I misunderstood the boot wrapper. That patch works for me - it causes the full path to be used. Thanks heaps! Regards, Daniel > cheers > > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > index 39354365f54a..ed9883169190 100644 > --- a/arch/powerpc/boot/Makefile > +++ b/arch/powerpc/boot/Makefile > @@ -197,7 +197,7 @@ $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: > $(srctree)/scripts/dtc > $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: > $(srctree)/$(src)/%.S > $(Q)cp $< $@ > > -$(obj)/serial.c: $(obj)/autoconf.h > +$(srctree)/$(src)/serial.c: $(obj)/autoconf.h > > $(obj)/autoconf.h: $(obj)/%: $(objtree)/include/generated/% > $(Q)cp $< $@
Re: [PATCH] powerpc/boot: Copy serial.c in Makefile
Hi dja, Daniel Axtens writes: > Right, so as both 0-day and snowpatch tell me, this patch is wrong. > > It turns out that this: >> $(obj)/serial.c: $(obj)/autoconf.h >> +$(Q)cp $< $@ > is identical to: > cp arch/powerpc/boot/autoconf.h arch/powerpc/boot/serial.c > > (Clearly my make mastery is inadequate.) > > Amusingly this which works for my 64e uImage but obviously not for > anything that actually needs code from serial.c. > > Further analysis suggests that making with -j1 triggers the issue, but > everything works with -j2 and above. That would make sense with the > timeline of when I discovered the issue because I changed my build > script to not build in parallel. I don't get why -j makes a difference, but that does explain why we haven't seen it, none of my tests use -j 1 :) I don't think we actually want to copy serial.c, we just want to specify a dependency, does this work for you? cheers diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 39354365f54a..ed9883169190 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -197,7 +197,7 @@ $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S $(Q)cp $< $@ -$(obj)/serial.c: $(obj)/autoconf.h +$(srctree)/$(src)/serial.c: $(obj)/autoconf.h $(obj)/autoconf.h: $(obj)/%: $(objtree)/include/generated/% $(Q)cp $< $@
Re: [PATCH] powerpc/boot: Copy serial.c in Makefile
Right, so as both 0-day and snowpatch tell me, this patch is wrong. It turns out that this: > $(obj)/serial.c: $(obj)/autoconf.h > + $(Q)cp $< $@ is identical to: cp arch/powerpc/boot/autoconf.h arch/powerpc/boot/serial.c (Clearly my make mastery is inadequate.) Amusingly this which works for my 64e uImage but obviously not for anything that actually needs code from serial.c. Further analysis suggests that making with -j1 triggers the issue, but everything works with -j2 and above. That would make sense with the timeline of when I discovered the issue because I changed my build script to not build in parallel. Regards, Daniel
Re: [PATCH] powerpc/boot: Copy serial.c in Makefile
Hi Daniel, Thank you for the patch! Yet something to improve: [auto build test ERROR on powerpc/next] [also build test ERROR on v4.20-rc4 next-20181128] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Daniel-Axtens/powerpc-boot-Copy-serial-c-in-Makefile/20181129-025021 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-defconfig (attached as .config) compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=powerpc All errors (new ones prefixed by >>): arch/powerpc/boot/epapr.o: In function `epapr_platform_init': >> epapr.c:(.text+0x184): undefined reference to `serial_console_init' --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
[PATCH] powerpc/boot: Copy serial.c in Makefile
A couple of weeks ago, I found my powerpc64e builds were broken when building out-of-tree with make O=../destination: BOOTCC arch/powerpc/boot/serial.o powerpc64-linux-gnu-gcc: error: arch/powerpc/boot/serial.c: No such file or directory powerpc64-linux-gnu-gcc: fatal error: no input files This is because 5e9dcb6188a4 ("powerpc/boot: Expose Kconfig symbols to wrapper") adds a more specific rule for serial.c which doesn't include a copy command. Add it. Cc: Joel Stanley Fixes: 5e9dcb6188a4 ("powerpc/boot: Expose Kconfig symbols to wrapper") Signed-off-by: Daniel Axtens --- arch/powerpc/boot/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 111f97b1ccec..3d5b24b02228 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -203,6 +203,7 @@ $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S $(Q)cp $< $@ $(obj)/serial.c: $(obj)/autoconf.h + $(Q)cp $< $@ $(obj)/autoconf.h: $(obj)/%: $(objtree)/include/generated/% $(Q)cp $< $@ -- 2.17.1