mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
To: Borislav Petkov <bp@amd64.org>
Cc: LKML <linux-kernel@vger.kernel.org>, x86 <x86@kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Andreas Herrmann <andreas.herrmann3@amd.com>,
	Dimitri Sivanich <sivanich@sgi.com>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>,
	Greg Kroah-Hartman <greg@kroah.com>
Subject: Re: [PATCH] perf/x86: check ucode before disabling PEBS on SandyBridge
Date: Mon, 18 Jun 2012 23:42:50 -0300	[thread overview]
Message-ID: <20120619024250.GA6186@khazad-dum.debian.net> (raw)
In-Reply-To: <20120615123749.GC6083@aftab.osrc.amd.com>

On Fri, 15 Jun 2012, Borislav Petkov wrote:
> From: Borislav Petkov <borislav.petkov@amd.com>
> Date: Fri, 15 Jun 2012 14:19:55 +0200
> Subject: [PATCH] x86, microcode: Sanitize per-cpu microcode reloading
>  interface
> 
> Microcode reloading in a per-core manner is a very bad idea for both
> major x86 vendors. And the thing is, we have such interface with which
> we can end up with different microcode versions applied on different
> cores of an otherwise homogeneous wrt (family,model,stepping) system.
> 
> So turn off the possibility of doing that per core and allow it only
> system-wide.
> 
> This is a minimal fix which we'd like to see in stable too thus the
> more-or-less arbitrary decision to allow system-wide reloading only on
> the BSP:
> 
> $ echo 1 > /sys/devices/system/cpu/cpu0/microcode/reload
> ...
> 
> and disable the interface on the other cores:
> 
> $ echo 1 > /sys/devices/system/cpu/cpu23/microcode/reload
> -bash: echo: write error: Invalid argument
> 
> A more generic fix will follow.
> 
> Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
> Cc: stable@vger.kernel.org
> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>

Tested-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

I've actually backported this to 3.0 (trivial) and tested it there.

> ---
>  arch/x86/kernel/microcode_core.c | 26 +++++++++++++++++++-------
>  1 file changed, 19 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
> index fbdfc6917180..24b852b61be3 100644
> --- a/arch/x86/kernel/microcode_core.c
> +++ b/arch/x86/kernel/microcode_core.c
> @@ -298,19 +298,31 @@ static ssize_t reload_store(struct device *dev,
>  			    const char *buf, size_t size)
>  {
>  	unsigned long val;
> -	int cpu = dev->id;
> -	ssize_t ret = 0;
> +	int cpu;
> +	ssize_t ret = 0, tmp_ret;
> +
> +	/* allow reload only from the BSP */
> +	if (boot_cpu_data.cpu_index != dev->id)
> +		return -EINVAL;
>  
>  	ret = kstrtoul(buf, 0, &val);
>  	if (ret)
>  		return ret;
>  
> -	if (val == 1) {
> -		get_online_cpus();
> -		if (cpu_online(cpu))
> -			ret = reload_for_cpu(cpu);
> -		put_online_cpus();
> +	if (val != 1)
> +		return size;
> +
> +	get_online_cpus();
> +	for_each_online_cpu(cpu) {
> +		tmp_ret = reload_for_cpu(cpu);
> +		if (tmp_ret != 0)
> +			pr_warn("Error reloading microcode on CPU %d\n", cpu);
> +
> +		/* save retval of the first encountered reload error */
> +		if (!ret)
> +			ret = tmp_ret;
>  	}
> +	put_online_cpus();
>  
>  	if (!ret)
>  		ret = size;

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

  parent reply	other threads:[~2012-06-19  2:42 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-07  7:15 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
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                                           ` Henrique de Moraes Holschuh [this message]
2012-06-12 17:23                       ` [PATCH] perf/x86: check ucode before disabling PEBS on SandyBridge 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=20120619024250.GA6186@khazad-dum.debian.net \
    --to=hmh@hmh.eng.br \
    --cc=andreas.herrmann3@amd.com \
    --cc=bp@amd64.org \
    --cc=dmitry.adamushko@gmail.com \
    --cc=greg@kroah.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sivanich@sgi.com \
    --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

all inboxes | Powered by JetHome®