All of lore.kernel.org
 help / color / mirror / Atom feed
From: Uros Bizjak <ubizjak@gmail.com>
To: x86@kernel.org, linux-kernel@vger.kernel.org
Cc: Uros Bizjak <ubizjak@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH 2/2] x86/asm: Use asm_inline instead of asm in clwb()
Date: Thu, 13 Mar 2025 11:26:56 +0100	[thread overview]
Message-ID: <20250313102715.333142-2-ubizjak@gmail.com> (raw)
In-Reply-To: <20250313102715.333142-1-ubizjak@gmail.com>

Use asm_inline to instruct the compiler that the size of asm()
is the minimum size of one instruction, ignoring how many instructions
the compiler thinks it is. ALTERNATIVE macro that expands to several
pseudo directives causes instruction length estimate to count
more than 20 instructions.

bloat-o-meter reports slight increase of the code size
for x86_64 defconfig object file, compiled with gcc-14.2:

add/remove: 0/2 grow/shrink: 3/0 up/down: 190/-59 (131)
Function                                     old     new   delta
__copy_user_flushcache                       166     247     +81
__memcpy_flushcache                          369     437     +68
arch_wb_cache_pmem                             6      47     +41
__pfx_clean_cache_range                       16       -     -16
clean_cache_range                             43       -     -43
Total: Before=22807167, After=22807298, chg +0.00%

The compiler now inlines and removes clean_cache_range() function.

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>
---
 arch/x86/include/asm/special_insns.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/special_insns.h b/arch/x86/include/asm/special_insns.h
index 9b10bd102d3d..6266d6b9e0b8 100644
--- a/arch/x86/include/asm/special_insns.h
+++ b/arch/x86/include/asm/special_insns.h
@@ -185,7 +185,7 @@ static inline void clwb(volatile void *__p)
 {
 	volatile struct { char x[64]; } *p = __p;
 
-	asm volatile(ALTERNATIVE_2(
+	asm_inline volatile(ALTERNATIVE_2(
 		"ds clflush %0",
 		"clflushopt %0", X86_FEATURE_CLFLUSHOPT,
 		"clwb %0", X86_FEATURE_CLWB)
-- 
2.48.1


  reply	other threads:[~2025-03-13 10:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-13 10:26 [PATCH 1/2] x86/asm: Use CLFLUSHOPT and CLWB mnemonics in special_insns.h Uros Bizjak
2025-03-13 10:26 ` Uros Bizjak [this message]
2025-03-13 11:02   ` [tip: x86/asm] x86/asm: Use asm_inline() instead of asm() in clwb() tip-bot2 for Uros Bizjak
2025-03-19 11:03   ` [tip: x86/core] " tip-bot2 for Uros Bizjak
2025-03-13 11:02 ` [tip: x86/asm] x86/asm: Use CLFLUSHOPT and CLWB mnemonics in <asm/special_insns.h> tip-bot2 for Uros Bizjak
2025-03-19 11:03 ` [tip: x86/core] " tip-bot2 for Uros Bizjak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250313102715.333142-2-ubizjak@gmail.com \
    --to=ubizjak@gmail.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.