Hi all, On Wed, 23 Jul 2025 11:16:09 +1000 Stephen Rothwell wrote: > > Today's linux-next merge of the rust tree got a conflict in: > > arch/x86/include/asm/bug.h > > between commits: > > aec58b48517c ("bugs/core: Extend __WARN_FLAGS() with the 'cond_str' parameter") > 407b9076c147 ("bugs/x86: Extend _BUG_FLAGS() with the 'cond_str' parameter") > 48ede5be5c07 ("bugs/x86: Augment warnings output by concatenating 'cond_str' with the regular __FILE__ string in _BUG_FLAGS()") > > from the tip tree and commit: > > 8c8efa93db68 ("x86/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/x86/include/asm/bug.h > index 8593976b32cb,20fcb8507ad1..000000000000 > --- a/arch/x86/include/asm/bug.h > +++ b/arch/x86/include/asm/bug.h > @@@ -38,19 -38,30 +38,30 @@@ > #endif > > #ifdef CONFIG_DEBUG_BUGVERBOSE > + #define __BUG_ENTRY(file, line, flags) \ > + "2:\t" __BUG_REL("1b") "\t# bug_entry::bug_addr\n" \ > + "\t" __BUG_REL(file) "\t# bug_entry::file\n" \ > + "\t.word " line "\t# bug_entry::line\n" \ > + "\t.word " flags "\t# bug_entry::flags\n" > + #else > + #define __BUG_ENTRY(file, line, flags) \ > + "2:\t" __BUG_REL("1b") "\t# bug_entry::bug_addr\n" \ > + "\t.word " flags "\t# bug_entry::flags\n" > + #endif > + > + #define _BUG_FLAGS_ASM(ins, file, line, flags, size, extra) \ > + "1:\t" ins "\n" \ > + ".pushsection __bug_table,\"aw\"\n" \ > + __BUG_ENTRY(file, line, flags) \ > + "\t.org 2b + " size "\n" \ > + ".popsection\n" \ > + extra > > -#define _BUG_FLAGS(ins, flags, extra) \ > +#define _BUG_FLAGS(cond_str, ins, flags, extra) \ > do { \ > - asm_inline volatile("1:\t" ins "\n" \ > - ".pushsection __bug_table,\"aw\"\n" \ > - "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ > - "\t" __BUG_REL(%c0) "\t# bug_entry::file\n" \ > - "\t.word %c1" "\t# bug_entry::line\n" \ > - "\t.word %c2" "\t# bug_entry::flags\n" \ > - "\t.org 2b+%c3\n" \ > - ".popsection\n" \ > - extra \ > + asm_inline volatile(_BUG_FLAGS_ASM(ins, "%c0", \ > + "%c1", "%c2", "%c3", extra) \ > - : : "i" (__FILE__), "i" (__LINE__), \ > + : : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__), \ > "i" (flags), \ > "i" (sizeof(struct bug_entry))); \ > } while (0) > @@@ -92,11 -89,14 +89,14 @@@ do { > * were to trigger, we'd rather wreck the machine in an attempt to get the > * message out than not know about it. > */ > + > + #define ARCH_WARN_REACHABLE ANNOTATE_REACHABLE(1b) > + > -#define __WARN_FLAGS(flags) \ > +#define __WARN_FLAGS(cond_str, flags) \ > do { \ > __auto_type __flags = BUGFLAG_WARNING|(flags); \ > instrumentation_begin(); \ > - _BUG_FLAGS(cond_str, ASM_UD2, __flags, ANNOTATE_REACHABLE(1b)); \ > - _BUG_FLAGS(ASM_UD2, __flags, ARCH_WARN_REACHABLE); \ > ++ _BUG_FLAGS(cond_str, ASM_UD2, __flags, ARCH_WARN_REACHABLE); \ > instrumentation_end(); \ > } while (0) > This is now a conflict between the tip tree and Linus' tree. -- Cheers, Stephen Rothwell