All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yu, Fenghua" <fenghua.yu@intel.com>
To: X86-ML <x86@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	LKML <linux-kernel@vger.kernel.org>,
	Andreas Herrmann <andreas.herrmann3@amd.com>,
	Borislav Petkov <borislav.petkov@amd.com>,
	Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
	Peter Zijlstra <peterz@infradead.org>
Subject: RE: [PATCH 1/2] x86, microcode: Sanitize per-cpu microcode reloading interface
Date: Tue, 19 Jun 2012 23:15:56 +0000	[thread overview]
Message-ID: <3E5A0FA7E9CA944F9D5414FEC6C712200773763E@ORSMSX105.amr.corp.intel.com> (raw)
In-Reply-To: <CANDHA0iu+QtQn=UxjpN34U=Ob4ABkZc4VWpPT5EidAgZm59JJQ@mail.gmail.com>

> From: Borislav Petkov <bp@amd64.org>
> Date: Tue, 19 Jun 2012 18:03:30 +0200
> Subject: [PATCH 1/2] x86, microcode: Sanitize per-cpu microcode
> reloading interface
> To: X86-ML <x86@kernel.org>
> Cc: "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@kernel.org>,
> Thomas Gleixner <tglx@linutronix.de>, LKML
> <linux-kernel@vger.kernel.org>, Andreas Herrmann
> <andreas.herrmann3@amd.com>, Borislav Petkov
> <borislav.petkov@amd.com>, Henrique de Moraes Holschuh
> <hmh@hmh.eng.br>, Peter Zijlstra <peterz@infradead.org>,
> stable@vger.kernel.org
> 
> From: Borislav Petkov <borislav.petkov@amd.com>
> 
> 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
> 
> Also, allowing the reload only from one CPU (the BSP in
> that case) doesn't allow the reload procedure to degenerate
> into an O(n^2) deal when triggering reloads from all
> /sys/devices/system/cpu/cpuX/microcode/reload sysfs nodes
> simultaneously.
> 
> A more generic fix will follow.
> 
> Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: stable@vger.kernel.org
> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
> ---
>  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;

With the /sys/devices/system/cpu/microcode/reload interface in your patch 2/2, this will be broken, right? With the new interface, reload_store() can be executed on any cpu or dev. I think you need to remove this check if working with the patch 2/2.

Thanks.

-Fenghua

  parent reply	other threads:[~2012-06-19 23:15 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-19 16:03 [PATCH 0/2] x86, microcode: Reload ucode only per-system Borislav Petkov
2012-06-19 16:03 ` [PATCH 1/2] x86, microcode: Sanitize per-cpu microcode reloading interface Borislav Petkov
2012-06-19 18:25   ` Henrique de Moraes Holschuh
     [not found]   ` <CANDHA0iu+QtQn=UxjpN34U=Ob4ABkZc4VWpPT5EidAgZm59JJQ@mail.gmail.com>
2012-06-19 23:15     ` Yu, Fenghua [this message]
2012-06-19 23:38       ` Borislav Petkov
2012-06-19 16:03 ` [PATCH 2/2] x86, microcode: Make reload interface per system Borislav Petkov
2012-06-19 18:26   ` Henrique de Moraes Holschuh
     [not found]   ` <CANDHA0jf2fLOtg1E6CbyNM=omn=kj=YoRJ3VTkNA0AhkS-MLtg@mail.gmail.com>
2012-06-19 23:10     ` Yu, Fenghua
2012-06-19 23:28       ` Borislav Petkov
2012-06-20  3:26         ` Henrique de Moraes Holschuh
2012-06-20  9:57           ` Borislav Petkov
2012-06-20 23:10             ` Henrique de Moraes Holschuh
2012-06-20  8:59         ` Peter Zijlstra
2012-06-20  9:56           ` Borislav Petkov
2012-06-20 10:08             ` Peter Zijlstra
2012-06-20 10:19               ` Borislav Petkov
2012-06-20 10:22                 ` Peter Zijlstra
2012-06-20 10:27                   ` Borislav Petkov
2012-06-20 10:33                     ` Peter Zijlstra
2012-06-20 11:09                       ` Borislav Petkov
2012-06-22 18:57                         ` H. Peter Anvin
2012-06-23  1:54                           ` Henrique de Moraes Holschuh
2012-06-23  2:26                             ` H. Peter Anvin
2012-06-20 23:21                   ` Henrique de Moraes Holschuh
2012-06-20 23:26                     ` Borislav Petkov
2012-06-22 16:26                 ` Nix
2012-06-22 18:21                   ` H. Peter Anvin
2012-06-23  1:32                     ` Henrique de Moraes Holschuh
2012-06-20 23:08           ` Henrique de Moraes Holschuh
2012-06-20 23:10             ` H. Peter Anvin
2012-06-20 23:23               ` Borislav Petkov
2012-06-20 23:27                 ` H. Peter Anvin
2012-06-20 23:32                   ` Borislav Petkov
2012-06-20 23:34                     ` H. Peter Anvin
2012-06-20 23:46                       ` Borislav Petkov
2012-06-20 23:48                         ` H. Peter Anvin
2012-06-21 10:07                           ` Borislav Petkov
2012-06-21 23:27                             ` H. Peter Anvin
2012-06-22  2:56                               ` Borislav Petkov
2012-06-22  3:19                                 ` H. Peter Anvin
2012-06-22  3:36                                   ` Borislav Petkov
2012-06-22  6:41                                     ` Markus Trippelsdorf
2012-06-20 23:59                         ` Henrique de Moraes Holschuh
2012-06-20 23:50                     ` Henrique de Moraes Holschuh
2012-06-21  0:02                       ` Henrique de Moraes Holschuh
2012-06-21  8:24             ` Peter Zijlstra
2012-06-21  9:58               ` Borislav Petkov
2012-06-21 23:28                 ` H. Peter Anvin
2012-06-21 23:00               ` Henrique de Moraes Holschuh
2012-06-22  3:01                 ` Borislav Petkov
2012-06-20 13:18         ` Borislav Petkov

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=3E5A0FA7E9CA944F9D5414FEC6C712200773763E@ORSMSX105.amr.corp.intel.com \
    --to=fenghua.yu@intel.com \
    --cc=andreas.herrmann3@amd.com \
    --cc=borislav.petkov@amd.com \
    --cc=hmh@hmh.eng.br \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --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 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.