From: Mike Rapoport <rppt@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Luis Chamberlain <mcgrof@kernel.org>,
Andreas Larsson <andreas@gaisler.com>,
Andy Lutomirski <luto@kernel.org>,
Ard Biesheuvel <ardb@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Borislav Petkov <bp@alien8.de>, Brian Cain <bcain@quicinc.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Christoph Hellwig <hch@infradead.org>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dave Hansen <dave.hansen@linux.intel.com>,
Dinh Nguyen <dinguyen@kernel.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Guo Ren <guoren@kernel.org>, Helge Deller <deller@gmx.de>,
Huacai Chen <chenhuacai@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Johannes Berg <johannes@sipsolutions.net>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
Kent Overstreet <kent.overstreet@linux.dev>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Mark Rutland <mark.rutland@arm.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Matt Turner <mattst88@gmail.com>,
Max Filippov <jcmvbkbc@gmail.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Michal Simek <monstr@monstr.eu>, Oleg Nesterov <oleg@redhat.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Richard Weinberger <richard@nod.at>,
Russell King <linux@armlinux.org.uk>, Song Liu <song@kernel.org>,
Stafford Horne <shorne@gmail.com>,
Suren Baghdasaryan <surenb@google.com>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Thomas Gleixner <tglx@linutronix.de>,
Uladzislau Rezki <urezki@gmail.com>,
Vineet Gupta <vgupta@kernel.org>, Will Deacon <will@kernel.org>,
bpf@vger.kernel.org, linux-alpha@vger.kernel.org,
linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, linux-mm@kvack.org,
linux-modules@vger.kernel.org, linux-openrisc@vger.kernel.org,
linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
linux-trace-kernel@vger.kernel.org, linux-um@lists.infradead.org,
linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
sparclinux@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v6 6/8] x86/module: prepare module loading for ROX allocations of text
Date: Thu, 17 Oct 2024 14:25:05 +0300 [thread overview]
Message-ID: <ZxD0EVBoO-jcxEGE@kernel.org> (raw)
In-Reply-To: <20241017093515.GU16066@noisy.programming.kicks-ass.net>
On Thu, Oct 17, 2024 at 11:35:15AM +0200, Peter Zijlstra wrote:
> On Wed, Oct 16, 2024 at 05:01:28PM -0400, Steven Rostedt wrote:
> > On Wed, 16 Oct 2024 15:24:22 +0300
> > Mike Rapoport <rppt@kernel.org> wrote:
> >
> > > diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
> > > index 8da0e66ca22d..b498897b213c 100644
> > > --- a/arch/x86/kernel/ftrace.c
> > > +++ b/arch/x86/kernel/ftrace.c
> > > @@ -118,10 +118,13 @@ ftrace_modify_code_direct(unsigned long ip, const char *old_code,
> > > return ret;
> > >
> > > /* replace the text with the new text */
> > > - if (ftrace_poke_late)
> > > + if (ftrace_poke_late) {
> > > text_poke_queue((void *)ip, new_code, MCOUNT_INSN_SIZE, NULL);
> > > - else
> > > - text_poke_early((void *)ip, new_code, MCOUNT_INSN_SIZE);
> > > + } else {
> > > + mutex_lock(&text_mutex);
> > > + text_poke((void *)ip, new_code, MCOUNT_INSN_SIZE);
> > > + mutex_unlock(&text_mutex);
> > > + }
> > > return 0;
> > > }
> >
> > So this slows down the boot by over 30ms. That may not sound like much, but
> > we care very much about boot times. This code is serialized with boot and
> > runs whenever ftrace is configured in the kernel. The way I measured this,
> > was that I added:
> >
>
> > If this is only needed for module load, can we at least still use the
> > text_poke_early() at boot up?
>
> Right, so I don't understand why this is needed at all.
> ftrace_module_init() runs before complete_formation() which normally
> switches to ROX, as such ftrace should be able to continue to do direct
> modifications here.
With this series the module text is allocated as ROX at the first place, so
the modifications ftrace does to module text have to either use text poking
even before complete_formation() or deal with a writable copy like I did
for relocations and alternatives.
I've been carrying the ftrace changes from a very old prototype and
didn't pay enough attention to them them until Steve's complaint.
I'll look into it.
> Which reminds me, at some point I did patches adding a
> MODULE_STATE_UNFORMED callback in order for static_call / jump_label to
> be able to avoid the expensive patching on module load as well (arguably
> ftrace should be using that too, instead of a custom callback).
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2024-10-17 11:29 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 12:24 [PATCH v6 0/8] x86/module: use large ROX pages for text allocations Mike Rapoport
2024-10-16 12:24 ` [PATCH v6 1/8] mm: vmalloc: group declarations depending on CONFIG_MMU together Mike Rapoport
2024-10-16 14:41 ` Uladzislau Rezki
2024-10-19 22:17 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 2/8] mm: vmalloc: don't account for number of nodes for HUGE_VMAP allocations Mike Rapoport
2024-10-16 17:21 ` Uladzislau Rezki
2024-10-19 22:19 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 3/8] asm-generic: introduce text-patching.h Mike Rapoport
2024-10-19 22:21 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 4/8] module: prepare to handle ROX allocations for text Mike Rapoport
2024-10-19 22:30 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 5/8] arch: introduce set_direct_map_valid_noflush() Mike Rapoport
2024-10-19 22:32 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 6/8] x86/module: prepare module loading for ROX allocations of text Mike Rapoport
2024-10-16 21:01 ` Steven Rostedt
2024-10-17 9:35 ` Peter Zijlstra
2024-10-17 11:25 ` Mike Rapoport [this message]
2024-10-17 15:35 ` Steven Rostedt
2024-10-17 14:17 ` Steven Rostedt
2024-10-19 12:07 ` Mike Rapoport
2024-10-21 22:15 ` Nathan Chancellor
2024-10-24 8:13 ` Mike Rapoport
2024-10-16 12:24 ` [PATCH v6 7/8] execmem: add support for cache of large ROX pages Mike Rapoport
2024-10-19 22:46 ` Luis Chamberlain
2024-10-16 12:24 ` [PATCH v6 8/8] x86/module: enable ROX caches for module text on 64 bit Mike Rapoport
2024-10-19 22:46 ` Luis Chamberlain
2024-10-19 22:51 ` [PATCH v6 0/8] x86/module: use large ROX pages for text allocations Luis Chamberlain
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=ZxD0EVBoO-jcxEGE@kernel.org \
--to=rppt@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=andreas@gaisler.com \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=bcain@quicinc.com \
--cc=bp@alien8.de \
--cc=bpf@vger.kernel.org \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=dave.hansen@linux.intel.com \
--cc=deller@gmx.de \
--cc=dinguyen@kernel.org \
--cc=geert@linux-m68k.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=guoren@kernel.org \
--cc=hch@infradead.org \
--cc=jcmvbkbc@gmail.com \
--cc=johannes@sipsolutions.net \
--cc=kent.overstreet@linux.dev \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-csky@vger.kernel.org \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-modules@vger.kernel.org \
--cc=linux-openrisc@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=mattst88@gmail.com \
--cc=mcgrof@kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=monstr@monstr.eu \
--cc=mpe@ellerman.id.au \
--cc=oleg@redhat.com \
--cc=palmer@dabbelt.com \
--cc=peterz@infradead.org \
--cc=richard@nod.at \
--cc=rostedt@goodmis.org \
--cc=shorne@gmail.com \
--cc=song@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=surenb@google.com \
--cc=tglx@linutronix.de \
--cc=tsbogend@alpha.franken.de \
--cc=urezki@gmail.com \
--cc=vgupta@kernel.org \
--cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).