Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp1532221rdh; Mon, 25 Sep 2023 16:15:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGF634B3TqSxvKBApdqOv2vdAAu/GXzvg8U2Xe88hXOdtl30WvV2WefcZuMICcTNIlrnsGD X-Received: by 2002:a17:902:d2d0:b0:1c6:d70:1461 with SMTP id n16-20020a170902d2d000b001c60d701461mr7219552plc.22.1695683740674; Mon, 25 Sep 2023 16:15:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695683740; cv=none; d=google.com; s=arc-20160816; b=kEeNMBqdgNrJ0EnX9Kkb887GL4j+bCPeA0bIsiPEUVUIq0dhraegV5NEmeh53JxFWJ eV0X+TAclEEQVB/bcDTg4JF4YgOG5Z5mqwcrrFCBFJ8xhO5KPs6KnOKdQp1r77xHMAuS nGUgEQRdICLUuBY9KgXCyhgC/BXWEIhTrqPled566Hy52Ml2ZC6Luy0RzewCfFstIgYK PyWE24O95XU5inCtQAmImpaZ9i5RfPepiNny9+jaLMeybxR8Dk6qmG7BeNLaHBASGy+n lrglbUURE7UVurKauwYVyPUMKmCHDb5/k3XR6cM8D51fySQKiwYgLGwUfPP+GNm4kj3K RQ6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=4KO4QJHW6PfFsx+5yRwDz5xbGxZN1cHc6p8Iy3dj+tQ=; fh=3L38T1NWC9ukAlPGjlSyJ1VKL9aRsuaiE+y6LgJt29s=; b=r0NKe77Fup+bkJXroZxTHTw/vVzQNiHr0JOQnFmeeycl8S3u4Xfm/xaJ5my4s6Mb/x rb5l1RRlTa2ALWmIAFpeH8Fjl+iKqh0f7gI+YfCkF/Zemd6biT0uYQuLPmf8mCqT8dF4 0YYaaLoXfqCbMbgbMHl+4obkpW8+0BfR+yDLJnb8BU89SLaD5kg1kDkUuQObQazAPXvx vZxZN6xZnAb81PBrbVVceh5fVosAK6fsFkcpBiGMXaLHy19uZzRCOjuzfRQP7ksBzaXd Cp5lPT9HW02oPt1z+FJFdnKb9o/ZAicfabB/kvJOVGbUrKn80qm0nTq3VYAGg/3L/3uc Zmzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=P9Ud3M5P; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id f12-20020a170902ce8c00b001bdd35033efsi455137plg.374.2023.09.25.16.15.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 16:15:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=P9Ud3M5P; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 19F1F8069F09; Mon, 25 Sep 2023 09:20:59 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233218AbjIYQU5 (ORCPT + 99 others); Mon, 25 Sep 2023 12:20:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233192AbjIYQUz (ORCPT ); Mon, 25 Sep 2023 12:20:55 -0400 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B952B8 for ; Mon, 25 Sep 2023 09:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695658849; x=1727194849; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=Yf7IcjRJVtzW/bXfGeBPr9SsluJ6EaaPaNr8xdAnOcQ=; b=P9Ud3M5PX4tWZVOhrX96nlHP0RRdKeS648Imq6zkrb4bksAaF9y/uQyX 1NhzTG9Vpmj1G3hjGu2eWfosNtAMwH8JOiLYc8uU9hLulkG3mPUYSTRVf lbxko1/jRGlXLmjo09vmbrnywuA8WJLV6J33Cm7UE7SKF7ZiynA6hii7e 3ObL7OZ6UWgZNZazVflYV4Kzjm+KuVnykIDe2RdYmN20aMtaqQZHvic9n AkzMJU4XcjfmhckBJzM+XmZHn+aRzZlFGnt+WghOxhbGXDNOKTtplXH07 /Ctq+O6uzSw2VCkndzC2KPhP394+1krK4BA8/Op2cZf6wjqwqXe2xbER5 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10843"; a="378576643" X-IronPort-AV: E=Sophos;i="6.03,175,1694761200"; d="scan'208";a="378576643" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2023 09:20:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10843"; a="838610701" X-IronPort-AV: E=Sophos;i="6.03,175,1694761200"; d="scan'208";a="838610701" Received: from qiuxu-clx.sh.intel.com ([10.239.53.109]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2023 09:20:39 -0700 From: Qiuxu Zhuo To: tglx@linutronix.de Cc: arjan@linux.intel.com, ashok.raj@intel.com, bp@alien8.de, chang.seok.bae@intel.com, linux-kernel@vger.kernel.org, nik.borisov@suse.com, x86@kernel.org, qiuxu.zhuo@intel.com Subject: Re: [patch V3 30/30] x86/microcode/intel: Add a minimum required revision for late-loads Date: Tue, 26 Sep 2023 00:20:32 +0800 Message-Id: <20230925162032.56408-1-qiuxu.zhuo@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230912065502.631634574@linutronix.de> References: <20230912065502.631634574@linutronix.de> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 25 Sep 2023 09:20:59 -0700 (PDT) > ... > From: Ashok Raj > > In general users don't have the necessary information to determine whether > late loading of a new microcode version is safe and does not modify > anything which the currently running kernel uses already, e.g. removal of > CPUID bits or behavioural changes of MSRs. > ... > > The check is always enabled, but by default not enforced. It can be > enforced via Kconfig or kernel command line. > > If enforced, the kernel refuses to late load microcode with a minium s/minium/minimum/ > required version field which is zero or when the currently loaded microcode > revision is smaller than the minimum required revision. > > ... > --- a/arch/x86/kernel/cpu/microcode/intel.c > +++ b/arch/x86/kernel/cpu/microcode/intel.c > @@ -463,16 +463,40 @@ static enum ucode_state apply_microcode_ > return ret; > } > > +static bool ucode_validate_minrev(struct microcode_header_intel *mc_header) > +{ > + int cur_rev = boot_cpu_data.microcode; > + > + /* > + * When late-loading, ensure the header declares a minimum revision > + * required to perform a late-load. The previously reserved field > + * is 0 in older microcode blobs. > + */ > + if (!mc_header->min_req_ver) { > + pr_info("Unsafe microcode update: Microcode header does not specify a required min version\n"); > + return false; > + } > + > + /* > + * Check whether the minimum revision specified in the header is either > + * greater or equal to the current revision. > + */ Seems like the above comment doesn't match the following 'if' check. Perhaps the comment is: "Check whether the current revision is either greater or equal to the minimum revision specified in the header." > + if (cur_rev < mc_header->min_req_ver) { > + pr_info("Unsafe microcode update: Current revision 0x%x too old\n", cur_rev); > + pr_info("Current should be at 0x%x or higher. Use early loading instead\n", mc_header->min_req_ver); > + return false; > + } > + return true; > +} > ...