From: Peter Zijlstra <peterz@infradead.org>
To: Stephane Eranian <eranian@google.com>
Cc: Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org, andi@firstfloor.org, mingo@elte.hu,
ming.m.lin@intel.com,
Andreas Herrmann <andreas.herrmann3@amd.com>,
Borislav Petkov <borislav.petkov@amd.com>,
Dimitri Sivanich <sivanich@sgi.com>,
Dmitry Adamushko <dmitry.adamushko@gmail.com>
Subject: Re: [PATCH] perf/x86: check ucode before disabling PEBS on SandyBridge
Date: Fri, 08 Jun 2012 16:13:05 +0200 [thread overview]
Message-ID: <1339164785.2507.23.camel@laptop> (raw)
In-Reply-To: <CABPqkBQprykpCH=A4VQhNAc2j8JQm3Z0d_EV=Nb3bV1QZ_++nw@mail.gmail.com>
On Fri, 2012-06-08 at 16:07 +0200, Stephane Eranian wrote:
> > The very worst is that it does per-cpu micro-code updates, not machine
> > wide. This results in it being able to have different revisions on
> > different cpus. This in turn makes the below O(n^2) :/
> >
> But it's not like this is a frequent operation either...
Still Dimitri did a patch 938179b4f8cf8 ("x86: Improve Intel microcode
loader performance") to improve the performance of it, so apparently
they do care some.
> > ---
> > diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
> > index 4ebe157..1cd2dc5 100644
> > --- a/arch/x86/include/asm/microcode.h
> > +++ b/arch/x86/include/asm/microcode.h
> > @@ -63,4 +64,15 @@ static inline struct microcode_ops * __init init_amd_microcode(void)
> > static inline void __exit exit_amd_microcode(void) {}
> > #endif
> >
> > +extern struct blocking_notifier_head microcode_notifier;
> > +
> That is a problem because microcode can be compiled as a module.
> When I tried compiling your patch I got undefined for this notifier because
> I have microcode update as a module...
>
> > +#define MICROCODE_CAN_UPDATE 0x01
> > +#define MICROCODE_UPDATED 0x02
> > +
> > +#define microcode_notifier(fn) \
> > +do { \
> > + static struct notifier_block fn##_nb ={ .notifier_call = fn }; \
> > + blocking_notifier_chain_register(µcode_notifier, &fn##_nb);\
> > +} while (0)
> > +
> > #endif /* _ASM_X86_MICROCODE_H */
But that's ourside of CONFIG_MICROCODE and...
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index f4b9b80..98b5b5c 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -68,6 +68,7 @@
> > #include <linux/percpu.h>
> > #include <linux/crash_dump.h>
> > #include <linux/tboot.h>
> > +#include <linux/notifier.h>
> >
> > #include <video/edid.h>
> >
> > @@ -205,6 +206,10 @@ struct cpuinfo_x86 boot_cpu_data __read_mostly = {
> > EXPORT_SYMBOL(boot_cpu_data);
> > #endif
> >
> > +/*
> > + * Lives here because the microcode stuff is modular.
> > + */
> > +struct atomic_notifier_head microcode_notifier;
s/atomic_/blocking_/ -- forgot a refresh there..
> > #if !defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64)
> > unsigned long mmu_cr4_features;
So that all should build.. weird.. I'll give it a go.
next prev parent reply other threads:[~2012-06-08 14:13 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-07 7:15 [PATCH] perf/x86: check ucode before disabling PEBS on SandyBridge Stephane Eranian
2012-06-07 10:18 ` Peter Zijlstra
2012-06-07 10:35 ` Stephane Eranian
2012-06-07 10:45 ` Peter Zijlstra
2012-06-07 10:48 ` Stephane Eranian
2012-06-07 11:15 ` Peter Zijlstra
2012-06-08 9:35 ` Ingo Molnar
2012-06-08 10:00 ` Peter Zijlstra
2012-06-08 10:03 ` Stephane Eranian
2012-06-08 13:26 ` Peter Zijlstra
2012-06-08 13:51 ` Borislav Petkov
2012-06-08 13:54 ` Peter Zijlstra
2012-06-08 14:15 ` Borislav Petkov
2012-06-08 14:20 ` Peter Zijlstra
2012-06-08 14:36 ` Borislav Petkov
2012-06-08 14:45 ` Peter Zijlstra
2012-06-08 15:09 ` Borislav Petkov
2012-06-08 13:56 ` Peter Zijlstra
2012-06-08 14:03 ` Borislav Petkov
2012-06-08 13:59 ` Peter Zijlstra
2012-06-08 14:03 ` Stephane Eranian
2012-06-08 14:17 ` Borislav Petkov
2012-06-08 16:02 ` H. Peter Anvin
2012-06-08 21:02 ` Henrique de Moraes Holschuh
2012-06-08 21:16 ` Borislav Petkov
2012-06-08 14:07 ` Stephane Eranian
2012-06-08 14:13 ` Peter Zijlstra [this message]
2012-06-08 14:19 ` Borislav Petkov
2012-06-08 14:23 ` Peter Zijlstra
2012-06-08 14:26 ` Stephane Eranian
2012-06-08 14:25 ` Peter Zijlstra
2012-06-08 14:26 ` Stephane Eranian
2012-06-12 8:14 ` Stephane Eranian
2012-06-08 16:28 ` Stephane Eranian
2012-06-08 18:49 ` Peter Zijlstra
2012-06-08 16:50 ` Andi Kleen
2012-06-08 18:05 ` Borislav Petkov
2012-06-08 18:52 ` Peter Zijlstra
2012-06-08 20:38 ` Borislav Petkov
2012-06-12 17:07 ` Robert Richter
2012-06-12 17:09 ` Stephane Eranian
2012-06-12 17:13 ` Peter Zijlstra
2012-06-12 17:17 ` Borislav Petkov
2012-06-12 17:18 ` Peter Zijlstra
2012-06-12 17:23 ` Borislav Petkov
2012-06-12 17:26 ` Peter Zijlstra
2012-06-12 17:35 ` Borislav Petkov
2012-06-12 17:40 ` Peter Zijlstra
2012-06-12 18:04 ` Andi Kleen
2012-06-12 20:10 ` Borislav Petkov
2012-06-13 1:04 ` Henrique de Moraes Holschuh
2012-06-13 6:51 ` Borislav Petkov
2012-06-13 12:36 ` Henrique de Moraes Holschuh
2012-06-13 16:11 ` Borislav Petkov
2012-06-13 21:41 ` Henrique de Moraes Holschuh
2012-06-15 12:37 ` Borislav Petkov
2012-06-15 12:42 ` Peter Zijlstra
2012-06-15 12:52 ` Borislav Petkov
2012-06-15 16:52 ` [PATCH] x86, microcode: Make reload interface per system Borislav Petkov
2012-06-15 17:16 ` Peter Zijlstra
2012-06-15 17:49 ` Borislav Petkov
2012-06-19 2:46 ` Henrique de Moraes Holschuh
2012-06-19 3:31 ` H. Peter Anvin
2012-06-19 5:11 ` Borislav Petkov
2012-06-19 8:17 ` Peter Zijlstra
2012-06-19 10:22 ` Borislav Petkov
2012-06-19 10:26 ` Peter Zijlstra
2012-06-19 15:06 ` Borislav Petkov
2012-06-19 15:57 ` H. Peter Anvin
2012-06-19 18:22 ` Henrique de Moraes Holschuh
2012-06-19 20:22 ` H. Peter Anvin
2012-06-20 23:46 ` Henrique de Moraes Holschuh
2012-06-20 23:49 ` H. Peter Anvin
2012-06-21 0:06 ` Henrique de Moraes Holschuh
2012-06-21 0:18 ` H. Peter Anvin
2012-06-21 2:33 ` Henrique de Moraes Holschuh
2012-06-19 5:03 ` Borislav Petkov
2012-06-19 18:57 ` Henrique de Moraes Holschuh
2012-06-19 22:19 ` Borislav Petkov
2012-06-19 2:42 ` [PATCH] perf/x86: check ucode before disabling PEBS on SandyBridge Henrique de Moraes Holschuh
2012-06-12 17:23 ` Robert Richter
2012-06-12 17:15 ` Borislav Petkov
2012-06-07 13:28 ` Andi Kleen
2012-06-07 13:27 ` Andi Kleen
2012-06-12 18:35 ` H. Peter Anvin
2012-06-12 19:07 ` Borislav Petkov
2012-06-12 19:33 ` Peter Zijlstra
2012-06-12 19:35 ` Andi Kleen
2012-06-12 19:49 ` Borislav Petkov
2012-06-12 20:28 ` H. Peter Anvin
2012-06-12 20:37 ` Borislav Petkov
2012-06-12 20:42 ` H. Peter Anvin
2012-06-12 20:56 ` Borislav Petkov
2012-06-12 20:58 ` H. Peter Anvin
2012-06-12 21:04 ` Borislav Petkov
2012-06-13 8:38 ` Peter Zijlstra
2012-06-13 14:00 ` H. Peter Anvin
2012-06-13 15:37 ` Peter Zijlstra
2012-06-13 15:46 ` H. Peter Anvin
2012-06-13 12:39 ` Peter Zijlstra
2012-06-13 13:22 ` H. Peter Anvin
2012-06-13 14:01 ` Henrique de Moraes Holschuh
2012-06-13 8:32 ` Peter Zijlstra
2012-06-13 13:59 ` H. Peter Anvin
2012-06-13 15:32 ` Peter Zijlstra
2012-06-13 15:38 ` H. Peter Anvin
2012-06-12 20:27 ` H. Peter Anvin
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=1339164785.2507.23.camel@laptop \
--to=peterz@infradead.org \
--cc=andi@firstfloor.org \
--cc=andreas.herrmann3@amd.com \
--cc=borislav.petkov@amd.com \
--cc=dmitry.adamushko@gmail.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.m.lin@intel.com \
--cc=mingo@elte.hu \
--cc=mingo@kernel.org \
--cc=sivanich@sgi.com \
/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