On Sun, Mar 02, 2025 at 08:53:10AM -0500, Rik van Riel wrote: > I've been there. Repeatedly :) Yap, it is. And despite all the compile-time disabling fun, clang still can't do proper DCE and complains about the inline asm in __invlpgb() using a u64 on 32-bit builds. So I did the fix below, ontop and with that randconfig builds all pass fine. What I have so far is here: https://web.git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git/log/?h=tip-x86-cpu-tlbi Lemme go through the rest of your patches now. Thx. diff --git a/arch/x86/include/asm/tlb.h b/arch/x86/include/asm/tlb.h index 5375145eb959..04f2c6f4cee3 100644 --- a/arch/x86/include/asm/tlb.h +++ b/arch/x86/include/asm/tlb.h @@ -29,6 +29,7 @@ static inline void invlpg(unsigned long addr) } +#ifdef CONFIG_BROADCAST_TLB_FLUSH /* * INVLPGB does broadcast TLB invalidation across all the CPUs in the system. * @@ -74,6 +75,14 @@ static inline void __tlbsync(void) /* TLBSYNC: supported in binutils >= 0.36. */ asm volatile(".byte 0x0f, 0x01, 0xff" ::: "memory"); } +#else +/* Some compilers simply can't do DCE */ +static inline void __invlpgb(unsigned long asid, unsigned long pcid, + unsigned long addr, u16 nr_pages, + bool pmd_stride, u8 flags) { } + +static inline void __tlbsync(void) { } +#endif /* * INVLPGB can be targeted by virtual address, PCID, ASID, or any combination -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette