All of lore.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: "Moger, Babu" <Babu.Moger@amd.com>
Cc: "tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"corbet@lwn.net" <corbet@lwn.net>,
	"fenghua.yu@intel.com" <fenghua.yu@intel.com>,
	"reinette.chatre@intel.com" <reinette.chatre@intel.com>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"mchehab+samsung@kernel.org" <mchehab+samsung@kernel.org>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"kstewart@linuxfoundation.org" <kstewart@linuxfoundation.org>,
	"pombredanne@nexb.com" <pombredanne@nexb.com>,
	"rafael@kernel.org" <rafael@kernel.org>,
	"kirill.shutemov@linux.intel.com"
	<kirill.shutemov@linux.intel.com>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"qianyue.zj@alibaba-inc.com" <qianyue.zj@alibaba-inc.com>,
	"xiaochen.shen@intel.com" <xiaochen.shen@intel.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"Singh, Brijesh" <brijesh.singh@amd.com>,
	"Hurwitz, Sherry" <sherry.hurwitz@amd.com>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"Lendacky, Thomas" <Thomas.Lendacky@amd.com>,
	"luto@kernel.org" <luto@kernel.org>,
	"joro@8bytes.org" <joro@8bytes.org>,
	"jannh@google.com" <jannh@google.com>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"rian@alum.mit.edu" <rian@alum.mit.edu>,
	"jpoimboe@redhat.com" <jpoimboe@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>
Subject: Re: [PATCH v8 06/13] arch/resctrl: Initialize the resource functions that are different
Date: Tue, 20 Nov 2018 10:59:18 +0100	[thread overview]
Message-ID: <20181120095918.GD2527@zn.tnic> (raw)
In-Reply-To: <20181116205407.10457-7-babu.moger@amd.com>

On Fri, Nov 16, 2018 at 08:54:32PM +0000, Moger, Babu wrote:
> Initialize the resource functions that are different between the
> vendors. Some features are initialized differently between the vendors.
> Add _intel suffix to Intel specific functions.
> 
> 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 <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl.c             | 34 +++++++++++++++++++----
>  arch/x86/kernel/cpu/resctrl.h             |  8 ++++--
>  arch/x86/kernel/cpu/resctrl_ctrlmondata.c |  4 +--
>  3 files changed, 37 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl.c b/arch/x86/kernel/cpu/resctrl.c
> index 18c8222f326c..eeb7e0e4883e 100644
> --- a/arch/x86/kernel/cpu/resctrl.c
> +++ b/arch/x86/kernel/cpu/resctrl.c
> @@ -57,7 +57,8 @@ int max_name_width, max_data_width;
>  bool rdt_alloc_capable;
>  
>  static void
> -mba_wrmsr(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r);
> +mba_wrmsr_intel(struct rdt_domain *d, struct msr_param *m,
> +		struct rdt_resource *r);
>  static void
>  cat_wrmsr(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r);
>  
> @@ -171,10 +172,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,
>  	},
> @@ -356,7 +354,8 @@ u32 delay_bw_map(unsigned long bw, struct rdt_resource *r)
>  }
>  
>  static void
> -mba_wrmsr(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r)
> +mba_wrmsr_intel(struct rdt_domain *d, struct msr_param *m,
> +		struct rdt_resource *r)
>  {
>  	unsigned int i;
>  
> @@ -873,6 +872,25 @@ static __init bool get_rdt_resources(void)
>  	return (rdt_mon_capable || rdt_alloc_capable);
>  }
>  
> +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_intel;
> +			r->parse_ctrlval = 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();
> +}

So I'm wondering: instead of having mba_wrmsr_intel() and
mba_wrmsr_amd() and adding those per-vendor initialization functions,
why don't you push down the vendor differentiation into mba_wrmsr()?

Then in that function you do

	if (vendor == X86_VENDOR_INTEL)
		__mba_wrmsr_intel();
	else if (vendor == X86_VENDOR_AMD)
		__mba_wrmsr_amd();

and so on and then you don't have to do any of that initialization dance
here and the struct rdt_resource assignment for the MBA will remain
nicely similar to the other ones...

Hmmm?

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

  reply	other threads:[~2018-11-20 10:00 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-16 20:54 [PATCH v8 00/13] arch/resctrl: AMD QoS support Moger, Babu
2018-11-16 20:54 ` [PATCH v8 01/13] arch/resctrl: Start renaming the rdt files to more generic names Moger, Babu
2018-11-18 14:07   ` Borislav Petkov
2018-11-19 19:13     ` Thomas Gleixner
2018-11-19 20:11       ` Moger, Babu
2018-11-19 20:22         ` Borislav Petkov
2018-11-19 20:26           ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 02/13] arch/resctrl: Rename the RDT functions and definitions Moger, Babu
2018-11-16 20:54 ` [PATCH v8 03/13] arch/resctrl: Re-arrange RDT init code Moger, Babu
2018-11-20  9:27   ` Borislav Petkov
2018-11-20 16:31     ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 04/13] arch/resctrl: Bring all the macros to resctrl.h Moger, Babu
2018-11-20  9:35   ` Borislav Petkov
2018-11-20 16:32     ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 05/13] arch/resctrl: Rename config parameter INTEL_RDT to RESCTRL Moger, Babu
2018-11-20  9:42   ` Borislav Petkov
2018-11-20 19:15     ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 06/13] arch/resctrl: Initialize the resource functions that are different Moger, Babu
2018-11-20  9:59   ` Borislav Petkov [this message]
2018-11-20 12:05     ` Borislav Petkov
2018-11-21 16:47       ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 07/13] arch/resctrl: Bring cbm_validate function into the resource structure Moger, Babu
2018-11-16 20:54 ` [PATCH v8 08/13] arch/resctrl: Add vendor check for MBA software controller Moger, Babu
2018-11-16 20:54 ` [PATCH v8 09/13] arch/resctrl: Update the RESCTRL config parameter Moger, Babu
2018-11-16 21:17   ` Randy Dunlap
2018-11-17 16:30     ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 10/13] arch/resctrl: Add AMD feature bit X86_FEATURE_MBA in cpuid bits array Moger, Babu
2018-11-16 20:54 ` [PATCH v8 11/13] arch/resctrl: Introduce QOS feature for AMD Moger, Babu
2018-11-20 12:16   ` Borislav Petkov
2018-11-20 19:40     ` Moger, Babu
2018-11-16 20:54 ` [PATCH v8 12/13] Documentation: Rename and update intel_rdt_ui.txt to resctrl_ui.txt Moger, Babu
2018-11-16 20:54 ` [PATCH v8 13/13] MAINTAINERS: Update the file and documentation names in arch/x86 Moger, Babu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181120095918.GD2527@zn.tnic \
    --to=bp@alien8.de \
    --cc=Babu.Moger@amd.com \
    --cc=Thomas.Lendacky@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=brijesh.singh@amd.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=dwmw2@infradead.org \
    --cc=fenghua.yu@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=jannh@google.com \
    --cc=joro@8bytes.org \
    --cc=jpoimboe@redhat.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kstewart@linuxfoundation.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mchehab+samsung@kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pombredanne@nexb.com \
    --cc=qianyue.zj@alibaba-inc.com \
    --cc=rafael@kernel.org \
    --cc=reinette.chatre@intel.com \
    --cc=rian@alum.mit.edu \
    --cc=sherry.hurwitz@amd.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    --cc=xiaochen.shen@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.