Re: [PATCH V17 0/7] Rust Support for powerpc

Nathan Chancellor <[email protected]>
Newsgroups org.kernel.vger.rust-for-linux,dev.linux.lists.llvm,org.kernel.vger.linux-kernel,org.ozlabs.lists.linuxppc-dev
Message-ID <20260817193810.GA4060679@ax162>
Hi Mukesh,

On Wed, Aug 05, 2026 at 05:59:14PM +0530, Mukesh Kumar Chaurasiya wrote:
> On Tue, Aug 04, 2026 at 10:40:35PM +0900, FUJITA Tomonori wrote:
> > On Tue, 4 Aug 2026 12:11:57 +0200
> > Link Mauve <[email protected]> wrote:
> > > I just tested those again in linux-next, with the Wii support series on
> > > top, but now the kernel fails to build due to ARCH_WARN_ASM and
> > > ARCH_WARN_REACHABLE not being defined on PowerPC:
> > > ```
> > > error: no rules expected `ARCH_WARN_ASM`
> > >    --> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_warn_asm.rs:1:28
> > >     |
> > >   1 | ::kernel::concat_literals!(ARCH_WARN_ASM("{file}", "{line}", "{flags}", "{size}"))
> > >     |                            ^^^^^^^^^^^^^ no rules expected this token in macro call
> > >     |
> > >    ::: ../rust/kernel/lib.rs:279:1
> > >     |
> > > 279 | macro_rules! concat_literals {
> > >     | ---------------------------- when calling this macro
> > >     |
> > >     = note: while trying to match sequence start
> > > 
> > > error: no rules expected `ARCH_WARN_REACHABLE`
> > >    --> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_reachable_asm.rs:1:28
> > >     |
> > >   1 | ::kernel::concat_literals!(ARCH_WARN_REACHABLE)
> > >     |                            ^^^^^^^^^^^^^^^^^^^ no rules expected this token in macro call
> > >     |
> > >    ::: ../rust/kernel/lib.rs:279:1
> > >     |
> > > 279 | macro_rules! concat_literals {
> > >     | ---------------------------- when calling this macro
> > >     |
> > >     = note: while trying to match sequence start
> > > 
> > > error: aborting due to 2 previous errors
> > > ```
> > 
> > Looks like powerpc needs something like the followings:
> > 
> > diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h
> > index 0db48977c70c..8aba39e0cf26 100644
> > --- a/arch/powerpc/include/asm/bug.h
> > +++ b/arch/powerpc/include/asm/bug.h
> > @@ -32,34 +32,38 @@
> >  #endif /* verbose */
> >  
> >  #else /* !__ASSEMBLER__ */
> > -/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
> > -   sizeof(struct bug_entry), respectively */
> >  #ifdef CONFIG_DEBUG_BUGVERBOSE
> > -#define _EMIT_BUG_ENTRY				\
> > +#define _EMIT_BUG_ENTRY(file, line, flags)	\
> >  	".section __bug_table,\"aw\"\n"		\
> >  	"2:	.4byte 1b - .\n"		\
> > -	"	.4byte %0 - .\n"		\
> > -	"	.short %1, %2\n"		\
> > -	".org 2b+%3\n"				\
> > -	".previous\n"
> > +	"	.4byte " file " - .\n"		\
> > +	"	.short " line ", " flags "\n"
> >  #else
> > -#define _EMIT_BUG_ENTRY				\
> > +#define _EMIT_BUG_ENTRY(file, line, flags)	\
> >  	".section __bug_table,\"aw\"\n"		\
> >  	"2:	.4byte 1b - .\n"		\
> > -	"	.short %2\n"			\
> > -	".org 2b+%3\n"				\
> > -	".previous\n"
> > +	"	.short " flags "\n"
> >  #endif
> >  
> >  #define BUG_ENTRY(cond_str, insn, flags, ...)		\
> >  	__asm__ __volatile__(				\
> >  		"1:	" insn "\n"			\
> > -		_EMIT_BUG_ENTRY				\
> > +		_EMIT_BUG_ENTRY("%0", "%1", "%2")	\
> > +		".org 2b+%3\n"				\
> > +		".previous\n"				\
> >  		: : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__),	\
> >  		  "i" (flags),				\
> >  		  "i" (sizeof(struct bug_entry)),	\
> >  		  ##__VA_ARGS__)
> >  
> > +#define ARCH_WARN_ASM(file, line, flags, size)		\
> > +		"1:	twi 31, 0, 0\n"			\
> > +		_EMIT_BUG_ENTRY(file, line, flags)	\
> > +		".org 2b+" size "\n"			\
> > +		".previous\n"
> > +
> > +#define ARCH_WARN_REACHABLE
> > +
> >  /*
> >   * BUG_ON() and WARN_ON() do their best to cooperate with compile-time
> >   * optimisations. However depending on the complexity of the condition
> 
> Yeah, This makes sense.
> 
> I'll work on this and send out a fix soon.

Did a fix for this ever materialize? I am still seeing the errors that
Link posted above in next-20260817.

-- 
Cheers,
Nathan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.