All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josh Poimboeuf <jpoimboe@kernel.org>
To: x86@kernel.org
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 0/8] objtool, x86/alternative: Convert objtool annotations and x86 alternatives to assembler macros
Date: Sat,  6 Dec 2025 13:41:07 -0800	[thread overview]
Message-ID: <cover.1765044697.git.jpoimboe@kernel.org> (raw)

Convert objtool annotations and x86 alternatives to assembler macros.
This creates a shared C/asm alternative implementation and makes the
code generation significantly more readable.

Patches 1-5: convert objtool
Patches 6-8: convert alternatives

Based on tip/master.

Before:
-----
  # ./arch/x86/include/asm/smap.h:47: 	alternative("", "stac", X86_FEATURE_SMAP);
  # 47 "./arch/x86/include/asm/smap.h" 1
  	# ALT: oldinstr
  771:

  772:
  # ALT: padding
  .skip -(((775f-774f)-(772b-771b)) > 0) * ((775f-774f)-(772b-771b)),0x90
  773:
  .pushsection .altinstructions, "aM", @progbits, 14
   .long 771b - .
   .long 774f - .
   .4byte ( 9*32+20)
   .byte 773b-771b
   .byte 775f-774f
  .popsection
  .pushsection .altinstr_replacement, "ax"
  .pushsection .discard.annotate_data, "M", @progbits, 8; .long 1b - ., 1; .popsection
  # ALT: replacement
  774:
  	stac
  775:
  .popsection
-----

After:
-----
  # ./arch/x86/include/asm/smap.h:47: 	alternative("", "stac", X86_FEATURE_SMAP);
  # 47 "./arch/x86/include/asm/smap.h" 1
	ALTERNATIVE "", "stac", "( 9*32+20)"
-----

Future work:
  - BUG()/WARN()
  - static_cpu_has()
  - static calls/branches
  - exceptions
  - smp locks
  - unwind hints

Josh Poimboeuf (8):
  objtool: Rename ANNOTYPE_IGNORE_ALTS -> ANNOTYPE_IGNORE_ALTERNATIVE
  objtool: Make ANNOTYPE_DATA_SPECIAL unique across all annotations
  objtool: Rename C ANNOTATE_REACHABLE to ANNOTATE_REACHABLE_LABEL
  objtool: Rename asm ANNOTATE_NOCFI_SYM to ANNOTATE_NOCFI
  objtool: Convert annotations to assembler macros
  x86/asm: Use unique code labels in __FILL_RETURN_BUFFER
  x86/asm: Remove newlines in alternatives
  x86/alternative: Convert alternatives to assembler macros

 arch/x86/include/asm/alternative.h    | 196 +++++++++++++-------------
 arch/x86/include/asm/asm.h            |   8 +-
 arch/x86/include/asm/bug.h            |   2 +-
 arch/x86/include/asm/irq_stack.h      |   2 +-
 arch/x86/include/asm/jump_label.h     |   1 +
 arch/x86/include/asm/nospec-branch.h  |   8 +-
 arch/x86/include/asm/paravirt_types.h |   2 +-
 arch/x86/include/asm/processor.h      |   2 +-
 arch/x86/include/asm/smap.h           |   8 +-
 arch/x86/include/asm/vmware.h         |   2 +-
 arch/x86/platform/efi/efi_stub_64.S   |   2 +-
 include/linux/annotate.h              | 133 ++++++++---------
 include/linux/objtool_types.h         |   5 +-
 tools/include/linux/objtool_types.h   |   5 +-
 tools/objtool/check.c                 |   4 +-
 15 files changed, 196 insertions(+), 184 deletions(-)

-- 
2.52.0


             reply	other threads:[~2025-12-06 21:42 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-06 21:41 Josh Poimboeuf [this message]
2025-12-06 21:41 ` [PATCH 1/8] objtool: Rename ANNOTYPE_IGNORE_ALTS -> ANNOTYPE_IGNORE_ALTERNATIVE Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 2/8] objtool: Make ANNOTYPE_DATA_SPECIAL unique across all annotations Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 3/8] objtool: Rename C ANNOTATE_REACHABLE to ANNOTATE_REACHABLE_LABEL Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 4/8] objtool: Rename asm ANNOTATE_NOCFI_SYM to ANNOTATE_NOCFI Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 5/8] objtool: Convert annotations to assembler macros Josh Poimboeuf
2025-12-07 14:51   ` Josh Poimboeuf
2025-12-08  9:37   ` Peter Zijlstra
2025-12-06 21:41 ` [PATCH 6/8] x86/asm: Use unique code labels in __FILL_RETURN_BUFFER Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 7/8] x86/asm: Remove newlines in alternatives Josh Poimboeuf
2025-12-07 14:52   ` Josh Poimboeuf
2025-12-06 21:41 ` [PATCH 8/8] x86/alternative: Convert alternatives to assembler macros Josh Poimboeuf
2025-12-08  9:51   ` Peter Zijlstra
2025-12-08 22:46     ` Josh Poimboeuf
2025-12-09  9:24       ` Peter Zijlstra
2025-12-10  1:15         ` Josh Poimboeuf
2025-12-10  9:16           ` Peter Zijlstra
2025-12-11  5:20             ` Josh Poimboeuf
2025-12-11  1:06 ` [PATCH 0/8] objtool, x86/alternative: Convert objtool annotations and x86 " Borislav Petkov
2025-12-11  5:27   ` Josh Poimboeuf

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=cover.1765044697.git.jpoimboe@kernel.org \
    --to=jpoimboe@kernel.org \
    --cc=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --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.