From: Ingo Molnar <mingo@elte.hu>
To: Dan Rosenberg <drosenberg@vsecurity.com>
Cc: linux-kernel@vger.kernel.org, davej@redhat.com,
kees.cook@canonical.com, davem@davemloft.net, eranian@google.com,
torvalds@linux-foundation.org, adobriyan@gmail.com,
penberg@kernel.org
Subject: Re: [BUG] perf: bogus correlation of kernel symbols
Date: Fri, 20 May 2011 20:35:16 +0200 [thread overview]
Message-ID: <20110520183516.GA18322@elte.hu> (raw)
In-Reply-To: <1305913261.20623.12.camel@dan>
* Dan Rosenberg <drosenberg@vsecurity.com> wrote:
> On Fri, 2011-05-20 at 15:11 +0200, Ingo Molnar wrote:
>
> > We need to allocate the IDT dynamically: just kmalloc() it, update idt_descr
> > and do a load_idt(). Double check places that modify idt_descr or use
> > idt_table.
> >
> > Note, you could do this as a side effect of a nice performance optimization:
> > would you be interested in allocating it in the percpu area, using
> > percpu_alloc()? That way the IDT is distributed between CPUs - this has
> > scalability advantages on NUMA systems and maybe even on SMP.
> >
>
> Any suggestions on when this allocation should take place? I'm hesitant to
> touch anything in arch/x86/kernel/head_32.S, where the IDT is setup and lidt
> idt_descr is called (on x86-32 anyway). That means at some point I'd have to
> copy the table into a region allocated with alloc_percpu() and set up a new
> descriptor. Seems like this should happen before IRQ is enabled, but I'm not
> sure about the best place.
I think there's a static percpu area that can be used pretty early on.
The boot IDT can be marked __initdata so its space wont be wasted.
The thing is, until SMP is not initialized the boot IDT can be kept. So i'd
suggest allocating per CPU IDTs after memory has initialized. For that a pretty
good place is trap_init(): there we already have the page allocator initialized
and probably the percpu allocator too. IDT allocation is also pretty naturally
done in trap_init().
> Also, I'd still welcome suggestions on generating entropy so early in the
> boot process as to randomize the location at which the kernel is
> decompressed.
>
> On a related note, would there be obstacles to marking the IDT as read-only?
The cost is that its access TLB may change from a 2MB TB to a 4K TLB. We
generally try to keep critical data structures in 2MB mapped areas.
But this is really hard to measure (you'd have to have a borderline workload
where the loss of a single 4K TLB is measurable) so i'd suggest splitting this
from the randomization step.
Thanks,
Ingo
next prev parent reply other threads:[~2011-05-20 18:35 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1305292059.1949.0.camel@dan>
2011-05-13 13:29 ` [BUG] perf: bogus correlation of kernel symbols Dan Rosenberg
2011-05-16 15:35 ` Ingo Molnar
2011-05-16 16:14 ` Dan Rosenberg
2011-05-20 0:56 ` Dan Rosenberg
2011-05-20 12:07 ` Ingo Molnar
2011-05-20 12:54 ` Dan Rosenberg
2011-05-20 13:11 ` Ingo Molnar
2011-05-20 17:41 ` Dan Rosenberg
2011-05-20 18:14 ` Linus Torvalds
2011-05-20 18:27 ` Kees Cook
2011-05-20 18:34 ` Dan Rosenberg
2011-05-20 18:42 ` Ingo Molnar
2011-05-20 18:28 ` Ingo Molnar
2011-05-22 6:11 ` david
2011-05-20 18:35 ` Ingo Molnar [this message]
2011-05-22 18:45 ` Dan Rosenberg
[not found] ` <BANLkTik1SK_kWVvGsKk0SqdByQ5-0b5nFg@mail.gmail.com>
2011-05-23 0:25 ` Dan Rosenberg
2011-05-23 0:37 ` H. Peter Anvin
2011-05-23 10:49 ` Ingo Molnar
2011-05-23 19:02 ` Ray Lee
2011-05-23 19:35 ` Ingo Molnar
2011-05-24 1:59 ` Valdis.Kletnieks
2011-05-24 4:06 ` Ingo Molnar
2011-05-12 14:48 Stephane Eranian
2011-05-12 18:06 ` David Miller
2011-05-12 18:37 ` Dave Jones
2011-05-12 19:01 ` David Miller
2011-05-12 19:58 ` Pekka Enberg
2011-05-13 6:12 ` Kees Cook
2011-05-13 6:24 ` Pekka Enberg
2011-05-12 20:24 ` Alexey Dobriyan
2011-05-12 21:06 ` Ingo Molnar
2011-05-12 20:31 ` Linus Torvalds
2011-05-12 20:43 ` David Miller
2011-05-12 21:07 ` Stephane Eranian
2011-05-12 21:30 ` Stephane Eranian
2011-05-12 21:35 ` Ingo Molnar
2011-05-12 21:38 ` Stephane Eranian
2011-05-12 21:50 ` Ingo Molnar
2011-05-12 21:56 ` Stephane Eranian
2011-05-12 22:00 ` Ingo Molnar
2011-05-12 22:07 ` Dave Jones
2011-05-12 22:15 ` Stephane Eranian
2011-05-13 9:01 ` Ingo Molnar
2011-05-13 8:57 ` Ingo Molnar
2011-05-13 16:23 ` Andi Kleen
2011-05-17 12:17 ` Ingo Molnar
2011-05-12 21:36 ` Ingo Molnar
2011-05-12 21:41 ` Stephane Eranian
2011-05-12 21:54 ` Ingo Molnar
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=20110520183516.GA18322@elte.hu \
--to=mingo@elte.hu \
--cc=adobriyan@gmail.com \
--cc=davej@redhat.com \
--cc=davem@davemloft.net \
--cc=drosenberg@vsecurity.com \
--cc=eranian@google.com \
--cc=kees.cook@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).