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

Jiri Slaby
2023-03-17T11:32:13Z

On 17. 03. 23, 12:17, Vasily Gorbik 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.

Hi,

yes, I could not reproduce locally too. It likely needs a "slow" and
sort of specific machine to happen. This happened randomly only on SUSE
build systems. And only on the internal ones. There are no failures on
public ones:
https://build.opensuse.org/packages/kernel-default/job_history/Kernel:stable/S390/s390x

The kernel is built as:
make prepare # builds scripts/basic and other stuff we use
make clean # remove all but scripts and config
make all # scripts/basic/fixdep is rebuilt

fixdep is rebuilt due to clean-ed .fixdep.o.cmd -- that one is
regenerated and fixdep built anew.

The whole process (make log) is dumped at:
https://build.opensuse.org/package/live_build_log/Kernel:stable/kernel-default/S390/s390x

> 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?

It's from make after the build (fixdep invocation) failure. So that
stale files do not exist.

Note that fixdep likely exist, but it is a stub -- linking phase still runs.

> 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.

Likely.

thanks,
--
js