The Rust kernel infrastructure generates inline asm for WARN() via
ARCH_WARN_ASM(file, line, flags, size), expanding it through a C
preprocessor pass (generated_arch_warn_asm.rs.S) to produce an
arch-specific asm template string for use in Rust's core::arch macros.
powerpc currently lacks ARCH_WARN_ASM and ARCH_WARN_REACHABLE, causing
Rust builds to fail on powerpc.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <redacted>
---
arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
From: Miguel Ojeda <hidden> Date: 2026-08-19 10:02:30
On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
[off-list ref] wrote:
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Should this be Reported-by?
In addition, probably we want a Link to the original report, and a Fixes tag.
Ideally, please include the error message in the commit message -- it
helps to triaging and also to search it later on etc.
Thanks!
Cheers,
Miguel
On Wed, Aug 19, 2026 at 12:02:01PM +0200, Miguel Ojeda wrote:
On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
[off-list ref] wrote:
quoted
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Should this be Reported-by?
The change itself is suggested by Tomonori so i was not sure.
Yeah there should be
Reported-by: Link Mauve <redacted>
Closes: https://lore.kernel.org/all/anG67Q6Y59kDqh-c@desktop
Fixes: 73b741adb264 ("rust: Add PowerPC support")
In addition, probably we want a Link to the original report, and a Fixes tag.
Ideally, please include the error message in the commit message -- it
helps to triaging and also to search it later on etc.
Sure i'll add the error to the commit message and send out a new
revision.
Le 19/08/2026 à 10:48, Mukesh Kumar Chaurasiya (IBM) a écrit :
quoted hunk
The Rust kernel infrastructure generates inline asm for WARN() via
ARCH_WARN_ASM(file, line, flags, size), expanding it through a C
preprocessor pass (generated_arch_warn_asm.rs.S) to produce an
arch-specific asm template string for use in Rust's core::arch macros.
powerpc currently lacks ARCH_WARN_ASM and ARCH_WARN_REACHABLE, causing
Rust builds to fail on powerpc.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <redacted>
---
arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
Sorry, I still don't understand. The only place the new macro is used is a .S file (namely rust/kernel/generated_arch_warn_asm.rs.S), and the change this patch implements is inside a #if !__ASSEMBLER__.
What am I missing ?
Christophe
On Wed, Aug 19, 2026 at 01:50:43PM +0200, Christophe Leroy (CS GROUP) wrote:
Le 19/08/2026 à 10:48, Mukesh Kumar Chaurasiya (IBM) a écrit :
quoted
The Rust kernel infrastructure generates inline asm for WARN() via
ARCH_WARN_ASM(file, line, flags, size), expanding it through a C
preprocessor pass (generated_arch_warn_asm.rs.S) to produce an
arch-specific asm template string for use in Rust's core::arch macros.
powerpc currently lacks ARCH_WARN_ASM and ARCH_WARN_REACHABLE, causing
Rust builds to fail on powerpc.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <redacted>
---
arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
Sorry, I still don't understand. The only place the new macro is used is a
.S file (namely rust/kernel/generated_arch_warn_asm.rs.S), and the change
this patch implements is inside a #if !__ASSEMBLER__.
What am I missing ?
Christophe
Hey Christophe,
The code calling ARCH_WARN_ASM is a .rs.S file that goes through the C
preprocessor as part of the Rust build machinery.
The intended mechanism is essentially
generated_arch_warn_asm.rs.S
|
v
CPP
|
| includes <linux/bug.h>
|
v
ARCH_WARN_ASM(...) gets expanded
|
v
Rust source containing the generated assembly string
The patch therefore needs ARCH_WARN_ASM in the non-__ASSEMBLER__ section,
because that section is where the macros intended for C preprocessing
are defined.
The thing is .rs.S is not using ARCH_WARN_ASM as an assembler-time macro,
it is using the C preprocessor to expand ARCH_WARN_ASM before the
Rust/assembly processing stage.
This is my understanding of things, if i am wrong somewhere maybe
someone can clarify.
Regards,
Mukesh
[...]
From: R Nageswara Sastry <hidden> Date: 2026-09-17 10:08:09
On 19.08.2026 2:18 PM, Mukesh Kumar Chaurasiya (IBM) wrote:
The Rust kernel infrastructure generates inline asm for WARN() via
ARCH_WARN_ASM(file, line, flags, size), expanding it through a C
preprocessor pass (generated_arch_warn_asm.rs.S) to produce an
arch-specific asm template string for use in Rust's core::arch macros.
powerpc currently lacks ARCH_WARN_ASM and ARCH_WARN_REACHABLE, causing
Rust builds to fail on powerpc.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <redacted>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <redacted>
Tested on PowerPC LPAR + 7.3.0-rc3 by creating a small .rs module to
trigger ARCH_WARN_ASM.
Tested-by: R Nageswara Sastry <redacted>