Subject: Re: linux-next: manual merge of the rust tree with the tip tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 4 Aug 2025 12:09:33 +1000

Hi all,

On Wed, 23 Jul 2025 11:05:37 +1000 Stephen Rothwell <[email-masked]> wrote:
>
> Today's linux-next merge of the rust tree got a conflict in:
> 
>   arch/riscv/include/asm/bug.h
> 
> between commit:
> 
>   ac2655438eb5 ("bugs/riscv: Pass in 'cond_str' to __BUG_FLAGS()")
> 
> from the tip tree and commit:
> 
>   8ad470d4e3dc ("riscv/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust")
> 
> from the rust tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> 
> diff --cc arch/riscv/include/asm/bug.h
> index da9b8e83934d,4c03e20ad11f..000000000000
> --- a/arch/riscv/include/asm/bug.h
> +++ b/arch/riscv/include/asm/bug.h
> @@@ -57,16 -56,22 +56,22 @@@ typedef u32 bug_insn_t
>   			"ebreak\n"				\
>   			".pushsection __bug_table,\"aw\"\n\t"	\
>   		"2:\n\t"					\
> - 			__BUG_ENTRY "\n\t"			\
> - 			".org 2b + %3\n\t"                      \
> + 		__BUG_ENTRY(file, line, flags) "\n\t"		\
> + 			".org 2b + " size "\n\t"                \
>   			".popsection"				\
> + 
>  -#define __BUG_FLAGS(flags)					\
> ++#define __BUG_FLAGS(cond_str, flags)				\
> + do {								\
> + 	__asm__ __volatile__ (					\
> + 		ARCH_WARN_ASM("%0", "%1", "%2", "%3")		\
>   		:						\
>  -		: "i" (__FILE__), "i" (__LINE__),		\
>  +		: "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__),	\
>   		  "i" (flags),					\
>   		  "i" (sizeof(struct bug_entry)));              \
>   } while (0)
> + 
>   #else /* CONFIG_GENERIC_BUG */
>  -#define __BUG_FLAGS(flags) do {					\
>  +#define __BUG_FLAGS(cond_str, flags) do {			\
>   	__asm__ __volatile__ ("ebreak\n");			\
>   } while (0)
>   #endif /* CONFIG_GENERIC_BUG */
> @@@ -76,8 -81,10 +81,10 @@@
>   	unreachable();						\
>   } while (0)
>   
>  -#define __WARN_FLAGS(flags) __BUG_FLAGS(BUGFLAG_WARNING|(flags))
>  +#define __WARN_FLAGS(cond_str, flags) __BUG_FLAGS(cond_str, BUGFLAG_WARNING|(flags))
>   
> + #define ARCH_WARN_REACHABLE
> + 
>   #define HAVE_ARCH_BUG
>   
>   #include <asm-generic/bug.h>

This is now a conflict between the tip tree and Linus' tree.

-- 
Cheers,
Stephen Rothwell