From: Ingo Molnar <mingo@elte.hu>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Anders H Kaseorg <andersk@MIT.EDU>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86_64: Patch paravirt inline replacements when loading modules
Date: Mon, 30 Jun 2008 12:15:14 +0200 [thread overview]
Message-ID: <20080630101514.GA31497@elte.hu> (raw)
In-Reply-To: <4866C62A.2060808@zytor.com>
* H. Peter Anvin <hpa@zytor.com> wrote:
> Anders H Kaseorg wrote:
>> On Sat, 28 Jun 2008, H. Peter Anvin wrote:
>>> Not having looked at this in detail, is this a *current* problem or a
>>> *future* problem, i.e. does it fix a bug that's currently in the
>>> kernel?
>>
>> It's a current problem. The current situation is that
>> .parainstructions are patched into the kernel core and modules on i386,
>> but only the kernel core on x86_64. This results in a slight
>> performance regression in x86_64 modules, compared to the situation
>> before .parainstructions existed. My patch restores full performance
>> of x86_64 modules.
>
> OK, it's a performance regression. I don't think it makes sense for
> 2.6.26, but it should definitely go into 2.6.27.
applied to tip/x86/modules - thanks Anders.
( Note: the patch had diff context tabs converted to spaces and other
whitespace damage, i fixed that up by hand for the patch to apply. See
Documentation/email-clients.txt about how to avoid it with future
patches. See the commit below in its final form. )
Ingo
---------->
commit 5e5a29bf2624a5984e1c36c3a2481ee91249ec9c
Author: Anders H Kaseorg <andersk@MIT.EDU>
Date: Sat Jun 28 18:25:41 2008 -0400
x86, 64-bit: patch paravirt inline replacements when loading modules
small speedup.
Paravirt replacements were added to the i386 module loader by commit
139ec7c416248b9ea227d21839235344edfee1e0. This adds the same code to
the x86_64 module loader.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Acked-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/arch/x86/kernel/module_64.c b/arch/x86/kernel/module_64.c
index a888e67..0e86767 100644
--- a/arch/x86/kernel/module_64.c
+++ b/arch/x86/kernel/module_64.c
@@ -150,7 +150,8 @@ int module_finalize(const Elf_Ehdr *hdr,
const Elf_Shdr *sechdrs,
struct module *me)
{
- const Elf_Shdr *s, *text = NULL, *alt = NULL, *locks = NULL;
+ const Elf_Shdr *s, *text = NULL, *alt = NULL, *locks = NULL,
+ *para = NULL;
char *secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
for (s = sechdrs; s < sechdrs + hdr->e_shnum; s++) {
@@ -160,6 +161,8 @@ int module_finalize(const Elf_Ehdr *hdr,
alt = s;
if (!strcmp(".smp_locks", secstrings + s->sh_name))
locks= s;
+ if (!strcmp(".parainstructions", secstrings + s->sh_name))
+ para = s;
}
if (alt) {
@@ -175,6 +178,11 @@ int module_finalize(const Elf_Ehdr *hdr,
tseg, tseg + text->sh_size);
}
+ if (para) {
+ void *pseg = (void *)para->sh_addr;
+ apply_paravirt(pseg, pseg + para->sh_size);
+ }
+
return module_bug_finalize(hdr, sechdrs, me);
}
prev parent reply other threads:[~2008-06-30 10:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-28 22:25 [PATCH] x86_64: Patch paravirt inline replacements when loading modules Anders H Kaseorg
2008-06-28 22:31 ` H. Peter Anvin
2008-06-28 22:45 ` Anders H Kaseorg
2008-06-28 23:15 ` H. Peter Anvin
2008-06-30 10:15 ` Ingo Molnar [this message]
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=20080630101514.GA31497@elte.hu \
--to=mingo@elte.hu \
--cc=andersk@MIT.EDU \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/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.