On Fri, Mar 17, 2023 at 8:17 PM Vasily Gorbik <gor@xxxxxxxxxxxxx> wrote: > > On Thu, Mar 16, 2023 at 12:14:27PM +0100, Jiri Slaby wrote: > > On 27. 06. 22, 14:50, Vasily Gorbik wrote: > > > With that, expoline.S doesn't require asm-offsets.h and > > > expoline_prepare target dependency could be removed. > > > > > > +++ b/arch/s390/Makefile > > > @@ -166,7 +166,7 @@ vdso_prepare: prepare0 > > > ifdef CONFIG_EXPOLINE_EXTERN > > > modules_prepare: expoline_prepare > > > -expoline_prepare: prepare0 > > > +expoline_prepare: > > > > this likely broke s390 build as expolines still depend on > > scripts/basic/fixdep. And build of expolines can now race with fixdep build: > > make[1]: *** Deleting file 'arch/s390/lib/expoline/expoline.o' > > /bin/sh: line 1: scripts/basic/fixdep: Permission denied > > make[1]: *** [../scripts/Makefile.build:385: > > arch/s390/lib/expoline/expoline.o] Error 126 > > make: *** [../arch/s390/Makefile:166: expoline_prepare] Error 2 > > > > I returned there: > > expoline_prepare: prepare0 > > and it looks good so far. Maybe even: > > expoline_prepare: scripts > > would be enough. > > Hi Jiri, thanks for looking into this! > > Probably even scripts_basic would be enough to add explicit dependency > to fixdep. But I just couldn't reproduce missing scripts/basic/fixdep > neither with modules_prepare nor expoline_prepare targets. > > With which specific build command were you able to get those error > messages? I wonder where > make[1]: *** Deleting file 'arch/s390/lib/expoline/expoline.o' > is coming from. Could it be smth like? > > make ARCH=s390 CROSS_COMPILE=s390x-12.2.0- -j64 arch/s390/lib/expoline/expoline.o > > Playing around with this build target I found it is broken: > > AS arch/s390/lib/expoline/expoline.o > AS arch/s390/lib/expoline/expoline.o > fixdep: error opening file: arch/s390/lib/expoline/.expoline.o.d: No such file or directory > make[3]: *** [scripts/Makefile.build:374: arch/s390/lib/expoline/expoline.o] Error 2 > make[3]: *** Deleting file 'arch/s390/lib/expoline/expoline.o' > make[2]: *** [scripts/Makefile.build:494: arch/s390/lib/expoline] Error 2 > make[1]: *** [scripts/Makefile.build:494: arch/s390/lib] Error 2 > make[1]: *** Waiting for unfinished jobs.... > make: *** [Makefile:2028: .] Error 2 > > Notice dup AS call, which is probably causing this: > make[3]: *** Deleting file 'arch/s390/lib/expoline/expoline.o' > > But that would be a different issue from the one you are trying to fix. Kbuild is able to build a single object that is built in a normal descending. Since you built arch/s390/lib/expoline/expoline.o from the special target 'expoline_prepare', two different threads simultaneously built arch/s390/lib/expoline/expoline.o (one from the normal descending, the other from 'expoline_prepare') That's why. -- Best Regards Masahiro Yamada