Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp3651764rwb; Mon, 16 Jan 2023 10:52:12 -0800 (PST) X-Google-Smtp-Source: AMrXdXuDUJjXYn3alxomi4yjRfPuuwlIWL7P00YH6W9vzoFxLuJTxXNlAbSoHBCIQYCZiVziB5Uc X-Received: by 2002:a17:906:e116:b0:7c1:2a0f:55b1 with SMTP id gj22-20020a170906e11600b007c12a0f55b1mr66638ejb.14.1673895132204; Mon, 16 Jan 2023 10:52:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673895132; cv=none; d=google.com; s=arc-20160816; b=qzkSn7pKrKiUdosyeXvEb7zCLnsg6Enm310T+nA6OADjCBDhnJ4/ZiGj72haCYw2iM e+lbnIzG7HcDUggyngzTb2cOg+onNvEY/+sDgbNNH8MRH22BgzwsrQ7WX5kblugZCENI 7JarAZ4yTihtHQwZar69j1HrS12mYWeLZmIR2RuH5Ey3RiAWsUpHs3W32Ca8sb5zgDHa +5xYn7Qk/AOZBm8um3qx/6RDK6sjvYF470hHCs83oJtSrbXx1TbpBR+E3Q+W1gA9gyKo PHc6Qd+ZQ5ohTTUSZUKJruMCteeUbm1AnFxZJiiTcjGOKQWesCQdgS1kKVXlTMU+IiZ1 /ozg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=i/kh1ilFTWPtG8UywoZ6jYpIHXmqf2pU9jgg6W4/tcs=; b=L9GbuSkUYWD2mpXPxYxDI7wQcBC+7HdRKgZzJ1rcOCeSC6czvM9PSyf2UY9PMY5LNb /g12qD4vCkZdHsD31bhAgTMt64DtleHG2zFFHx+tNh4ZZRQZzYJL4+vDDVgeFHIqAoSe QYmwjF3W2+kNEuyTJ2YJu1peS81Qum79Y0kSk6LfhB8sOictYsyNJ+185XL+U+7FVfyy MibgLJOQN9/Q8/Y9y8mNuakjb/b9JXtq89qRpCnJaKkEEiE+xwPlM6st5U9JVcB/GuMA 4WBkDH+b4FgyjIqlQUXD8hO0lr1S4C3Sq39GCd4j7XBdYuMiYZJB9411K9Say/LNiHaX 9kBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=BRT1B4yy; 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=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wg5-20020a17090705c500b0084d5de1fc0asi6096426ejb.606.2023.01.16.10.51.58; Mon, 16 Jan 2023 10:52:12 -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=@alien8.de header.s=dkim header.b=BRT1B4yy; 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=NONE sp=NONE dis=NONE) header.from=alien8.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234256AbjAPS1N (ORCPT + 50 others); Mon, 16 Jan 2023 13:27:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233024AbjAPS0l (ORCPT ); Mon, 16 Jan 2023 13:26:41 -0500 Received: from mail.skyhub.de (mail.skyhub.de [5.9.137.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 958EC3A58B; Mon, 16 Jan 2023 10:13:21 -0800 (PST) Received: from zn.tnic (p5de8e9fe.dip0.t-ipconnect.de [93.232.233.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 177A81EC054E; Mon, 16 Jan 2023 19:13:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1673892800; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i/kh1ilFTWPtG8UywoZ6jYpIHXmqf2pU9jgg6W4/tcs=; b=BRT1B4yyAW2z+g8WbQ/stM+fatfcjgjLyNkdp+OUWrixORtyBSH0Kh6dDVwJm6rM+DnuXk mXc5FpQRMgx5fR09DlWEwDIqF6jYvwkasW8eQ0P0kvsYtUkOoGPp6YnAyL56laqkWWepY8 QrALCXN4/E/JMamNCWpaqbRcjCGGeoA= Date: Mon, 16 Jan 2023 19:13:15 +0100 From: Borislav Petkov To: Kim Phillips , Dave Hansen Cc: x86@kernel.org, Boris Ostrovsky , "H. Peter Anvin" , Ingo Molnar , Joao Martins , Jonathan Corbet , Konrad Rzeszutek Wilk , Paolo Bonzini , Sean Christopherson , Thomas Gleixner , David Woodhouse , Greg Kroah-Hartman , Juergen Gross , Peter Zijlstra , Tony Luck , Tom Lendacky , Alexey Kardashevskiy , kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v6 3/7] x86/cpu, kvm: Move the LFENCE_RDTSC / LFENCE always serializing feature Message-ID: References: <20230110224643.452273-1-kim.phillips@amd.com> <20230110224643.452273-5-kim.phillips@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230110224643.452273-5-kim.phillips@amd.com> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 10, 2023 at 04:46:39PM -0600, Kim Phillips wrote: > The LFENCE_RDTSC / LFENCE always serializing feature was a scattered bit > and open-coded for KVM in __do_cpuid_func(). Add it to its newly added > CPUID leaf 0x80000021 EAX proper, and propagate it in kvm_set_cpu_caps() > instead. > > Also drop the bit description comments now it's more self-describing. > > Whilst there, switch to using the more efficient cpu_feature_enabled() > instead of static_cpu_has(). > > Signed-off-by: Kim Phillips > --- > arch/x86/include/asm/cpufeatures.h | 3 ++- > arch/x86/kvm/cpuid.c | 9 ++++----- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h > index 0cd7b4afd528..79da8e492c0f 100644 > --- a/arch/x86/include/asm/cpufeatures.h > +++ b/arch/x86/include/asm/cpufeatures.h > @@ -97,7 +97,7 @@ > #define X86_FEATURE_SYSENTER32 ( 3*32+15) /* "" sysenter in IA32 userspace */ > #define X86_FEATURE_REP_GOOD ( 3*32+16) /* REP microcode works well */ > #define X86_FEATURE_AMD_LBR_V2 ( 3*32+17) /* AMD Last Branch Record Extension Version 2 */ > -#define X86_FEATURE_LFENCE_RDTSC ( 3*32+18) /* "" LFENCE synchronizes RDTSC */ > +/* FREE, was #define X86_FEATURE_LFENCE_RDTSC ( 3*32+18) "" LFENCE synchronizes RDTSC */ > #define X86_FEATURE_ACC_POWER ( 3*32+19) /* AMD Accumulated Power Mechanism */ > #define X86_FEATURE_NOPL ( 3*32+20) /* The NOPL (0F 1F) instructions */ > #define X86_FEATURE_ALWAYS ( 3*32+21) /* "" Always-present feature */ > @@ -428,6 +428,7 @@ > > /* AMD-defined Extended Feature 2 EAX, CPUID level 0x80000021 (EAX), word 20 */ > #define X86_FEATURE_NO_NESTED_DATA_BP (20*32+ 0) /* "" AMD No Nested Data Breakpoints */ > +#define X86_FEATURE_LFENCE_RDTSC (20*32+ 2) /* "" LFENCE always serializing / synchronizes RDTSC */ Hmm, a synthetic bit which gets replaced with a vendor oneĀ and then the other vendors set it too. I don't see why that cannot work but we probably should be careful here. dhansen, am I missing an angle? Also, X86_FEATURE_LFENCE_RDTSC gets set in init_amd() along with setting DE_CFG[1]. I think you should check the new flag here first and avoid the setting if that flag is set. Just for good measure - not that it changes anything but still, it is cheap to do. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette