Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp1403124rwl; Fri, 24 Mar 2023 10:03:10 -0700 (PDT) X-Google-Smtp-Source: AK7set+BKcPqbTn8SqkXfK6OkRjchEb7pX9KfP6xRqCN0ysonjXd3YDEJes9QWsywHhF/Dsnkkk/ X-Received: by 2002:a05:6a20:1b17:b0:d9:ab8b:9f4b with SMTP id ch23-20020a056a201b1700b000d9ab8b9f4bmr3142925pzb.46.1679677390192; Fri, 24 Mar 2023 10:03:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679677390; cv=none; d=google.com; s=arc-20160816; b=thWuli8qXWOofvM9TOKyOg2x7CnJqLB9e6WITi665k6jVQO5MdxBut0XY8HcCH1xiW U/RXA6v3cSytWdVKRUmgo/8JF0bpSkVaNmkgJmyuu76SjTiMf7c7sTF9E5HdU0Rx0S7s I+XfUYjpJ6Oka/AlnDF66iOq9TvyuvNIL7xooO6q/0Y1CzPTjCIS+fxfILWSacgh9bE4 r99DOSNXloQUg3eL8r1roONj1+CCLQXGZCwAQtfawVumQ8HFtUPQJbiIeqThFUZDtbG7 HM/Uz3ct7sV5aZHfNvVuxiXmKju4m1D6mEhYFemPImUjXxhvlbbBSvh2sMus6kmpBsmJ VAzg== 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-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=7ZRKSsns+egRH+T5pXbc9Siz0msd/nkSLiFV7f95bNo=; b=XIQJSI537Cxm0dnfNh2EzFM168R7kRxXQu8UaGAzi5dnXBzd8LUsFrWqupmnn1vT2c C4ar9xmcsL/P0LcQCOLFJj27QQrlh0YQdGZ1/TNS+nDhptIBDMEWRpc/dsZbnVQcHvc9 9MUn03MTRjyl21NAyP07lMB9W9TF+AW7lcPj/K3Wd6EFD3r+bstqLdC/FM6KJJ2RswPj 08bBgnTNVCYYD8Se6p5g1dyCZ3EcebtiMqBdqn6X04rz9zMxkMG1wT0CTbLyc+wRms8Z A5AefE+zVovH/VDD9B/G+WQcU6K8Hk6rykhtnQUG8LENxucbCZcToHQ0e2jLlIbW5ygU POnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=emP3UAe8; 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 c6-20020a6566c6000000b00513234112a7si2057797pgw.883.2023.03.24.10.02.51; Fri, 24 Mar 2023 10:03:10 -0700 (PDT) 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=emP3UAe8; 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 S231845AbjCXQ4U (ORCPT + 99 others); Fri, 24 Mar 2023 12:56:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231447AbjCXQ4T (ORCPT ); Fri, 24 Mar 2023 12:56:19 -0400 Received: from mail.skyhub.de (mail.skyhub.de [5.9.137.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65AEAD8 for ; Fri, 24 Mar 2023 09:56:18 -0700 (PDT) Received: from zn.tnic (p5de8e687.dip0.t-ipconnect.de [93.232.230.135]) (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 F166D1EC052A; Fri, 24 Mar 2023 17:56:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1679676977; 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:in-reply-to:in-reply-to: references:references; bh=7ZRKSsns+egRH+T5pXbc9Siz0msd/nkSLiFV7f95bNo=; b=emP3UAe8KFcrpD0ZoVAtKVjycQ7eOEHAfoJMoKPqHNt/McjmWNPziiZ10njlW04ixVU9D+ et5XMFRE2q6HwnwRxbrfaZiq8zTHjm/rrODzR1Dwaxm+x+leEQ1t+nWWon8qfDaWmIu16Z hD76Qb0Huv4lL7I4xHQVgWPzf3Wbszc= Date: Fri, 24 Mar 2023 17:56:11 +0100 From: Borislav Petkov To: Juergen Gross Cc: linux-kernel@vger.kernel.org, x86@kernel.org, Thomas Gleixner , Ingo Molnar , Dave Hansen , "H. Peter Anvin" Subject: Re: [PATCH v4 06/12] x86/mtrr: replace vendor tests in MTRR code Message-ID: <20230324165611.GIZB3WK13NdjceLWnN@fat_crate.local> References: <20230306163425.8324-1-jgross@suse.com> <20230306163425.8324-7-jgross@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20230306163425.8324-7-jgross@suse.com> X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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 Mon, Mar 06, 2023 at 05:34:19PM +0100, Juergen Gross wrote: > Modern CPUs all share the same MTRR interface implemented via > generic_mtrr_ops. > > At several places in MTRR code this generic interface is deduced via > is_cpu(INTEL) tests, which is only working due to X86_VENDOR_INTEL > being 0 (the is_cpu() macro is testing mtrr_if->vendor, which isn't > explicitly set in generic_mtrr_ops). > > Fix that by replacing the is_cpu(INTEL) tests with testing for mtrr_if > to be &generic_mtrr_ops. Two things: * is_cpu() checks also whether mtrr_if is set. And we don't set it for all vendors. I wanted to replace that thing with a vendor check recently but there's that little issue. I guess for the cases where we have the generic MTRR implementation, we can safely assume that mtrr_if is set. Which leads me to the second thing: * If you're going to test for &generic_mtrr_ops, then you can just as well do cpu_feature_enabled(X86_FEATURE_MTRR) which is a lot more telling. > diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/mtrr.c > index 5fe62ee0361b..0c83990501f5 100644 > --- a/arch/x86/kernel/cpu/mtrr/mtrr.c > +++ b/arch/x86/kernel/cpu/mtrr/mtrr.c > @@ -108,14 +108,12 @@ static int have_wrcomb(void) > /* This function returns the number of variable MTRRs */ > static void __init set_num_var_ranges(bool use_generic) > { > - unsigned long config = 0, dummy; > + unsigned long config, dummy; > > if (use_generic) > rdmsr(MSR_MTRRcap, config, dummy); > - else if (is_cpu(AMD) || is_cpu(HYGON)) > - config = 2; > - else if (is_cpu(CYRIX) || is_cpu(CENTAUR)) > - config = 8; > + else > + config = mtrr_if->var_regs; > > num_var_ranges = config & 0xff; > } Since you're touching this function, you might simply expand its body in its only call site in mtrr_bp_init(), put a comment above the expanded code and remove that function. That is, if we're going to do the ->var_regs thing. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette