[PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts

Jan Stancek posted 1 patch 4 months, 2 weeks ago
arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
2 files changed, 2 deletions(-)
[PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Jan Stancek 4 months, 2 weeks ago
We've been observing rare non-deterministic kconfig failures during
olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
disabled and with it number of other config options that depend on it.

The reason is that gcc-check-fpatchable-function-entry.sh can fail
if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
there is still someone writing on other side of pipe. `pipefail`
propagates that error up to kconfig.

This can be seen for example with:
  # (set -e; set -o pipefail; yes | grep -q y); echo $?
  141

or by running the actual check script in loop extensively:
  ----------------------------- 8< -------------------------------
  function kconfig()
  {
    for i in `seq 1 100`; do
      arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
        ./scripts/dummy-tools/gcc -mlittle-endian \
        || { echo "Oops"; exit 1; }
    done
  }

  for ((i=0; i<$(nproc); i++)); do kconfig & done
  wait; echo "Done"
  ----------------------------- >8 -------------------------------

Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
 arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
 arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
 2 files changed, 2 deletions(-)

diff --git a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
index 06706903503b..baed467a016b 100755
--- a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
+++ b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
@@ -2,7 +2,6 @@
 # SPDX-License-Identifier: GPL-2.0
 
 set -e
-set -o pipefail
 
 # To debug, uncomment the following line
 # set -x
diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
index 73e331e7660e..6193b0ed0c77 100755
--- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
+++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
@@ -2,7 +2,6 @@
 # SPDX-License-Identifier: GPL-2.0
 
 set -e
-set -o pipefail
 
 # To debug, uncomment the following line
 # set -x
-- 
2.47.1
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Madhavan Srinivasan 1 month, 1 week ago
On Tue, 23 Sep 2025 17:32:16 +0200, Jan Stancek wrote:
> 


Applied to powerpc/fixes.

[1/1] powerpc/tools: drop `-o pipefail` in gcc check scripts
      https://git.kernel.org/powerpc/c/f1164534ad62f0cc247d99650b07bd59ad2a49fd

cheers
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Naveen N Rao 2 months, 1 week ago
On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
> We've been observing rare non-deterministic kconfig failures during
> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> disabled and with it number of other config options that depend on it.
> 
> The reason is that gcc-check-fpatchable-function-entry.sh can fail
> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> there is still someone writing on other side of pipe. `pipefail`
> propagates that error up to kconfig.
> 
> This can be seen for example with:
>   # (set -e; set -o pipefail; yes | grep -q y); echo $?
>   141
> 
> or by running the actual check script in loop extensively:
>   ----------------------------- 8< -------------------------------
>   function kconfig()
>   {
>     for i in `seq 1 100`; do
>       arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
>         ./scripts/dummy-tools/gcc -mlittle-endian \
>         || { echo "Oops"; exit 1; }
>     done
>   }
> 
>   for ((i=0; i<$(nproc); i++)); do kconfig & done
>   wait; echo "Done"
>   ----------------------------- >8 -------------------------------
> 
> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")

The latter fixes tag should probably tag one of the below commits which 
actually introduced pipefail, or introduced it in Kconfig:
Fixes: 8c50b72a3b4f ("powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel")
  or:
Fixes: abba759796f9 ("powerpc/kbuild: move -mprofile-kernel check to Kconfig")

> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
>  arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
>  arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
>  2 files changed, 2 deletions(-)

Other than that, thanks for fixing this. This LGTM.
Reviewed-by: Naveen N Rao (AMD) <naveen@kernel.org>

Maddy/Michael,
Can you please pick this up?


Thanks,
Naveen
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Madhavan Srinivasan 2 months ago
On 12/3/25 9:29 AM, Naveen N Rao wrote:
> On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
>> We've been observing rare non-deterministic kconfig failures during
>> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
>> disabled and with it number of other config options that depend on it.
>>
>> The reason is that gcc-check-fpatchable-function-entry.sh can fail
>> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
>> there is still someone writing on other side of pipe. `pipefail`
>> propagates that error up to kconfig.
>>
>> This can be seen for example with:
>>    # (set -e; set -o pipefail; yes | grep -q y); echo $?
>>    141
>>
>> or by running the actual check script in loop extensively:
>>    ----------------------------- 8< -------------------------------
>>    function kconfig()
>>    {
>>      for i in `seq 1 100`; do
>>        arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
>>          ./scripts/dummy-tools/gcc -mlittle-endian \
>>          || { echo "Oops"; exit 1; }
>>      done
>>    }
>>
>>    for ((i=0; i<$(nproc); i++)); do kconfig & done
>>    wait; echo "Done"
>>    ----------------------------- >8 -------------------------------
>>
>> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
>> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
> The latter fixes tag should probably tag one of the below commits which
> actually introduced pipefail, or introduced it in Kconfig:
> Fixes: 8c50b72a3b4f ("powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel")
>    or:
> Fixes: abba759796f9 ("powerpc/kbuild: move -mprofile-kernel check to Kconfig")
>
>> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
>> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>> ---
>>   arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
>>   arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
>>   2 files changed, 2 deletions(-)
> Other than that, thanks for fixing this. This LGTM.
> Reviewed-by: Naveen N Rao (AMD) <naveen@kernel.org>
>
> Maddy/Michael,
> Can you please pick this up?
Thanks naveen. Will put it in one of the -rc

Maddy
>
>
> Thanks,
> Naveen
>
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Josh Poimboeuf 2 months, 3 weeks ago
On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
> We've been observing rare non-deterministic kconfig failures during
> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> disabled and with it number of other config options that depend on it.
> 
> The reason is that gcc-check-fpatchable-function-entry.sh can fail
> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> there is still someone writing on other side of pipe. `pipefail`
> propagates that error up to kconfig.

Ping?  This fixes a nasty build bug, any objections to merging?

-- 
Josh
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Josh Poimboeuf 2 months, 2 weeks ago
On Wed, Nov 12, 2025 at 02:56:05PM -0800, Josh Poimboeuf wrote:
> On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
> > We've been observing rare non-deterministic kconfig failures during
> > olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> > disabled and with it number of other config options that depend on it.
> > 
> > The reason is that gcc-check-fpatchable-function-entry.sh can fail
> > if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> > there is still someone writing on other side of pipe. `pipefail`
> > propagates that error up to kconfig.
> 
> Ping?  This fixes a nasty build bug, any objections to merging?

Ping?

-- 
Josh
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Josh Poimboeuf 2 months, 1 week ago
On Thu, Nov 20, 2025 at 12:15:58PM -0800, Josh Poimboeuf wrote:
> On Wed, Nov 12, 2025 at 02:56:05PM -0800, Josh Poimboeuf wrote:
> > On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
> > > We've been observing rare non-deterministic kconfig failures during
> > > olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> > > disabled and with it number of other config options that depend on it.
> > > 
> > > The reason is that gcc-check-fpatchable-function-entry.sh can fail
> > > if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> > > there is still someone writing on other side of pipe. `pipefail`
> > > propagates that error up to kconfig.
> > 
> > Ping?  This fixes a nasty build bug, any objections to merging?
> 
> Ping?

Madhavan, Michael,

Ping?

-- 
Josh
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Josh Poimboeuf 3 months, 1 week ago
On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
> We've been observing rare non-deterministic kconfig failures during
> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> disabled and with it number of other config options that depend on it.
> 
> The reason is that gcc-check-fpatchable-function-entry.sh can fail
> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> there is still someone writing on other side of pipe. `pipefail`
> propagates that error up to kconfig.
> 
> This can be seen for example with:
>   # (set -e; set -o pipefail; yes | grep -q y); echo $?
>   141
> 
> or by running the actual check script in loop extensively:
>   ----------------------------- 8< -------------------------------
>   function kconfig()
>   {
>     for i in `seq 1 100`; do
>       arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
>         ./scripts/dummy-tools/gcc -mlittle-endian \
>         || { echo "Oops"; exit 1; }
>     done
>   }
> 
>   for ((i=0; i<$(nproc); i++)); do kconfig & done
>   wait; echo "Done"
>   ----------------------------- >8 -------------------------------
> 
> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>

Ooh, that is nasty...

The fix looks obviously correct: pipefail isn't needed in these cases
anyway since an earlier pipe failure (e.g., compile error) would result
in EOF getting piped to grep, causing it to returning an error
regardless.

Reviewed-by: Josh Poimboeuf <jpoimboe@kernel.org>

-- 
Josh
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Justin Forbes 4 months ago
On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek <jstancek@redhat.com> wrote:
>
> We've been observing rare non-deterministic kconfig failures during
> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> disabled and with it number of other config options that depend on it.
>
> The reason is that gcc-check-fpatchable-function-entry.sh can fail
> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> there is still someone writing on other side of pipe. `pipefail`
> propagates that error up to kconfig.
>
> This can be seen for example with:
>   # (set -e; set -o pipefail; yes | grep -q y); echo $?
>   141
>
> or by running the actual check script in loop extensively:
>   ----------------------------- 8< -------------------------------
>   function kconfig()
>   {
>     for i in `seq 1 100`; do
>       arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
>         ./scripts/dummy-tools/gcc -mlittle-endian \
>         || { echo "Oops"; exit 1; }
>     done
>   }
>
>   for ((i=0; i<$(nproc); i++)); do kconfig & done
>   wait; echo "Done"
>   ----------------------------- >8 -------------------------------
>
> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
>  arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
>  arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
>  2 files changed, 2 deletions(-)
>
> diff --git a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> index 06706903503b..baed467a016b 100755
> --- a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> +++ b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> @@ -2,7 +2,6 @@
>  # SPDX-License-Identifier: GPL-2.0
>
>  set -e
> -set -o pipefail
>
>  # To debug, uncomment the following line
>  # set -x
> diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> index 73e331e7660e..6193b0ed0c77 100755
> --- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> +++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> @@ -2,7 +2,6 @@
>  # SPDX-License-Identifier: GPL-2.0
>
>  set -e
> -set -o pipefail
>
>  # To debug, uncomment the following line
>  # set -x
> --
> 2.47.1

Would love to see this picked up, it fixes a problem we have run into
with our CI.

Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Jan Stancek 3 months, 1 week ago
On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes <jforbes@fedoraproject.org> wrote:
>
> On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek <jstancek@redhat.com> wrote:
> >
> > We've been observing rare non-deterministic kconfig failures during
> > olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> > disabled and with it number of other config options that depend on it.
> >
> > The reason is that gcc-check-fpatchable-function-entry.sh can fail
> > if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> > there is still someone writing on other side of pipe. `pipefail`
> > propagates that error up to kconfig.
> >
> > This can be seen for example with:
> >   # (set -e; set -o pipefail; yes | grep -q y); echo $?
> >   141
> >
> > or by running the actual check script in loop extensively:
> >   ----------------------------- 8< -------------------------------
> >   function kconfig()
> >   {
> >     for i in `seq 1 100`; do
> >       arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
> >         ./scripts/dummy-tools/gcc -mlittle-endian \
> >         || { echo "Oops"; exit 1; }
> >     done
> >   }
> >
> >   for ((i=0; i<$(nproc); i++)); do kconfig & done
> >   wait; echo "Done"
> >   ----------------------------- >8 -------------------------------
> >
> > Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
> > Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
> > Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
> > Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
> > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > ---
> >  arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
> >  arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
> >  2 files changed, 2 deletions(-)
> >
> > diff --git a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> > index 06706903503b..baed467a016b 100755
> > --- a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> > +++ b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> > @@ -2,7 +2,6 @@
> >  # SPDX-License-Identifier: GPL-2.0
> >
> >  set -e
> > -set -o pipefail
> >
> >  # To debug, uncomment the following line
> >  # set -x
> > diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> > index 73e331e7660e..6193b0ed0c77 100755
> > --- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> > +++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> > @@ -2,7 +2,6 @@
> >  # SPDX-License-Identifier: GPL-2.0
> >
> >  set -e
> > -set -o pipefail
> >
> >  # To debug, uncomment the following line
> >  # set -x
> > --
> > 2.47.1
>
> Would love to see this picked up, it fixes a problem we have run into
> with our CI.
>
> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>

Thanks Justin.

Would any maintainers also care to review? Ty.
Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Christophe Leroy 2 months, 4 weeks ago

Le 30/10/2025 à 19:09, Jan Stancek a écrit :
> On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes <jforbes@fedoraproject.org> wrote:
>>
>> On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek <jstancek@redhat.com> wrote:
>>>
>>> We've been observing rare non-deterministic kconfig failures during
>>> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
>>> disabled and with it number of other config options that depend on it.
>>>
>>> The reason is that gcc-check-fpatchable-function-entry.sh can fail
>>> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
>>> there is still someone writing on other side of pipe. `pipefail`
>>> propagates that error up to kconfig.
>>>
>>> This can be seen for example with:
>>>    # (set -e; set -o pipefail; yes | grep -q y); echo $?
>>>    141
>>>
>>> or by running the actual check script in loop extensively:
>>>    ----------------------------- 8< -------------------------------
>>>    function kconfig()
>>>    {
>>>      for i in `seq 1 100`; do
>>>        arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
>>>          ./scripts/dummy-tools/gcc -mlittle-endian \
>>>          || { echo "Oops"; exit 1; }
>>>      done
>>>    }
>>>
>>>    for ((i=0; i<$(nproc); i++)); do kconfig & done
>>>    wait; echo "Done"
>>>    ----------------------------- >8 -------------------------------
>>>
>>> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
>>> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
>>> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
>>> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
>>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>>> ---
>>>   arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
>>>   arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
>>>   2 files changed, 2 deletions(-)
>>>
>>> diff --git a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
>>> index 06706903503b..baed467a016b 100755
>>> --- a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
>>> +++ b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
>>> @@ -2,7 +2,6 @@
>>>   # SPDX-License-Identifier: GPL-2.0
>>>
>>>   set -e
>>> -set -o pipefail
>>>
>>>   # To debug, uncomment the following line
>>>   # set -x
>>> diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
>>> index 73e331e7660e..6193b0ed0c77 100755
>>> --- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
>>> +++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
>>> @@ -2,7 +2,6 @@
>>>   # SPDX-License-Identifier: GPL-2.0
>>>
>>>   set -e
>>> -set -o pipefail
>>>
>>>   # To debug, uncomment the following line
>>>   # set -x
>>> --
>>> 2.47.1
>>
>> Would love to see this picked up, it fixes a problem we have run into
>> with our CI.
>>
>> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
> 
> Thanks Justin.
> 
> Would any maintainers also care to review? Ty.
> 

Is the problem only with those scripts ? I see other scripts using 
pipefail in the kernel:

arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh:set -o pipefail
arch/powerpc/tools/gcc-check-mprofile-kernel.sh:set -o pipefail
drivers/gpu/drm/ci/dt-binding-check.sh:set -euxo pipefail
drivers/gpu/drm/ci/dtbs-check.sh:set -euxo pipefail
drivers/gpu/drm/ci/kunit.sh:set -euxo pipefail
drivers/gpu/drm/ci/setup-llvm-links.sh:set -euo pipefail
scripts/check-uapi.sh:set -o pipefail

Christophe

Re: [PATCH RESEND] powerpc/tools: drop `-o pipefail` in gcc check scripts
Posted by Jan Stancek 2 months, 4 weeks ago
On Mon, Nov 10, 2025 at 12:33 PM Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
>
>
> Le 30/10/2025 à 19:09, Jan Stancek a écrit :
> > On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes <jforbes@fedoraproject.org> wrote:
> >>
> >> On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek <jstancek@redhat.com> wrote:
> >>>
> >>> We've been observing rare non-deterministic kconfig failures during
> >>> olddefconfig, where ARCH_USING_PATCHABLE_FUNCTION_ENTRY was getting
> >>> disabled and with it number of other config options that depend on it.
> >>>
> >>> The reason is that gcc-check-fpatchable-function-entry.sh can fail
> >>> if `grep -q` (or scripts/dummy-tools/gcc) is fast enough to exit while
> >>> there is still someone writing on other side of pipe. `pipefail`
> >>> propagates that error up to kconfig.
> >>>
> >>> This can be seen for example with:
> >>>    # (set -e; set -o pipefail; yes | grep -q y); echo $?
> >>>    141
> >>>
> >>> or by running the actual check script in loop extensively:
> >>>    ----------------------------- 8< -------------------------------
> >>>    function kconfig()
> >>>    {
> >>>      for i in `seq 1 100`; do
> >>>        arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh \
> >>>          ./scripts/dummy-tools/gcc -mlittle-endian \
> >>>          || { echo "Oops"; exit 1; }
> >>>      done
> >>>    }
> >>>
> >>>    for ((i=0; i<$(nproc); i++)); do kconfig & done
> >>>    wait; echo "Done"
> >>>    ----------------------------- >8 -------------------------------
> >>>
> >>> Fixes: 0f71dcfb4aef ("powerpc/ftrace: Add support for -fpatchable-function-entry")
> >>> Fixes: b71c9ffb1405 ("powerpc: Add arch/powerpc/tools directory")
> >>> Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
> >>> Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
> >>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> >>> ---
> >>>   arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh | 1 -
> >>>   arch/powerpc/tools/gcc-check-mprofile-kernel.sh           | 1 -
> >>>   2 files changed, 2 deletions(-)
> >>>
> >>> diff --git a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> >>> index 06706903503b..baed467a016b 100755
> >>> --- a/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> >>> +++ b/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh
> >>> @@ -2,7 +2,6 @@
> >>>   # SPDX-License-Identifier: GPL-2.0
> >>>
> >>>   set -e
> >>> -set -o pipefail
> >>>
> >>>   # To debug, uncomment the following line
> >>>   # set -x
> >>> diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> >>> index 73e331e7660e..6193b0ed0c77 100755
> >>> --- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> >>> +++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> >>> @@ -2,7 +2,6 @@
> >>>   # SPDX-License-Identifier: GPL-2.0
> >>>
> >>>   set -e
> >>> -set -o pipefail
> >>>
> >>>   # To debug, uncomment the following line
> >>>   # set -x
> >>> --
> >>> 2.47.1
> >>
> >> Would love to see this picked up, it fixes a problem we have run into
> >> with our CI.
> >>
> >> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
> >
> > Thanks Justin.
> >
> > Would any maintainers also care to review? Ty.
> >
>
> Is the problem only with those scripts ? I see other scripts using
> pipefail in the kernel:

As far as kconfig goes, we've observed this issue only with the two
gcc-check scripts.


>
> arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh:set -o pipefail
> arch/powerpc/tools/gcc-check-mprofile-kernel.sh:set -o pipefail
> drivers/gpu/drm/ci/dt-binding-check.sh:set -euxo pipefail
> drivers/gpu/drm/ci/dtbs-check.sh:set -euxo pipefail
> drivers/gpu/drm/ci/kunit.sh:set -euxo pipefail
> drivers/gpu/drm/ci/setup-llvm-links.sh:set -euo pipefail
> scripts/check-uapi.sh:set -o pipefail
>
> Christophe
>