public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Juergen Gross <jgross@suse.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 00/41] Simplify, reorganize and clean up the x86 INT3 based batch-patching code (alternative.c)
Date: Fri, 28 Mar 2025 11:10:23 +0100	[thread overview]
Message-ID: <Z-Z1jxIbcSOQuGtF@gmail.com> (raw)
In-Reply-To: <CAHk-=wjwuO8UVLP5N7972TmfVc+sYEekcnZMF4rQLr662j7oXQ@mail.gmail.com>


* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Thu, 27 Mar 2025 at 13:54, Ingo Molnar <mingo@kernel.org> wrote:
> >
> > The second part of the series simplifies and standardizes the SMP batch-patching
> > data & types namespace, around the new tp_array* namespace:
> >
> >         int3_patching_desc      => [removed]
> >         temp_mm_state_t         => [removed]
> >         try_get_desc()          => [removed]
> >         put_desc()              => [removed]
> >
> >         tp_vec,tp_vec_nr        => tp_array
> >         int3_refs               => tp_array_refs
> 
> Honestly, I think "int3" is better than "tp" as a part of the name.

Yeah, was thinking hard about those two as well, but skipped it for 
this series, because of the brevity issue: text_poke_int3_ is quite a 
mouthful for a commonly used global state variable.

> "tp" doesn't say _anything_ to me, even though I understand it is 
> short for "text poke". But if you want to say 'text_poke", please 
> just write it out.
> 
> At least "int3" has some meaning in x86 context, unlike "tp".
> 
> So please either write out "text_poke" and accept that the names are 
> a bit longer (but a lot more descriptive), or use "int3" if you want 
> to save some typing.

Yeah.

So the thing is, the whole _int3 naming itself is a bit artificial 
IMHO, what we *really* want to signal here is whether something is 
boot/UP functionality or SMP functionality under the text_mutex.

That the SMP functionality relies on INT3 traps is an implementational 
detail that isn't necessary to show up in the API namespace. It also 
relies on CR3 flushing, so we could as well have added _cr3. ;-)

So I was thinking about something like this for the boot/UP variants:

  text_poke_*()

and for the SMP variants:

  smp_text_poke_*()

and text_poke_* for the data/type space.

Plus I think with the adding of 'smp_' we can also add 'batch_' to a 
few APIs to make the family of APIs clearer, plus a few other things:

A quick summary of changes (mockup):

	# boot/UP APIs & single-thread helpers:

						text_poke()
						text_poke_kgdb()
	[ unchanged APIs: ]			text_poke_copy()
						text_poke_copy_locked()
						text_poke_set()

						text_poke_addr()

	# SMP API & helpers namespace:

	text_poke_bp()			=>	smp_text_poke_single()
	text_poke_loc_init()		=>	__smp_text_poke_batch_add()
	text_poke_queue()		=>	smp_text_poke_batch_add()
	text_poke_finish()		=>	smp_text_poke_batch_flush()
	text_poke_flush()		=>	smp_text_poke_batch_finish()

	text_poke_bp_batch()		=>	smp_text_poke_batch_process()
	poke_int3_handler()		=>	smp_text_poke_int3_trap_handler()
        text_poke_sync()		=>	smp_text_poke_sync_each_cpu()


	# data/type namespace:

	int3_patching_desc		=>	[removed]
	temp_mm_state_t			=>	[removed]
	try_get_desc()			=>	[removed]
	put_desc()			=>	[removed]

	tp_vec,tp_vec_nr		=>	text_poke_array
	int3_refs			=>	text_poke_array_refs

Some of the API names are now a bit long, but I think this is one of 
the cases where clarity is more important than brevity, plus these are 
usually used in a pretty compact, straightforward fashion to trigger 
text-patching processing, not part of complex compound expressions.

I'll propagate this nomenclature into the series and repost.

> PS. The casual meaning "tp" has in English everyday language is short 
> for "toilet paper".

LOL, this seals the deal, the tp_ prefix is *so* dead.

Thanks,

	Ingo

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

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-27 20:53 [PATCH 00/41] Simplify, reorganize and clean up the x86 INT3 based batch-patching code (alternative.c) Ingo Molnar
2025-03-27 20:53 ` [PATCH 01/41] x86/alternatives: Rename 'struct bp_patching_desc' to 'struct int3_patching_desc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 02/41] x86/alternatives: Rename 'bp_refs' to 'int3_refs' Ingo Molnar
2025-03-27 20:53 ` [PATCH 03/41] x86/alternatives: Rename 'text_poke_bp_batch()' to 'text_poke_int3_batch()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 04/41] x86/alternatives: Rename 'text_poke_bp()' to 'text_poke_int3()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 05/41] x86/alternatives: Rename 'poke_int3_handler()' to 'text_poke_int3_handler()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 06/41] x86/alternatives: Rename 'poking_mm' to 'text_poke_mm' Ingo Molnar
2025-03-27 20:53 ` [PATCH 07/41] x86/alternatives: Rename 'text_poke_addr' to 'text_poke_int3_addr' Ingo Molnar
2025-03-27 20:53 ` [PATCH 08/41] x86/alternatives: Rename 'poking_addr' to 'text_poke_addr' Ingo Molnar
2025-03-27 20:53 ` [PATCH 09/41] x86/alternatives: Rename 'bp_desc' to 'int3_desc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 10/41] x86/alternatives: Remove duplicate 'text_poke_early()' prototype Ingo Molnar
2025-03-27 20:53 ` [PATCH 11/41] x86/alternatives: Update comments in int3_emulate_push() Ingo Molnar
2025-03-27 20:53 ` [PATCH 12/41] x86/alternatives: Remove the confusing, inaccurate & unnecessary 'temp_mm_state_t' abstraction Ingo Molnar
2025-03-27 20:53 ` [PATCH 13/41] x86/alternatives: Rename 'text_poke_flush()' to 'text_poke_int3_flush()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 14/41] x86/alternatives: Rename 'text_poke_finish()' to 'text_poke_int3_finish()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 15/41] x86/alternatives: Rename 'text_poke_queue()' to 'text_poke_int3_queue()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 16/41] x86/alternatives: Rename 'text_poke_loc_init()' to 'text_poke_int3_loc_init()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 17/41] x86/alternatives: Rename 'struct text_poke_loc' to 'struct text_poke_int3_loc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 18/41] x86/alternatives: Rename 'struct int3_patching_desc' to 'struct text_poke_int3_vec' Ingo Molnar
2025-03-27 20:53 ` [PATCH 19/41] x86/alternatives: Rename 'int3_desc' to 'int3_vec' Ingo Molnar
2025-03-27 20:53 ` [PATCH 20/41] x86/alternatives: Add text_mutex) assert to text_poke_int3_flush() Ingo Molnar
2025-03-27 20:53 ` [PATCH 21/41] x86/alternatives: Assert that text_poke_int3_handler() can only ever handle 'tp_vec[]' based requests Ingo Molnar
2025-03-27 20:53 ` [PATCH 22/41] x86/alternatives: Use non-inverted logic instead of 'tp_order_fail()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 23/41] x86/alternatives: Remove the 'addr == NULL means forced-flush' hack from text_poke_int3_finish()/text_poke_int3_flush()/tp_addr_ordered() Ingo Molnar
2025-03-27 20:53 ` [PATCH 24/41] x86/alternatives: Simplify text_poke_int3() by using tp_vec and existing APIs Ingo Molnar
2025-03-27 20:53 ` [PATCH 25/41] x86/alternatives: Assert input parameters in text_poke_int3_batch() Ingo Molnar
2025-03-27 20:53 ` [PATCH 26/41] x86/alternatives: Introduce 'struct text_poke_int3_array' and move tp_vec and tp_vec_nr to it Ingo Molnar
2025-03-27 20:53 ` [PATCH 27/41] x86/alternatives: Remove the tp_vec indirection Ingo Molnar
2025-03-27 20:53 ` [PATCH 28/41] x86/alternatives: Rename 'try_get_desc()' to 'try_get_tp_array()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 29/41] x86/alternatives: Rename 'put_desc()' to 'put_tp_array()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 30/41] x86/alternatives: Simplify try_get_tp_array() Ingo Molnar
2025-03-27 20:53 ` [PATCH 31/41] x86/alternatives: Simplify text_poke_int3_handler() Ingo Molnar
2025-03-27 20:53 ` [PATCH 32/41] x86/alternatives: Simplify text_poke_int3_batch() Ingo Molnar
2025-03-27 20:53 ` [PATCH 33/41] x86/alternatives: Rename 'text_poke_int3_batch()' to 'text_poke_int3_batch_process()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 34/41] x86/alternatives: Rename 'int3_refs' to 'tp_array_refs' Ingo Molnar
2025-03-27 20:53 ` [PATCH 35/41] x86/alternatives: Move the tp_array manipulation into text_poke_int3_loc_init() and rename it to text_poke_int3_loc_add() Ingo Molnar
2025-03-27 20:53 ` [PATCH 36/41] x86/alternatives: Remove the mixed-patching restriction on text_poke_int3() Ingo Molnar
2025-03-27 20:53 ` [PATCH 37/41] x86/alternatives: Rename 'text_poke_int3()' to 'text_poke_int3_now()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 38/41] x86/alternatives: Add documentation for text_poke_int3_queue() Ingo Molnar
2025-03-27 20:53 ` [PATCH 39/41] x86/alternatives: Move tp_array completion from text_poke_int3_finish() and text_poke_int3_flush() to text_poke_int3_batch_process() Ingo Molnar
2025-03-27 20:53 ` [PATCH 40/41] x86/alternatives: Rename 'text_poke_sync()' to 'text_poke_sync_each_cpu()' Ingo Molnar
2025-04-02  4:10   ` H. Peter Anvin
2025-04-03 15:05     ` Ingo Molnar
2025-03-27 20:53 ` [PATCH 41/41] x86/alternatives: Simplify tp_addr_ordered() Ingo Molnar
2025-03-27 22:19 ` [PATCH 00/41] Simplify, reorganize and clean up the x86 INT3 based batch-patching code (alternative.c) Linus Torvalds
2025-03-28 10:10   ` Ingo Molnar [this message]
2025-04-01 14:55   ` Peter Zijlstra

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=Z-Z1jxIbcSOQuGtF@gmail.com \
    --to=mingo@kernel.org \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox