All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fenghua Yu <fenghua.yu@intel.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Fenghua Yu <fenghua.yu@intel.com>, Jiri Olsa <jolsa@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Mike Galbraith <efault@gmx.de>, Shaohua Li <shli@fb.com>,
	lkml <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCHv2] x86/intel_rdt: Add cpus_list rdtgroup file
Date: Sun, 9 Apr 2017 10:38:54 -0700	[thread overview]
Message-ID: <20170409173853.GA27206@linux.intel.com> (raw)
In-Reply-To: <20170409164929.GA11826@krava>

On Sun, Apr 09, 2017 at 06:49:29PM +0200, Jiri Olsa wrote:
> On Fri, Mar 31, 2017 at 05:55:12PM +0200, Jiri Olsa wrote:
> > On Fri, Mar 31, 2017 at 11:15:22AM +0200, Thomas Gleixner wrote:
> > > On Wed, 29 Mar 2017, Fenghua Yu wrote:
> > > > >  static int rdtgroup_cpus_show(struct kernfs_open_file *of,
> > > > > -			      struct seq_file *s, void *v)
> > > > > +			      struct seq_file *s, void *v,
> > > > > +			      unsigned long flags)
> > > > >  {
> > > > > +	const char *fmt = flags & RFTYPE_FLAGS_CPUS_LIST ? "%*pbl\n" : "%*pb\n";
> > > > 
> > > > Change to:
> > > > + const char *fmt = strcmp(of->kn->priv, "cpus") ? "%*pbl\n" : "%*pb\n";
> > > 
> > > You couldn't come up with a more horrible hack, right?
> > > 
> > > Jiri was right with adding the flag to the base files, just the propagation
> > > through the callbacks sucks. What's wrong with:
> > > 
> > > 	struct rftype *rft = of->kn->priv;
> > > 	bool list = rtf->flags & RFTYPE_FLAGS_CPUS_LIST;
> > 
> > ok, I'll post the change
> 
> v2 attached
> 
> thanks,
> jirka
> 
> ---
> While playing with the resctrl interface I found it much
> easier to deal with cpumask list rather than just regular
> cpumask.
> 
> Adding cpus_list file to provide cpumask list interface
> to define group's cpus.
> 
>   # cd /sys/fs/resctrl/
>   # echo 1-10 > krava/cpus_list
>   # cat krava/cpus_list
>   1-10
>   # cat krava/cpus
>   0007fe
>   # cat cpus
>   fffff9
>   # cat cpus_list
>   0,3-23

Could you please have a right commit message and patch format?
git am can not pick up your commit message as you expected.

> 
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Mike Galbraith <efault@gmx.de>
> Cc: Shaohua Li <shli@fb.com>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  arch/x86/include/asm/intel_rdt.h         |  4 ++++
>  arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 28 ++++++++++++++++++++++++----
>  2 files changed, 28 insertions(+), 4 deletions(-)
> 

Could you please add cpus_list info in intel_rdt_ui.txt?

> diff --git a/arch/x86/include/asm/intel_rdt.h b/arch/x86/include/asm/intel_rdt.h
> index 3f313991c0b3..a1a6681738a5 100644
> --- a/arch/x86/include/asm/intel_rdt.h
> +++ b/arch/x86/include/asm/intel_rdt.h
> @@ -37,6 +37,9 @@ struct rdtgroup {
>  /* rdtgroup.flags */
>  #define	RDT_DELETED		1
>  
> +/* rftype.flags */
> +#define RFTYPE_FLAGS_CPUS_LIST	1
> +
>  /* List of all resource groups */
>  extern struct list_head rdt_all_groups;
>  
> @@ -56,6 +59,7 @@ struct rftype {
>  	char			*name;
>  	umode_t			mode;
>  	struct kernfs_ops	*kf_ops;
> +	unsigned long		flags;
>  
>  	int (*seq_show)(struct kernfs_open_file *of,
>  			struct seq_file *sf, void *v);
> diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
> index 9ac2a5cdd9c2..b089d2452f1e 100644
> --- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
> +++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
> @@ -174,6 +174,13 @@ static ssize_t rdtgroup_file_write(struct kernfs_open_file *of, char *buf,
>  	.seq_show		= rdtgroup_seqfile_show,
>  };
>  
> +static bool is_list(struct kernfs_open_file *of)
> +{
> +	struct rftype *rft = of->kn->priv;
> +
> +	return rft->flags & RFTYPE_FLAGS_CPUS_LIST;
> +}
> +
>  static int rdtgroup_cpus_show(struct kernfs_open_file *of,
>  			      struct seq_file *s, void *v)
>  {
> @@ -182,9 +189,10 @@ static int rdtgroup_cpus_show(struct kernfs_open_file *of,
>  
>  	rdtgrp = rdtgroup_kn_lock_live(of->kn);
>  
> -	if (rdtgrp)
> -		seq_printf(s, "%*pb\n", cpumask_pr_args(&rdtgrp->cpu_mask));
> -	else
> +	if (rdtgrp) {
> +		seq_printf(s, is_list(of) ? "%*pbl\n" : "%*pb\n",
> +			   cpumask_pr_args(&rdtgrp->cpu_mask));
> +	} else

Unbalanced braces around if-else. You can remove the { and } after if.

>  		ret = -ENOENT;
>  	rdtgroup_kn_unlock(of->kn);
>  
> @@ -252,7 +260,11 @@ static ssize_t rdtgroup_cpus_write(struct kernfs_open_file *of,
>  		goto unlock;
>  	}
>  
> -	ret = cpumask_parse(buf, newmask);
> +	if (is_list(of))
> +		ret = cpulist_parse(buf, newmask);
> +	else
> +		ret = cpumask_parse(buf, newmask);
> +
>  	if (ret)
>  		goto unlock;
>  
> @@ -473,6 +485,14 @@ static int rdtgroup_tasks_show(struct kernfs_open_file *of,
>  		.seq_show	= rdtgroup_cpus_show,
>  	},
>  	{
> +		.name		= "cpus_list",
> +		.mode		= 0644,
> +		.kf_ops		= &rdtgroup_kf_single_ops,
> +		.write		= rdtgroup_cpus_write,
> +		.seq_show	= rdtgroup_cpus_show,
> +		.flags		= RFTYPE_FLAGS_CPUS_LIST,
> +	},
> +	{
>  		.name		= "tasks",
>  		.mode		= 0644,
>  		.kf_ops		= &rdtgroup_kf_single_ops,
> -- 
> 1.8.3.1
> 

  reply	other threads:[~2017-04-09 17:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-29 15:09 [PATCH] x86/intel_rdt: Add cpus_list rdtgroup file Jiri Olsa
2017-03-29 16:08 ` Fenghua Yu
2017-03-29 16:16   ` Jiri Olsa
2017-03-30 14:59     ` Jiri Olsa
2017-04-01  2:00       ` Fenghua Yu
2017-03-31  8:47   ` Thomas Gleixner
2017-03-31 15:53     ` Fenghua Yu
2017-03-31  9:15   ` Thomas Gleixner
2017-03-31 15:40     ` Fenghua Yu
2017-03-31 15:55     ` Jiri Olsa
2017-04-09 16:49       ` [PATCHv2] " Jiri Olsa
2017-04-09 17:38         ` Fenghua Yu [this message]
2017-04-10  7:40           ` [PATCHv3] " Jiri Olsa
2017-04-10  9:45             ` Thomas Gleixner
2017-04-10 14:52               ` [PATCHv4] " Jiri Olsa
2017-04-10 17:16                 ` [tip:x86/cpu] " tip-bot for Jiri Olsa
2017-04-10  9:14           ` [PATCHv2] " Thomas Gleixner

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=20170409173853.GA27206@linux.intel.com \
    --to=fenghua.yu@intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=efault@gmx.de \
    --cc=jolsa@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=shli@fb.com \
    --cc=tglx@linutronix.de \
    /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.