Messages in this thread Patch in this message | | | Date | Fri, 24 Aug 2012 15:34:34 +0200 | From | Stephane Eranian <> | Subject | [PATCH] perf/x86: fix microcode revision check for SNB-PEBS |
| |
The following patch, relative to 3.6.0-rc3, makes the microcode update code path actually invoke the perf_check_microcode() function and thus potentially renabling SNB PEBS.
By default, CONFIG_MICROCODE_OLD_INTERFACE is forced to Y in arch/x86/Kconfig. There is no way to disable this. That means that the code path used in arch/x86/kernel/microcode_core.c did not include the call to perf_check_microcode().
Thus, even though the microcode was updated to a version that fixes the SNB PEBS problem, perf_event would still return EOPNOTSUPP when enabling precise sampling.
This patch simply adds a call to perf_check_microcode() in the call path used when OLD_INTERFACE=y.
Signed-off-by: Stephane Eranian <eranian@google.com> ---
--- a/arch/x86/kernel/microcode_core.c +++ b/arch/x86/kernel/microcode_core.c @@ -225,6 +225,9 @@ static ssize_t microcode_write(struct file *file, const char __user *buf, if (do_microcode_update(buf, len) == 0) ret = (ssize_t)len; + if (ret > 0) + perf_check_microcode(); + mutex_unlock(µcode_mutex); put_online_cpus();
| |