* [PATCH -tip v2] x86/idle: Work around LLVM assembler bug with MONITOR and MWAIT insn
@ 2025-04-03 9:17 Uros Bizjak
2025-04-03 11:20 ` Ingo Molnar
0 siblings, 1 reply; 3+ messages in thread
From: Uros Bizjak @ 2025-04-03 9:17 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Uros Bizjak, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, H. Peter Anvin, kernel test robot
LLVM assembler is not able to assemble correct forms of MONITOR
and MWAIT instructions with explicit operands:
error: invalid operand for instruction
monitor %rax,%ecx,%edx
^~~~
Use instruction mnemonics with implicit operands to
work around this issue.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Fixes: cd3b85b27542 ("x86/idle: Use MONITOR and MWAIT mnemonics in <asm/mwait.h>")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202504030802.2lEVBSpN-lkp@intel.com/
---
v2: Use instruction mnemonics with implicit operands.
---
arch/x86/include/asm/mwait.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h
index 5141d2acc0ef..8f2cfc9cc3d8 100644
--- a/arch/x86/include/asm/mwait.h
+++ b/arch/x86/include/asm/mwait.h
@@ -27,7 +27,7 @@
static __always_inline void __monitor(const void *eax, u32 ecx, u32 edx)
{
- asm volatile("monitor %0, %1, %2" :: "a" (eax), "c" (ecx), "d" (edx));
+ asm volatile("monitor" :: "a" (eax), "c" (ecx), "d" (edx));
}
static __always_inline void __monitorx(const void *eax, u32 ecx, u32 edx)
@@ -41,7 +41,7 @@ static __always_inline void __mwait(u32 eax, u32 ecx)
{
mds_idle_clear_cpu_buffers();
- asm volatile("mwait %0, %1" :: "a" (eax), "c" (ecx));
+ asm volatile("mwait" :: "a" (eax), "c" (ecx));
}
/*
@@ -92,7 +92,7 @@ static __always_inline void __sti_mwait(u32 eax, u32 ecx)
{
mds_idle_clear_cpu_buffers();
- asm volatile("sti; mwait %0, %1" :: "a" (eax), "c" (ecx));
+ asm volatile("sti; mwait" :: "a" (eax), "c" (ecx));
}
/*
--
2.49.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH -tip v2] x86/idle: Work around LLVM assembler bug with MONITOR and MWAIT insn
2025-04-03 9:17 [PATCH -tip v2] x86/idle: Work around LLVM assembler bug with MONITOR and MWAIT insn Uros Bizjak
@ 2025-04-03 11:20 ` Ingo Molnar
2025-04-03 11:25 ` Borislav Petkov
0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2025-04-03 11:20 UTC (permalink / raw)
To: Uros Bizjak
Cc: x86, linux-kernel, Thomas Gleixner, Borislav Petkov, Dave Hansen,
H. Peter Anvin, kernel test robot
* Uros Bizjak <ubizjak@gmail.com> wrote:
> LLVM assembler is not able to assemble correct forms of MONITOR
> and MWAIT instructions with explicit operands:
>
> error: invalid operand for instruction
> monitor %rax,%ecx,%edx
> ^~~~
>
> Use instruction mnemonics with implicit operands to
> work around this issue.
>
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Fixes: cd3b85b27542 ("x86/idle: Use MONITOR and MWAIT mnemonics in <asm/mwait.h>")
> Reported-by: kernel test robot <lkp@intel.com>
So I've zapped cd3b85b27542 instead - let's re-try it again and
see if there's any code generation tradeoffs vs. the byte encodings?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH -tip v2] x86/idle: Work around LLVM assembler bug with MONITOR and MWAIT insn
2025-04-03 11:20 ` Ingo Molnar
@ 2025-04-03 11:25 ` Borislav Petkov
0 siblings, 0 replies; 3+ messages in thread
From: Borislav Petkov @ 2025-04-03 11:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Uros Bizjak, x86, linux-kernel, Thomas Gleixner, Dave Hansen,
H. Peter Anvin, kernel test robot
On Thu, Apr 03, 2025 at 01:20:33PM +0200, Ingo Molnar wrote:
> So I've zapped cd3b85b27542 instead - let's re-try it again and
> see if there's any code generation tradeoffs vs. the byte encodings?
Please.
And give the test bots some time to chew on them before committing and/or
build-test with clang too.
Thx.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-04-03 11:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-03 9:17 [PATCH -tip v2] x86/idle: Work around LLVM assembler bug with MONITOR and MWAIT insn Uros Bizjak
2025-04-03 11:20 ` Ingo Molnar
2025-04-03 11:25 ` Borislav Petkov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.