From: Ingo Molnar Date: Tue, 5 Aug 2025 09:15:34 +0000 (+0200) Subject: Merge commit 'linus' into core/bugs, to resolve conflicts X-Git-Tag: v6.19-rc1~229^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a53d0cf7f1cb3182ad533ff5cacfa5fd29c419ad;p=thirdparty%2Flinux.git Merge commit 'linus' into core/bugs, to resolve conflicts Resolve conflicts with this commit that was developed in parallel during the merge window: 8c8efa93db68 ("x86/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust") Conflicts: arch/riscv/include/asm/bug.h arch/x86/include/asm/bug.h Signed-off-by: Ingo Molnar --- a53d0cf7f1cb3182ad533ff5cacfa5fd29c419ad diff --cc arch/riscv/include/asm/bug.h index da9b8e83934d4,4c03e20ad11f2..6f581b84d8fc5 --- 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 diff --cc arch/x86/include/asm/bug.h index 8593976b32cbb,20fcb8507ad12..e427a3f7b7516 --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h @@@ -38,39 -38,36 +38,36 @@@ #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(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 \ - : : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__), \ - "i" (flags), \ - "i" (sizeof(struct bug_entry))); \ - } while (0) - - #else /* !CONFIG_DEBUG_BUGVERBOSE */ - - #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.word %c0" "\t# bug_entry::flags\n" \ - "\t.org 2b+%c1\n" \ - ".popsection\n" \ - extra \ - : : "i" (flags), \ - "i" (sizeof(struct bug_entry))); \ + #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) \ -do { \ - asm_inline volatile(_BUG_FLAGS_ASM(ins, "%c0", \ - "%c1", "%c2", "%c3", extra) \ - : : "i" (__FILE__), "i" (__LINE__), \ - "i" (flags), \ - "i" (sizeof(struct bug_entry))); \ ++#define _BUG_FLAGS(cond_str, ins, flags, extra) \ ++do { \ ++ asm_inline volatile(_BUG_FLAGS_ASM(ins, "%c0", \ ++ "%c1", "%c2", "%c3", extra) \ ++ : : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__), \ ++ "i" (flags), \ ++ "i" (sizeof(struct bug_entry))); \ } while (0) - #endif /* CONFIG_DEBUG_BUGVERBOSE */ + #define ARCH_WARN_ASM(file, line, flags, size) \ + _BUG_FLAGS_ASM(ASM_UD2, file, line, flags, size, "") #else @@@ -92,12 -89,15 +89,15 @@@ do { * were to trigger, we'd rather wreck the machine in an attempt to get the * message out than not know about it. */ - #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)); \ - instrumentation_end(); \ + + #define ARCH_WARN_REACHABLE ANNOTATE_REACHABLE(1b) + -#define __WARN_FLAGS(flags) \ -do { \ - __auto_type __flags = BUGFLAG_WARNING|(flags); \ - instrumentation_begin(); \ - _BUG_FLAGS(ASM_UD2, __flags, ARCH_WARN_REACHABLE); \ - instrumentation_end(); \ ++#define __WARN_FLAGS(cond_str, flags) \ ++do { \ ++ __auto_type __flags = BUGFLAG_WARNING|(flags); \ ++ instrumentation_begin(); \ ++ _BUG_FLAGS(cond_str, ASM_UD2, __flags, ARCH_WARN_REACHABLE); \ ++ instrumentation_end(); \ } while (0) #include