From: Jan Stancek <jstancek@redhat.com> Date: 2025-09-23 15:30:55
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(-)
On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek [off-list ref] wrote:
quoted hunk
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(-)
From: Jan Stancek <jstancek@redhat.com> Date: 2025-10-30 18:09:53
On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes [off-list ref] wrote:
On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek [off-list ref] wrote:
quoted
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(-)
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
On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes [off-list ref] wrote:
quoted
On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek [off-list ref] wrote:
quoted
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(-)
@@ -2,7 +2,6 @@# SPDX-License-Identifier: GPL-2.0set-e-set-opipefail# 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 <redacted>
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
From: Jan Stancek <jstancek@redhat.com> Date: 2025-11-11 07:13:43
On Mon, Nov 10, 2025 at 12:33 PM Christophe Leroy
[off-list ref] wrote:
Le 30/10/2025 à 19:09, Jan Stancek a écrit :
quoted
On Mon, Oct 6, 2025 at 10:19 PM Justin Forbes [off-list ref] wrote:
quoted
On Tue, Sep 23, 2025 at 9:31 AM Jan Stancek [off-list ref] wrote:
quoted
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(-)
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
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:
quoted
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?
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:
quoted
On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
quoted
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?
From: Naveen N Rao <naveen@kernel.org> Date: 2025-12-03 03:59:32
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
On Tue, Sep 23, 2025 at 05:32:16PM +0200, Jan Stancek wrote:
quoted
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")
quoted
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