All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Murray <andrew.murray@arm.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Will Deacon <will.deacon@arm.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, linux-alpha@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 09/10] drivers/perf: perf/core: generalise event exclusion checking with perf macro
Date: Fri, 23 Nov 2018 14:31:13 +0000	[thread overview]
Message-ID: <20181123143113.GA1617@e119886-lin.cambridge.arm.com> (raw)
In-Reply-To: <20181119160352.ua2lx72l754imiek@lakrids.cambridge.arm.com>

On Mon, Nov 19, 2018 at 04:03:52PM +0000, Mark Rutland wrote:
> On Fri, Nov 16, 2018 at 10:24:12AM +0000, Andrew Murray wrote:
> > Replace checking of perf event exclusion flags with perf macro.
> > 
> > This is a functional change as exclude_host and exclude_guest are added
> > in the following files:
> > 
> >  - drivers/perf/qcom_l2_pmu.c
> >  - drivers/perf/qcom_l3_pmu.c
> >  - drivers/perf/arm_pmu.c
> > 
> > And exclude_idle and exclude_hv are added in these files:
> > 
> >  - drivers/perf/xgene_pmu.c
> 
> FWIW, that all sounds fine to me.
> 
> Assuming you fix up the 'macro' nit:
> 
> Acked-by: Mark Rutland <mark.rutland@arm.com>
> 
> ... unless we go for Peter's core cap for this.

Yeah I'm going to re-spin with the core cap approach - but thanks anyway.

Thanks,

Andrew Murray

> 
> Thanks,
> Mark.
> 
> > Signed-off-by: Andrew Murray <andrew.murray@arm.com>
> > ---
> >  drivers/perf/arm-cci.c                   | 7 +------
> >  drivers/perf/arm-ccn.c                   | 5 +----
> >  drivers/perf/arm_dsu_pmu.c               | 7 +------
> >  drivers/perf/arm_pmu.c                   | 9 +--------
> >  drivers/perf/hisilicon/hisi_uncore_pmu.c | 7 +------
> >  drivers/perf/qcom_l2_pmu.c               | 3 +--
> >  drivers/perf/qcom_l3_pmu.c               | 3 +--
> >  drivers/perf/xgene_pmu.c                 | 3 +--
> >  8 files changed, 8 insertions(+), 36 deletions(-)
> > 
> > diff --git a/drivers/perf/arm-cci.c b/drivers/perf/arm-cci.c
> > index 1bfeb16..d749f19 100644
> > --- a/drivers/perf/arm-cci.c
> > +++ b/drivers/perf/arm-cci.c
> > @@ -1328,12 +1328,7 @@ static int cci_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* We have no filtering of any kind */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/arm-ccn.c b/drivers/perf/arm-ccn.c
> > index 7dd850e..9a22a95 100644
> > --- a/drivers/perf/arm-ccn.c
> > +++ b/drivers/perf/arm-ccn.c
> > @@ -741,10 +741,7 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  	}
> >  
> > -	if (has_branch_stack(event) || event->attr.exclude_user ||
> > -			event->attr.exclude_kernel || event->attr.exclude_hv ||
> > -			event->attr.exclude_idle || event->attr.exclude_host ||
> > -			event->attr.exclude_guest) {
> > +	if (has_branch_stack(event) || event_has_exclude_flags(event)) {
> >  		dev_dbg(ccn->dev, "Can't exclude execution levels!\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_dsu_pmu.c b/drivers/perf/arm_dsu_pmu.c
> > index 660cb8a..300ff3d 100644
> > --- a/drivers/perf/arm_dsu_pmu.c
> > +++ b/drivers/perf/arm_dsu_pmu.c
> > @@ -563,12 +563,7 @@ static int dsu_pmu_event_init(struct perf_event *event)
> >  	}
> >  
> >  	if (has_branch_stack(event) ||
> > -	    event->attr.exclude_user ||
> > -	    event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv ||
> > -	    event->attr.exclude_idle ||
> > -	    event->attr.exclude_host ||
> > -	    event->attr.exclude_guest) {
> > +	    event_has_exclude_flags(event)) {
> >  		dev_dbg(dsu_pmu->pmu.dev, "Can't support filtering\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> > index 7f01f6f..a03634f 100644
> > --- a/drivers/perf/arm_pmu.c
> > +++ b/drivers/perf/arm_pmu.c
> > @@ -357,13 +357,6 @@ static irqreturn_t armpmu_dispatch_irq(int irq, void *dev)
> >  }
> >  
> >  static int
> > -event_requires_mode_exclusion(struct perf_event_attr *attr)
> > -{
> > -	return attr->exclude_idle || attr->exclude_user ||
> > -	       attr->exclude_kernel || attr->exclude_hv;
> > -}
> > -
> > -static int
> >  __hw_perf_event_init(struct perf_event *event)
> >  {
> >  	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
> > @@ -395,7 +388,7 @@ __hw_perf_event_init(struct perf_event *event)
> >  	 */
> >  	if ((!armpmu->set_event_filter ||
> >  	     armpmu->set_event_filter(hwc, &event->attr)) &&
> > -	     event_requires_mode_exclusion(&event->attr)) {
> > +	     event_has_exclude_flags(event)) {
> >  		pr_debug("ARM performance counters do not support "
> >  			 "mode exclusion\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > index 9efd241..d3edff9 100644
> > --- a/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > +++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > @@ -143,12 +143,7 @@ int hisi_uncore_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* counters do not have these bits */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/qcom_l2_pmu.c b/drivers/perf/qcom_l2_pmu.c
> > index 842135c..d7d85a2 100644
> > --- a/drivers/perf/qcom_l2_pmu.c
> > +++ b/drivers/perf/qcom_l2_pmu.c
> > @@ -510,8 +510,7 @@ static int l2_cache_event_init(struct perf_event *event)
> >  	}
> >  
> >  	/* We cannot filter accurately so we just don't allow it. */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle) {
> > +	if (event_has_exclude_flags(event)) {
> >  		dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
> >  				    "Can't exclude execution levels\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/qcom_l3_pmu.c b/drivers/perf/qcom_l3_pmu.c
> > index 2dc63d6..f27af67 100644
> > --- a/drivers/perf/qcom_l3_pmu.c
> > +++ b/drivers/perf/qcom_l3_pmu.c
> > @@ -497,8 +497,7 @@ static int qcom_l3_cache__event_init(struct perf_event *event)
> >  	/*
> >  	 * There are no per-counter mode filters in the PMU.
> >  	 */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/xgene_pmu.c b/drivers/perf/xgene_pmu.c
> > index 0e31f13..1fcd5a0 100644
> > --- a/drivers/perf/xgene_pmu.c
> > +++ b/drivers/perf/xgene_pmu.c
> > @@ -915,8 +915,7 @@ static int xgene_perf_event_init(struct perf_event *event)
> >  		return -EINVAL;
> >  
> >  	/* SOC counters do not have usr/os/guest/host bits */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_host || event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	if (event->cpu < 0)
> > -- 
> > 2.7.4
> > 

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Murray <andrew.murray@arm.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	x86@kernel.org, Will Deacon <will.deacon@arm.com>,
	linuxppc-dev@lists.ozlabs.org,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	linux-alpha@vger.kernel.org, Thomas Gleixner <tglx@linutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 09/10] drivers/perf: perf/core: generalise event exclusion checking with perf macro
Date: Fri, 23 Nov 2018 14:31:13 +0000	[thread overview]
Message-ID: <20181123143113.GA1617@e119886-lin.cambridge.arm.com> (raw)
In-Reply-To: <20181119160352.ua2lx72l754imiek@lakrids.cambridge.arm.com>

On Mon, Nov 19, 2018 at 04:03:52PM +0000, Mark Rutland wrote:
> On Fri, Nov 16, 2018 at 10:24:12AM +0000, Andrew Murray wrote:
> > Replace checking of perf event exclusion flags with perf macro.
> > 
> > This is a functional change as exclude_host and exclude_guest are added
> > in the following files:
> > 
> >  - drivers/perf/qcom_l2_pmu.c
> >  - drivers/perf/qcom_l3_pmu.c
> >  - drivers/perf/arm_pmu.c
> > 
> > And exclude_idle and exclude_hv are added in these files:
> > 
> >  - drivers/perf/xgene_pmu.c
> 
> FWIW, that all sounds fine to me.
> 
> Assuming you fix up the 'macro' nit:
> 
> Acked-by: Mark Rutland <mark.rutland@arm.com>
> 
> ... unless we go for Peter's core cap for this.

Yeah I'm going to re-spin with the core cap approach - but thanks anyway.

Thanks,

Andrew Murray

> 
> Thanks,
> Mark.
> 
> > Signed-off-by: Andrew Murray <andrew.murray@arm.com>
> > ---
> >  drivers/perf/arm-cci.c                   | 7 +------
> >  drivers/perf/arm-ccn.c                   | 5 +----
> >  drivers/perf/arm_dsu_pmu.c               | 7 +------
> >  drivers/perf/arm_pmu.c                   | 9 +--------
> >  drivers/perf/hisilicon/hisi_uncore_pmu.c | 7 +------
> >  drivers/perf/qcom_l2_pmu.c               | 3 +--
> >  drivers/perf/qcom_l3_pmu.c               | 3 +--
> >  drivers/perf/xgene_pmu.c                 | 3 +--
> >  8 files changed, 8 insertions(+), 36 deletions(-)
> > 
> > diff --git a/drivers/perf/arm-cci.c b/drivers/perf/arm-cci.c
> > index 1bfeb16..d749f19 100644
> > --- a/drivers/perf/arm-cci.c
> > +++ b/drivers/perf/arm-cci.c
> > @@ -1328,12 +1328,7 @@ static int cci_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* We have no filtering of any kind */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/arm-ccn.c b/drivers/perf/arm-ccn.c
> > index 7dd850e..9a22a95 100644
> > --- a/drivers/perf/arm-ccn.c
> > +++ b/drivers/perf/arm-ccn.c
> > @@ -741,10 +741,7 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  	}
> >  
> > -	if (has_branch_stack(event) || event->attr.exclude_user ||
> > -			event->attr.exclude_kernel || event->attr.exclude_hv ||
> > -			event->attr.exclude_idle || event->attr.exclude_host ||
> > -			event->attr.exclude_guest) {
> > +	if (has_branch_stack(event) || event_has_exclude_flags(event)) {
> >  		dev_dbg(ccn->dev, "Can't exclude execution levels!\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_dsu_pmu.c b/drivers/perf/arm_dsu_pmu.c
> > index 660cb8a..300ff3d 100644
> > --- a/drivers/perf/arm_dsu_pmu.c
> > +++ b/drivers/perf/arm_dsu_pmu.c
> > @@ -563,12 +563,7 @@ static int dsu_pmu_event_init(struct perf_event *event)
> >  	}
> >  
> >  	if (has_branch_stack(event) ||
> > -	    event->attr.exclude_user ||
> > -	    event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv ||
> > -	    event->attr.exclude_idle ||
> > -	    event->attr.exclude_host ||
> > -	    event->attr.exclude_guest) {
> > +	    event_has_exclude_flags(event)) {
> >  		dev_dbg(dsu_pmu->pmu.dev, "Can't support filtering\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> > index 7f01f6f..a03634f 100644
> > --- a/drivers/perf/arm_pmu.c
> > +++ b/drivers/perf/arm_pmu.c
> > @@ -357,13 +357,6 @@ static irqreturn_t armpmu_dispatch_irq(int irq, void *dev)
> >  }
> >  
> >  static int
> > -event_requires_mode_exclusion(struct perf_event_attr *attr)
> > -{
> > -	return attr->exclude_idle || attr->exclude_user ||
> > -	       attr->exclude_kernel || attr->exclude_hv;
> > -}
> > -
> > -static int
> >  __hw_perf_event_init(struct perf_event *event)
> >  {
> >  	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
> > @@ -395,7 +388,7 @@ __hw_perf_event_init(struct perf_event *event)
> >  	 */
> >  	if ((!armpmu->set_event_filter ||
> >  	     armpmu->set_event_filter(hwc, &event->attr)) &&
> > -	     event_requires_mode_exclusion(&event->attr)) {
> > +	     event_has_exclude_flags(event)) {
> >  		pr_debug("ARM performance counters do not support "
> >  			 "mode exclusion\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > index 9efd241..d3edff9 100644
> > --- a/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > +++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > @@ -143,12 +143,7 @@ int hisi_uncore_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* counters do not have these bits */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/qcom_l2_pmu.c b/drivers/perf/qcom_l2_pmu.c
> > index 842135c..d7d85a2 100644
> > --- a/drivers/perf/qcom_l2_pmu.c
> > +++ b/drivers/perf/qcom_l2_pmu.c
> > @@ -510,8 +510,7 @@ static int l2_cache_event_init(struct perf_event *event)
> >  	}
> >  
> >  	/* We cannot filter accurately so we just don't allow it. */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle) {
> > +	if (event_has_exclude_flags(event)) {
> >  		dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
> >  				    "Can't exclude execution levels\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/qcom_l3_pmu.c b/drivers/perf/qcom_l3_pmu.c
> > index 2dc63d6..f27af67 100644
> > --- a/drivers/perf/qcom_l3_pmu.c
> > +++ b/drivers/perf/qcom_l3_pmu.c
> > @@ -497,8 +497,7 @@ static int qcom_l3_cache__event_init(struct perf_event *event)
> >  	/*
> >  	 * There are no per-counter mode filters in the PMU.
> >  	 */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/xgene_pmu.c b/drivers/perf/xgene_pmu.c
> > index 0e31f13..1fcd5a0 100644
> > --- a/drivers/perf/xgene_pmu.c
> > +++ b/drivers/perf/xgene_pmu.c
> > @@ -915,8 +915,7 @@ static int xgene_perf_event_init(struct perf_event *event)
> >  		return -EINVAL;
> >  
> >  	/* SOC counters do not have usr/os/guest/host bits */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_host || event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	if (event->cpu < 0)
> > -- 
> > 2.7.4
> > 

WARNING: multiple messages have this Message-ID (diff)
From: andrew.murray@arm.com (Andrew Murray)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 09/10] drivers/perf: perf/core: generalise event exclusion checking with perf macro
Date: Fri, 23 Nov 2018 14:31:13 +0000	[thread overview]
Message-ID: <20181123143113.GA1617@e119886-lin.cambridge.arm.com> (raw)
In-Reply-To: <20181119160352.ua2lx72l754imiek@lakrids.cambridge.arm.com>

On Mon, Nov 19, 2018 at 04:03:52PM +0000, Mark Rutland wrote:
> On Fri, Nov 16, 2018 at 10:24:12AM +0000, Andrew Murray wrote:
> > Replace checking of perf event exclusion flags with perf macro.
> > 
> > This is a functional change as exclude_host and exclude_guest are added
> > in the following files:
> > 
> >  - drivers/perf/qcom_l2_pmu.c
> >  - drivers/perf/qcom_l3_pmu.c
> >  - drivers/perf/arm_pmu.c
> > 
> > And exclude_idle and exclude_hv are added in these files:
> > 
> >  - drivers/perf/xgene_pmu.c
> 
> FWIW, that all sounds fine to me.
> 
> Assuming you fix up the 'macro' nit:
> 
> Acked-by: Mark Rutland <mark.rutland@arm.com>
> 
> ... unless we go for Peter's core cap for this.

Yeah I'm going to re-spin with the core cap approach - but thanks anyway.

Thanks,

Andrew Murray

> 
> Thanks,
> Mark.
> 
> > Signed-off-by: Andrew Murray <andrew.murray@arm.com>
> > ---
> >  drivers/perf/arm-cci.c                   | 7 +------
> >  drivers/perf/arm-ccn.c                   | 5 +----
> >  drivers/perf/arm_dsu_pmu.c               | 7 +------
> >  drivers/perf/arm_pmu.c                   | 9 +--------
> >  drivers/perf/hisilicon/hisi_uncore_pmu.c | 7 +------
> >  drivers/perf/qcom_l2_pmu.c               | 3 +--
> >  drivers/perf/qcom_l3_pmu.c               | 3 +--
> >  drivers/perf/xgene_pmu.c                 | 3 +--
> >  8 files changed, 8 insertions(+), 36 deletions(-)
> > 
> > diff --git a/drivers/perf/arm-cci.c b/drivers/perf/arm-cci.c
> > index 1bfeb16..d749f19 100644
> > --- a/drivers/perf/arm-cci.c
> > +++ b/drivers/perf/arm-cci.c
> > @@ -1328,12 +1328,7 @@ static int cci_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* We have no filtering of any kind */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/arm-ccn.c b/drivers/perf/arm-ccn.c
> > index 7dd850e..9a22a95 100644
> > --- a/drivers/perf/arm-ccn.c
> > +++ b/drivers/perf/arm-ccn.c
> > @@ -741,10 +741,7 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  	}
> >  
> > -	if (has_branch_stack(event) || event->attr.exclude_user ||
> > -			event->attr.exclude_kernel || event->attr.exclude_hv ||
> > -			event->attr.exclude_idle || event->attr.exclude_host ||
> > -			event->attr.exclude_guest) {
> > +	if (has_branch_stack(event) || event_has_exclude_flags(event)) {
> >  		dev_dbg(ccn->dev, "Can't exclude execution levels!\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_dsu_pmu.c b/drivers/perf/arm_dsu_pmu.c
> > index 660cb8a..300ff3d 100644
> > --- a/drivers/perf/arm_dsu_pmu.c
> > +++ b/drivers/perf/arm_dsu_pmu.c
> > @@ -563,12 +563,7 @@ static int dsu_pmu_event_init(struct perf_event *event)
> >  	}
> >  
> >  	if (has_branch_stack(event) ||
> > -	    event->attr.exclude_user ||
> > -	    event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv ||
> > -	    event->attr.exclude_idle ||
> > -	    event->attr.exclude_host ||
> > -	    event->attr.exclude_guest) {
> > +	    event_has_exclude_flags(event)) {
> >  		dev_dbg(dsu_pmu->pmu.dev, "Can't support filtering\n");
> >  		return -EINVAL;
> >  	}
> > diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> > index 7f01f6f..a03634f 100644
> > --- a/drivers/perf/arm_pmu.c
> > +++ b/drivers/perf/arm_pmu.c
> > @@ -357,13 +357,6 @@ static irqreturn_t armpmu_dispatch_irq(int irq, void *dev)
> >  }
> >  
> >  static int
> > -event_requires_mode_exclusion(struct perf_event_attr *attr)
> > -{
> > -	return attr->exclude_idle || attr->exclude_user ||
> > -	       attr->exclude_kernel || attr->exclude_hv;
> > -}
> > -
> > -static int
> >  __hw_perf_event_init(struct perf_event *event)
> >  {
> >  	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
> > @@ -395,7 +388,7 @@ __hw_perf_event_init(struct perf_event *event)
> >  	 */
> >  	if ((!armpmu->set_event_filter ||
> >  	     armpmu->set_event_filter(hwc, &event->attr)) &&
> > -	     event_requires_mode_exclusion(&event->attr)) {
> > +	     event_has_exclude_flags(event)) {
> >  		pr_debug("ARM performance counters do not support "
> >  			 "mode exclusion\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > index 9efd241..d3edff9 100644
> > --- a/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > +++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c
> > @@ -143,12 +143,7 @@ int hisi_uncore_pmu_event_init(struct perf_event *event)
> >  		return -EOPNOTSUPP;
> >  
> >  	/* counters do not have these bits */
> > -	if (event->attr.exclude_user	||
> > -	    event->attr.exclude_kernel	||
> > -	    event->attr.exclude_host	||
> > -	    event->attr.exclude_guest	||
> > -	    event->attr.exclude_hv	||
> > -	    event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/qcom_l2_pmu.c b/drivers/perf/qcom_l2_pmu.c
> > index 842135c..d7d85a2 100644
> > --- a/drivers/perf/qcom_l2_pmu.c
> > +++ b/drivers/perf/qcom_l2_pmu.c
> > @@ -510,8 +510,7 @@ static int l2_cache_event_init(struct perf_event *event)
> >  	}
> >  
> >  	/* We cannot filter accurately so we just don't allow it. */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle) {
> > +	if (event_has_exclude_flags(event)) {
> >  		dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
> >  				    "Can't exclude execution levels\n");
> >  		return -EOPNOTSUPP;
> > diff --git a/drivers/perf/qcom_l3_pmu.c b/drivers/perf/qcom_l3_pmu.c
> > index 2dc63d6..f27af67 100644
> > --- a/drivers/perf/qcom_l3_pmu.c
> > +++ b/drivers/perf/qcom_l3_pmu.c
> > @@ -497,8 +497,7 @@ static int qcom_l3_cache__event_init(struct perf_event *event)
> >  	/*
> >  	 * There are no per-counter mode filters in the PMU.
> >  	 */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_hv || event->attr.exclude_idle)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	/*
> > diff --git a/drivers/perf/xgene_pmu.c b/drivers/perf/xgene_pmu.c
> > index 0e31f13..1fcd5a0 100644
> > --- a/drivers/perf/xgene_pmu.c
> > +++ b/drivers/perf/xgene_pmu.c
> > @@ -915,8 +915,7 @@ static int xgene_perf_event_init(struct perf_event *event)
> >  		return -EINVAL;
> >  
> >  	/* SOC counters do not have usr/os/guest/host bits */
> > -	if (event->attr.exclude_user || event->attr.exclude_kernel ||
> > -	    event->attr.exclude_host || event->attr.exclude_guest)
> > +	if (event_has_exclude_flags(event))
> >  		return -EINVAL;
> >  
> >  	if (event->cpu < 0)
> > -- 
> > 2.7.4
> > 

  reply	other threads:[~2018-11-23 14:31 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-16 10:24 [PATCH 00/10] perf/core: Generalise event exclusion checking Andrew Murray
2018-11-16 10:24 ` Andrew Murray
2018-11-16 10:24 ` Andrew Murray
2018-11-16 10:24 ` [PATCH 01/10] perf/core: Add macro to test for event exclusion flags Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-19 12:58   ` Peter Zijlstra
2018-11-19 12:58     ` Peter Zijlstra
2018-11-19 12:58     ` Peter Zijlstra
2018-11-19 12:58     ` Peter Zijlstra
2018-11-19 16:01   ` Mark Rutland
2018-11-19 16:01     ` Mark Rutland
2018-11-19 16:01     ` Mark Rutland
2018-11-20 11:28   ` Michael Ellerman
2018-11-20 11:28     ` Michael Ellerman
2018-11-20 11:28     ` Michael Ellerman
2018-11-23 14:32     ` Andrew Murray
2018-11-23 14:32       ` Andrew Murray
2018-11-23 14:32       ` Andrew Murray
2018-11-16 10:24 ` [PATCH 02/10] arm: perf/core: generalise event exclusion checking with perf macro Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 03/10] arm: perf: add additional validation to set_event_filter Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 04/10] powerpc: perf/core: generalise event exclusion checking with perf macro Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-20 11:21   ` Michael Ellerman
2018-11-20 11:21     ` Michael Ellerman
2018-11-20 11:21     ` Michael Ellerman
2018-11-16 10:24 ` [PATCH 05/10] powerpc/pmu/fsl: add additional validation to event_init Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 06/10] alpha: perf/core: generalise event exclusion checking with perf macro Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 07/10] x86: " Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 08/10] perf/core: Remove unused perf_flags Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24 ` [PATCH 09/10] drivers/perf: perf/core: generalise event exclusion checking with perf macro Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-19 16:03   ` Mark Rutland
2018-11-19 16:03     ` Mark Rutland
2018-11-19 16:03     ` Mark Rutland
2018-11-23 14:31     ` Andrew Murray [this message]
2018-11-23 14:31       ` Andrew Murray
2018-11-23 14:31       ` Andrew Murray
2018-11-16 10:24 ` [PATCH 10/10] perf/doc: update design.txt for exclude_{host|guest} flags Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-16 10:24   ` Andrew Murray
2018-11-20 11:31   ` Michael Ellerman
2018-11-20 11:31     ` Michael Ellerman
2018-11-20 11:31     ` Michael Ellerman
2018-11-20 13:32     ` Andrew Murray
2018-11-20 13:32       ` Andrew Murray
2018-11-20 13:32       ` Andrew Murray
2018-12-11 11:06       ` Michael Ellerman
2018-12-11 11:06         ` Michael Ellerman
2018-12-11 11:06         ` Michael Ellerman
2018-12-11 11:06         ` Michael Ellerman
2018-12-11 13:59         ` Andrew Murray
2018-12-11 13:59           ` Andrew Murray
2018-12-11 13:59           ` Andrew Murray
2018-12-12  4:48           ` Michael Ellerman
2018-12-12  4:48             ` Michael Ellerman
2018-12-12  4:48             ` Michael Ellerman
2018-12-12  4:48             ` Michael Ellerman
2018-12-12  8:07           ` Christoffer Dall
2018-12-12  8:07             ` Christoffer Dall
2018-12-12  8:07             ` Christoffer Dall
2018-12-12 17:08             ` Andrew Murray
2018-12-12 17:08               ` Andrew Murray
2018-12-12 17:08               ` Andrew Murray
2018-11-19 13:08 ` [PATCH 00/10] perf/core: Generalise event exclusion checking Peter Zijlstra
2018-11-19 13:08   ` Peter Zijlstra
2018-11-19 13:08   ` Peter Zijlstra
2018-11-19 13:08   ` Peter Zijlstra
2018-11-22 12:21   ` Andrew Murray
2018-11-22 12:21     ` Andrew Murray
2018-11-22 12:21     ` Andrew Murray
2018-11-22 12:26     ` Peter Zijlstra
2018-11-22 12:26       ` Peter Zijlstra
2018-11-22 12:26       ` Peter Zijlstra
2018-11-22 12:26       ` Peter Zijlstra
2018-11-22 12:59       ` Andrew Murray
2018-11-22 12:59         ` Andrew Murray
2018-11-22 12:59         ` Andrew Murray

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=20181123143113.GA1617@e119886-lin.cambridge.arm.com \
    --to=andrew.murray@arm.com \
    --cc=acme@kernel.org \
    --cc=benh@kernel.crashing.org \
    --cc=bp@alien8.de \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=will.deacon@arm.com \
    --cc=x86@kernel.org \
    /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.