Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1841335imm; Tue, 2 Oct 2018 15:08:10 -0700 (PDT) X-Google-Smtp-Source: ACcGV63b0VboR+zhfJSslszIBuCu/bAt77bLjdQI/kt7Po9c8IUgGPFyeirvqPBOUD3lJX50tdoY X-Received: by 2002:a63:c00b:: with SMTP id h11-v6mr13624047pgg.159.1538518090443; Tue, 02 Oct 2018 15:08:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538518090; cv=none; d=google.com; s=arc-20160816; b=PvpU5mOU4SzsDd1uAAZYEsWFi78APoUyvhlRUoCXPqE+KLPl46nmK76rqrl/wd8CZz 3UG6NFwr5eB2SMoWQ7jiWaMlkHYVgKJMYUKoTiDfUm0yGuduK1LivnQD7zIo7NvSqPRg 6e/WBmwL5A2lQqtnYZtVwJYhGg2hZgD6HDuAKlrodPrqK3QIpBpk6Nv9IgGdb8+ZnF3G +5K4ZNkpu+i+5zE7Kq0k6WP10Qp+IMsaAAm4af8vi+rRT3DN/0RbTtv1fnBgNk/1tcQg 3WyyoKTJaBQZCtxAHPI7TgsMDabxdf2uR8ZmshUk3JFHHxox8Zk6YocHClw531l+4JHH fyVA== 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; bh=Ue/N+fLcw9t40/Pip1aMQRcj0uNeEEFY49XoE9M7gc0=; b=Gvxwdbi4L/KKF76dsDLdSzZOhd0LgsO6n1Onkut/05A45nQnAw7Xx283mZ2l7dgxjw H4PPktqOU6OI2KgbNQQqTmRhIxbiXFenphEgARNAqwBGYFs3Vjye98FbgAibBum4GlLa w4QVsMeMFYTXNoJSxKaAbw6vW2jjdqT4/qI0FakCMz65nEkW0tgc02HK+LR/zcImeOPJ 5Ez6hyj/QoKwf4p2rDxM8J8Sak4jw3q4K5EEMzbqNDAaNRjp/2YjHvMgT+z5pA16BwPQ vjvs8SgfmO8S9qEB2evDIwaQVpJpOlSG1OnJa6CMJ8o4bhtoiDe9SOen1vfjtBYpb556 j4qg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id o15-v6si17201940pgf.253.2018.10.02.15.07.54; Tue, 02 Oct 2018 15:08:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1727347AbeJCEvs (ORCPT + 99 others); Wed, 3 Oct 2018 00:51:48 -0400 Received: from mga06.intel.com ([134.134.136.31]:29371 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726596AbeJCEvs (ORCPT ); Wed, 3 Oct 2018 00:51:48 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Oct 2018 15:06:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,333,1534834800"; d="scan'208";a="79350977" Received: from rchatre-mobl.amr.corp.intel.com (HELO [10.24.14.130]) ([10.24.14.130]) by orsmga006.jf.intel.com with ESMTP; 02 Oct 2018 15:06:15 -0700 Subject: Re: [RFC PATCH 06/10] arch/x86: Initialize the resource functions that are different To: "Moger, Babu" , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "fenghua.yu@intel.com" , "vikas.shivappa@linux.intel.com" , "tony.luck@intel.com" Cc: "x86@kernel.org" , "peterz@infradead.org" , "pombredanne@nexb.com" , "gregkh@linuxfoundation.org" , "kstewart@linuxfoundation.org" , "bp@suse.de" , "rafael.j.wysocki@intel.com" , "ak@linux.intel.com" , "kirill.shutemov@linux.intel.com" , "xiaochen.shen@intel.com" , "colin.king@canonical.com" , "Hurwitz, Sherry" , "Lendacky, Thomas" , "pbonzini@redhat.com" , "dwmw@amazon.co.uk" , "luto@kernel.org" , "jroedel@suse.de" , "jannh@google.com" , "dima@arista.com" , "jpoimboe@redhat.com" , "vkuznets@redhat.com" , "linux-kernel@vger.kernel.org" References: <20180924191841.29111-1-babu.moger@amd.com> <20180924191841.29111-7-babu.moger@amd.com> From: Reinette Chatre Message-ID: Date: Tue, 2 Oct 2018 15:06:15 -0700 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180924191841.29111-7-babu.moger@amd.com> 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 Babu, On 9/24/2018 12:19 PM, Moger, Babu wrote: > Initialize the resource functions that are different between the > vendors. Some features are initialized differently between the vendors. > > For example, MBA feature varies significantly between Intel and AMD. > Separate the initialization of these resource functions. That way we > can easily add AMD's functions later. > > Signed-off-by: Babu Moger > --- > arch/x86/kernel/cpu/rdt.c | 28 +++++++++++++++++++++++++--- > arch/x86/kernel/cpu/rdt.h | 4 ++++ > 2 files changed, 29 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kernel/cpu/rdt.c b/arch/x86/kernel/cpu/rdt.c > index 736715b81fd8..6dec45bf81d6 100644 > --- a/arch/x86/kernel/cpu/rdt.c > +++ b/arch/x86/kernel/cpu/rdt.c > @@ -174,10 +174,7 @@ struct rdt_resource rdt_resources_all[] = { > .rid = RDT_RESOURCE_MBA, > .name = "MB", > .domains = domain_init(RDT_RESOURCE_MBA), > - .msr_base = IA32_MBA_THRTL_BASE, > - .msr_update = mba_wrmsr, > .cache_level = 3, > - .parse_ctrlval = parse_bw, > .format_str = "%d=%*u", > .fflags = RFTYPE_RES_MB, > }, > @@ -865,6 +862,25 @@ static __init void rdt_check_mba(void) > rdt_get_mem_config(&rdt_resources_all[RDT_RESOURCE_MBA]); > } > > +static __init void rdt_init_res_defs_intel(void) > +{ > + struct rdt_resource *r; > + > + for_each_rdt_resource(r) { > + if (r->rid == RDT_RESOURCE_MBA) { > + r->msr_base = IA32_MBA_THRTL_BASE; > + r->msr_update = mba_wrmsr; > + r->parse_ctrlval = parse_bw; > + } > + } > +} Patch 10 introduces parse_bw_amd and mba_wrmsr_amd as you prepare us for in the commit message. I think it would reduce confusion if these functions, mba_wrmsr and parse_bw, also follow this pattern to contain the vendor name. So, mba_wrmsr -> mba_wrmsr_intel, parse_bw -> parse_bw_intel. > + > +static __init void rdt_init_res_defs(void) > +{ > + if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) > + rdt_init_res_defs_intel(); > +} > + > static enum cpuhp_state rdt_online; > > static int __init rdt_late_init(void) > @@ -875,6 +891,12 @@ static int __init rdt_late_init(void) > /* Run quirks first */ > rdt_quirks(); > > + /* > + * Initialize functions(or definitions) that are different > + * between vendors here. > + */ > + rdt_init_res_defs(); > + While it does seem as though currently rdt_quirks() is not using any of the settings made in rdt_init_res_defs() it (rdt_quirks()) does use the partially initialized resources structure and this may in the future include using parameters that have not been initialized yet. I thus think it would be safer to do this initialization before rdt_quirks(). Reinette