From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752381AbeBUS0L (ORCPT ); Wed, 21 Feb 2018 13:26:11 -0500 Received: from mx2.suse.de ([195.135.220.15]:44118 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751890AbeBUS0J (ORCPT ); Wed, 21 Feb 2018 13:26:09 -0500 Date: Wed, 21 Feb 2018 19:25:53 +0100 From: Borislav Petkov To: Ashok Raj Cc: X86 ML , LKML , Thomas Gleixner , Ingo Molnar , Tony Luck , Andi Kleen , Tom Lendacky , Arjan Van De Ven Subject: Re: [PATCH 2/3] x86/microcode/intel: Perform a cache flush before ucode update. Message-ID: <20180221182553.GD16888@pd.tnic> References: <1519231784-9941-1-git-send-email-ashok.raj@intel.com> <1519231784-9941-3-git-send-email-ashok.raj@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1519231784-9941-3-git-send-email-ashok.raj@intel.com> User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 21, 2018 at 08:49:43AM -0800, Ashok Raj wrote: > Microcode updates can be safer if the caches are clean. > Some of the issues around in certain Broadwell parts > can be addressed by doing a full cache flush. Take that text... > > Signed-off-by: Ashok Raj > Cc: X86 ML > Cc: LKML > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: Tony Luck > Cc: Andi Kleen > Cc: Boris Petkov > Cc: Tom Lendacky > Cc: Arjan Van De Ven > --- > arch/x86/kernel/cpu/microcode/intel.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c > index eff80df..5d32724 100644 > --- a/arch/x86/kernel/cpu/microcode/intel.c > +++ b/arch/x86/kernel/cpu/microcode/intel.c > @@ -589,6 +589,7 @@ static int apply_microcode_early(struct ucode_cpu_info *uci, bool early) > if (!mc) > return 0; > ... and put it here as a comment. > + wbinvd(); This definitely needs to be native_wbinvd(). Early mode don't love pvops. > /* write microcode via MSR 0x79 */ > native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits); > > @@ -805,6 +806,7 @@ static enum ucode_state apply_microcode_intel(int cpu) > return UCODE_OK; > } Ditto. > + wbinvd(); > /* write microcode via MSR 0x79 */ > wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits); > > -- > 2.7.4 > -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --