Message ID | 20221205080433.16643-2-jgross@suse.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp2121992wrr; Mon, 5 Dec 2022 00:08:34 -0800 (PST) X-Google-Smtp-Source: AA0mqf7SjYDBJdfORbsVDdJnpAT7vsOhL8Ll4zamD1rwocCoxe+s+3a0Y1tnXcKnPsR/c9wPyUuD X-Received: by 2002:a17:906:a052:b0:7be:beb3:1343 with SMTP id bg18-20020a170906a05200b007bebeb31343mr31578274ejb.211.1670227714352; Mon, 05 Dec 2022 00:08:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670227714; cv=none; d=google.com; s=arc-20160816; b=gcDa7MFjvvKnXAtFXZn/kR0ZyOuahR8nMiDlRAgwzlZMZq3bmwrHhNRf/geEPbLt3p zbAnSLq7KL9WpAWYbUKibI3/YkPzgKM4l+2LeGN9TXfeIPZgu25pHU5f2EHg8hwijZbY 8hSGmIDOyEBVRWOy2lYA4lQeuhbPcNenERAIeSh/0uFffT5S5lpw4j+22QSpNbkULerZ jIW2zaJCg1trqhSxGsRZ5/5pZ08BeooUtzX2xdgOqVtLefrFnraPx25Ns1ouPdj53VXM 1uQLKY4g/Yva+fHgewFqVEumG2t4sbqmbc07T8dNDioERUmmmK0KaGu9fcJaTUbUFrz5 GYLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+9UFnWEsICEtCyId1TzW8C4ccar29YwckOATn38tDiw=; b=IOIrnbZ6poX0XFTDPBNe/a+0PyjID+6Im1LqPBD2y4R7MUogAZPuXNgVggwSaAqBTO zHYJjHMTCFZqbS66hn4HQQ8Q4iztowXvm+sobC+uBRUBndxmDD/URM2EAvMeoLxVD494 j1WhBCjfdIDgOEZv/Re2dr8vii31GbHWHTIM7H8GNJagN/OYkfmutBWad262PWuHUKaY 8C/fI8KRHmiB9tnS790ILdvtFhpuTBzqFv/rWAN8VJxqYQMYNjToJqZw8uOYDU/lUms7 3Dii2NJIPhX5KaVyC9+M2yclXweBS814DH5mdJjOs+4ASlUBRhMN+ucD9wjU/vAagP32 g8Zg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=pO6y6QFU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g15-20020a056402428f00b004690009024csi9435740edc.503.2022.12.05.00.08.10; Mon, 05 Dec 2022 00:08:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=pO6y6QFU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231886AbiLEIF0 (ORCPT <rfc822;jaysivo@gmail.com> + 99 others); Mon, 5 Dec 2022 03:05:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231882AbiLEIEs (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 5 Dec 2022 03:04:48 -0500 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84763140D7 for <linux-kernel@vger.kernel.org>; Mon, 5 Dec 2022 00:04:43 -0800 (PST) Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 1513B21B30; Mon, 5 Dec 2022 08:04:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1670227482; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+9UFnWEsICEtCyId1TzW8C4ccar29YwckOATn38tDiw=; b=pO6y6QFUlTqijBrInKYHUEnIhEnSLLUc9IenM86QzWIn/AAPg95/z1L9PMUW/1jQHnkYXi GvuTTYnkXCfdpt4b+UqyQtJwhCKaji1r7Q3IHxcfKHO5pGMZSoqv9AeNAOq+KzBDbm1oBD QS1qlxF2qkQRFKYw1WHIhU53Z/oTulA= Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id B99EF1348F; Mon, 5 Dec 2022 08:04:41 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id rxn4KxmmjWNCNAAAGKfGzw (envelope-from <jgross@suse.com>); Mon, 05 Dec 2022 08:04:41 +0000 From: Juergen Gross <jgross@suse.com> To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: kirill@shutemov.name, Juergen Gross <jgross@suse.com>, Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com> Subject: [PATCH 1/2] x86/pat: fix TDX guest PAT initialization Date: Mon, 5 Dec 2022 09:04:32 +0100 Message-Id: <20221205080433.16643-2-jgross@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20221205080433.16643-1-jgross@suse.com> References: <20221205080433.16643-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751360695610179118?= X-GMAIL-MSGID: =?utf-8?q?1751360695610179118?= |
Series |
x86: fixes for MTRR/PAT decoupling
|
|
Commit Message
Juergen Gross
Dec. 5, 2022, 8:04 a.m. UTC
With the decoupling of PAT and MTRR initialization, PAT will be used
even with MTRRs disabled. This seems to break booting up as TDX guest,
as the recommended sequence to set the PAT MSR across CPUs can't work
in TDX guests due to disabling caches via setting CR0.CD isn't allowed
in TDX mode.
This is an inconsistency in the Intel documentation between the SDM
and the TDX specification. For now handle TDX mode the same way as Xen
PV guest mode by just accepting the current PAT MSR setting without
trying to modify it.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
arch/x86/mm/pat/memtype.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Comments
On Mon, Dec 05, 2022 at 09:04:32AM +0100, Juergen Gross wrote: > With the decoupling of PAT and MTRR initialization, PAT will be used > even with MTRRs disabled. This seems to break booting up as TDX guest, > as the recommended sequence to set the PAT MSR across CPUs can't work > in TDX guests due to disabling caches via setting CR0.CD isn't allowed > in TDX mode. > > This is an inconsistency in the Intel documentation between the SDM > and the TDX specification. For now handle TDX mode the same way as Xen > PV guest mode by just accepting the current PAT MSR setting without > trying to modify it. > > Signed-off-by: Juergen Gross <jgross@suse.com> Good enough for now. I will follow up if something comes up from the discussion around the topic. Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > --- > arch/x86/mm/pat/memtype.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c > index 9aab17d660cd..4e50add760ad 100644 > --- a/arch/x86/mm/pat/memtype.c > +++ b/arch/x86/mm/pat/memtype.c > @@ -296,8 +296,12 @@ void __init pat_bp_init(void) > /* > * Xen PV doesn't allow to set PAT MSR, but all cache modes are > * supported. > + * When running as TDX guest setting the PAT MSR won't work either > + * due to the requirement to set CR0.CD when doing so. Rely on > + * firmware to have set the PAT MSR correctly. s/firmware/TDX module/ > */ > - if (pat_disabled || cpu_feature_enabled(X86_FEATURE_XENPV)) { > + if (pat_disabled || cpu_feature_enabled(X86_FEATURE_XENPV) || > + cpu_feature_enabled(X86_FEATURE_TDX_GUEST)) { > init_cache_modes(pat_msr_val); > return; > }
diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c index 9aab17d660cd..4e50add760ad 100644 --- a/arch/x86/mm/pat/memtype.c +++ b/arch/x86/mm/pat/memtype.c @@ -296,8 +296,12 @@ void __init pat_bp_init(void) /* * Xen PV doesn't allow to set PAT MSR, but all cache modes are * supported. + * When running as TDX guest setting the PAT MSR won't work either + * due to the requirement to set CR0.CD when doing so. Rely on + * firmware to have set the PAT MSR correctly. */ - if (pat_disabled || cpu_feature_enabled(X86_FEATURE_XENPV)) { + if (pat_disabled || cpu_feature_enabled(X86_FEATURE_XENPV) || + cpu_feature_enabled(X86_FEATURE_TDX_GUEST)) { init_cache_modes(pat_msr_val); return; }