Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp281027ybj; Mon, 4 May 2020 21:23:28 -0700 (PDT) X-Google-Smtp-Source: APiQypJI6f8rqKnpQNaYS/Lafe6H/gBZfOA4PlF/a8eUC1CiCsEz2RVQEgnbEG/WREfeLJJUThCc X-Received: by 2002:a17:906:1ccb:: with SMTP id i11mr950355ejh.101.1588652608787; Mon, 04 May 2020 21:23:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588652608; cv=none; d=google.com; s=arc-20160816; b=RLZ4ABdjAwA+tDPVeUwSrT4PNJd+S3J5a+TP9+k6zM/nKH349XKzOFOidl2G82hVpz NiuqlefZGARUDQ1NMMbkHIAaBYveJPhdoY/fauh/EzAbTkIRI3bp0QMCfzomHl/3gWbd 2Vrb61YEKnLWUuxmj6iAYMdNuaRXpugQEU6VOCUqWoBt8Te4vbABQx/eAQl4YtkvFna4 uoVweRhMqZnUoNkmqU+zTN2X0uBlSDvw54UhJfMd/FXzT4H91iR7ST95ku7yuw5vVJ5C vH0xLw/OhF6dsLKc0vheGzZpSmDYdnWDB3cZSPuUJbqZCG/IaWawmspeZHjzBtVNKvTc +ybQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:ironport-sdr:ironport-sdr; bh=KRa3OFkgHdPWDy76ix2m0YvPtI0KDm+g1FbcfYS9uIc=; b=gOs9H3CwpNS6ET6Vn59o1+whY/dkyXACbXkZb25TxIBXERPNIX0t1abiIevuLU9o6z /C/ZA3DcVI8dlHF+O1h+D5DSEapXg0NUs1Z5sV0+tHtr1biiv9k/FxxyixOQoUHtJ9qe anRhxM+cEWSbXEw2t4B68DE3VxLCqiJ0wPNNZOXnCJeLm4xoy6jkm1J8yUhpSeCjIZ5n U4mW7qnnmfCjdpQnR8gxtkOJCQo8u4s5L2Odhf3rmtVghR9b1VCBWZXNhB2q+YPXzlCc v7X26wSudWMl8wn1H6dY54uSVjlLbk3CYNdh00ELcEqFGPdt2lxg8VUZiou3DZbyP8G9 I1xA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a19si533448edr.254.2020.05.04.21.23.05; Mon, 04 May 2020 21:23:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726550AbgEEETY (ORCPT + 99 others); Tue, 5 May 2020 00:19:24 -0400 Received: from mga06.intel.com ([134.134.136.31]:6442 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725272AbgEEETY (ORCPT ); Tue, 5 May 2020 00:19:24 -0400 IronPort-SDR: 8ftTRlp9vlazqKYp6xM0TiWf6U0biTKc1EpilroVsoODo4O7UOx7I+x89DuwmAiJNpN96k22Ix srr129ITqvdg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 May 2020 21:19:22 -0700 IronPort-SDR: 19MUW11o3UgrQDTTg4md8G0ybJFc6HfNWwZfHSEpBuwhhB4PIO/eoxyfX1KyrrY6u/xY3AH8Ae m2dcTKImE9NQ== X-IronPort-AV: E=Sophos;i="5.73,354,1583222400"; d="scan'208";a="406697555" Received: from rchatre-mobl.amr.corp.intel.com (HELO [10.254.112.104]) ([10.254.112.104]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 May 2020 21:19:22 -0700 Subject: Re: [PATCH 2/2] x86/resctrl: Support CPUID enumeration of MBM counter width To: Borislav Petkov Cc: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com, kuo-lang.tseng@intel.com, mingo@redhat.com, babu.moger@amd.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org References: <76dc65631c373e0c1c9f3e8aaa768f022a2c989c.1585763047.git.reinette.chatre@intel.com> <20200429181149.GE16407@zn.tnic> <6fb58472-88f2-925b-3a4e-4692957a9582@intel.com> <20200430095913.GA3996@zn.tnic> <4288b11f-d4da-d311-7112-fa05887f50b4@intel.com> <20200504075632.GB15046@zn.tnic> From: Reinette Chatre Message-ID: Date: Mon, 4 May 2020 21:19:21 -0700 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20200504075632.GB15046@zn.tnic> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Borislav, On 5/4/2020 12:56 AM, Borislav Petkov wrote: > Hi, > > On Sun, May 03, 2020 at 11:51:00AM -0700, Reinette Chatre wrote: >> I am struggling with what should follow ... > > Since a diff is better than a thousand words :-) see below. > Thank you so much for providing the details. Your explanation is clear to me but I do have one clarification question ... > @@ -597,6 +598,8 @@ static void bsp_init_amd(struct cpuinfo_x86 *c) > x86_amd_ls_cfg_ssbd_mask = 1ULL << bit; > } > } > + > + resctrl_cpu_detect(c); > } > ... > @@ -322,6 +323,11 @@ static void early_init_intel(struct cpuinfo_x86 *c) > detect_ht_early(c); > } > > +static void bsp_init_intel(struct cpuinfo_x86 *c) > +{ > + resctrl_cpu_detect(c); > +} > + > #ifdef CONFIG_X86_32 > /* > * Early probe support logic for ppro memory erratum #50 > @@ -961,6 +967,7 @@ static const struct cpu_dev intel_cpu_dev = { > #endif > .c_detect_tlb = intel_detect_tlb, > .c_early_init = early_init_intel, > + .c_bsp_init = bsp_init_intel, > .c_init = init_intel, > .c_x86_vendor = X86_VENDOR_INTEL, > }; > diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c > index d8cc5223b7ce..5e5955aa6593 100644 > --- a/arch/x86/kernel/cpu/resctrl/core.c > +++ b/arch/x86/kernel/cpu/resctrl/core.c > @@ -22,7 +22,7 @@ > #include > > #include > -#include > +#include > #include "internal.h" > > /* Mutex to protect rdtgroup access. */ > @@ -958,6 +958,35 @@ static __init void rdt_init_res_defs(void) > > static enum cpuhp_state rdt_online; > > +/* Runs once on the BSP during boot. */ > +void resctrl_cpu_detect(struct cpuinfo_x86 *c) > +{ > + if (!cpu_has(c, X86_FEATURE_CQM_LLC)) { > + c->x86_cache_max_rmid = -1; > + c->x86_cache_occ_scale = -1; > + c->x86_cache_mbm_width_offset = -1; > + return; > + } > + > + /* will be overridden if occupancy monitoring exists */ > + c->x86_cache_max_rmid = cpuid_ebx(0xf); > + > + if (cpu_has(c, X86_FEATURE_CQM_OCCUP_LLC) || > + cpu_has(c, X86_FEATURE_CQM_MBM_TOTAL) || > + cpu_has(c, X86_FEATURE_CQM_MBM_LOCAL)) { > + u32 eax, ebx, ecx, edx; > + > + /* QoS sub-leaf, EAX=0Fh, ECX=1 */ > + cpuid_count(0xf, 1, &eax, &ebx, &ecx, &edx); > + > + c->x86_cache_max_rmid = ecx; > + c->x86_cache_occ_scale = ebx; > + > + if (c->x86_vendor == X86_VENDOR_INTEL) > + c->x86_cache_mbm_width_offset = eax & 0xff; > + } > +} > + resctrl_cpu_detect() is now identical among vendors. Do we still need the c_bsp_init helpers? Could we not perhaps call resctrl_cpu_detect() directly from early_identify_cpu()? Thank you Reinette