Re: [PATCH 2/2] s390/nospec: remove unneeded header includes

Masahiro Yamada
2023-03-17T23:38:22Z

On Fri, Mar 17, 2023 at 8:17 PM Vasily Gorbik <gor@linux.ibm.com> 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