public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Daniel Axtens <dja@axtens•net>
To: Anshuman Khandual <khandual@linux•vnet.ibm.com>
Cc: linuxppc-dev@ozlabs•org, mikey@neuling•org, sukadev@linux•vnet.ibm.com
Subject: Re: [PATCH V8 08/10] powerpc, perf: Change POWER8 PMU configuration to work with SW filters
Date: Wed, 10 Jun 2015 15:49:25 +1000	[thread overview]
Message-ID: <1433915365.3096.44.camel@axtens.net> (raw)
In-Reply-To: <1433763511-5270-8-git-send-email-khandual@linux.vnet.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 3597 bytes --]

On Mon, 2015-06-08 at 17:08 +0530, Anshuman Khandual wrote:
> The kernel now supports SW based branch filters for book3s systems with
> some specific requirements while dealing with HW supported branch filters
> in order to achieve overall OR semantics prevailing in perf branch stack
> sampling framework. This patch adapts the BHRB branch filter configuration
> to meet those protocols. POWER8 PMU can only handle one HW based branch
> filter request at any point of time. For all other combinations PMU will
> pass it on to the SW.
> 
> Signed-off-by: Anshuman Khandual <khandual@linux•vnet.ibm.com>
> ---
>  arch/powerpc/perf/power8-pmu.c | 51 ++++++++++++++++++++++++++++++++++++------
>  1 file changed, 44 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
> index 5e17cb5..8fccf6c 100644
> --- a/arch/powerpc/perf/power8-pmu.c
> +++ b/arch/powerpc/perf/power8-pmu.c
> @@ -656,6 +656,16 @@ static int power8_generic_events[] = {
>  

This is, I think, the third time you've modified this function in this
patch series. I appreciate the fact that you're trying to keep logical
changes separate, but it seems to me like this change might be able to
be combined with patch 4, and given a single commit message that clearly
explains the complete scope of the changes.
>  static u64 power8_bhrb_filter_map(u64 branch_sample_type, u64 *bhrb_filter)
>  {
> +	u64 x, pmu_bhrb_filter;
> +
> +	pmu_bhrb_filter = 0;
> +	*bhrb_filter = 0;
> +
> +	if (branch_sample_type & PERF_SAMPLE_BRANCH_ANY) {
> +		*bhrb_filter = PERF_SAMPLE_BRANCH_ANY;
> +		return pmu_bhrb_filter;
> +	}
> +
>  	/* BHRB and regular PMU events share the same privilege state
>  	 * filter configuration. BHRB is always recorded along with a
>  	 * regular PMU event. As the privilege state filter is handled
> @@ -666,15 +676,42 @@ static u64 power8_bhrb_filter_map(u64 branch_sample_type, u64 *bhrb_filter)
>  	/* Ignore user, kernel, hv bits */
>  	branch_sample_type &= ~PERF_SAMPLE_BRANCH_PLM_ALL;
>  
> -	/* No branch filter requested */
> -	if (branch_sample_type == PERF_SAMPLE_BRANCH_ANY)
> -		return 0;
> +	/*
> +	 * POWER8 does not support ORing of PMU HW branch filters. Hence
> +	 * if multiple branch filters are requested which may include filters
> +	 * supported in PMU, still go ahead and clear the PMU based HW branch
> +	 * filter component as in this case all the filters will be processed
> +	 * in SW.
> +	 */
>  
> -	if (branch_sample_type == PERF_SAMPLE_BRANCH_ANY_CALL)
> -		return POWER8_MMCRA_IFM1;
> +	for_each_branch_sample_type(x) {
> +		/* Ignore privilege branch filters */
> +		if ((x == PERF_SAMPLE_BRANCH_USER)
> +			|| (x == PERF_SAMPLE_BRANCH_KERNEL)
> +				|| (x == PERF_SAMPLE_BRANCH_HV))
> +			continue;
> +
> +		if (!(branch_sample_type & x))
> +			continue;
> +
> +		/* Supported individual PMU branch filters */
> +		if (branch_sample_type & PERF_SAMPLE_BRANCH_ANY_CALL) {
> +			branch_sample_type &= ~PERF_SAMPLE_BRANCH_ANY_CALL;
> +			if (branch_sample_type) {
> +				/* Multiple filters will be processed in SW */
> +				pmu_bhrb_filter = 0;
> +				*bhrb_filter = 0;
> +				return pmu_bhrb_filter;
> +			} else {
> +				/* Individual filter will be processed in HW */
> +				pmu_bhrb_filter |= POWER8_MMCRA_IFM1;
> +				*bhrb_filter    |= PERF_SAMPLE_BRANCH_ANY_CALL;
> +				return pmu_bhrb_filter;
> +			}
> +		}
> +	}
>  
> -	/* Every thing else is unsupported */
> -	return -1;
> +	return pmu_bhrb_filter;
>  }

Regards,
Daniel

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 860 bytes --]

  reply	other threads:[~2015-06-10  5:50 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-08 11:38 [PATCH V8 01/10] powerpc, perf: Drop the branch sample when 'from' cannot be fetched Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 02/10] powerpc, perf: Restore privillege level filter support for BHRB Anshuman Khandual
2015-06-10  3:43   ` Daniel Axtens
2015-06-10 12:08     ` Anshuman Khandual
2015-06-11  3:28       ` Daniel Axtens
2015-06-12  7:06         ` Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 03/10] powerpc, perf: Re organize BHRB processing Anshuman Khandual
2015-06-10  4:36   ` Daniel Axtens
2015-06-10 12:09     ` Anshuman Khandual
2015-06-11  3:32       ` Daniel Axtens
2015-06-12  7:05         ` Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 04/10] powerpc, perf: Re organize PMU based branch filter processing in POWER8 Anshuman Khandual
2015-06-10  5:07   ` Daniel Axtens
2015-06-10 12:09     ` Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 05/10] powerpc, perf: Change the name of HW PMU branch filter tracking variable Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 06/10] powerpc, lib: Add new branch analysis support functions Anshuman Khandual
2015-06-10  5:33   ` Daniel Axtens
2015-06-10 12:10     ` Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 07/10] powerpc, perf: Enable SW filtering in branch stack sampling framework Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 08/10] powerpc, perf: Change POWER8 PMU configuration to work with SW filters Anshuman Khandual
2015-06-10  5:49   ` Daniel Axtens [this message]
2015-06-10 12:10     ` Anshuman Khandual
2015-06-11  3:38       ` Daniel Axtens
2015-06-08 11:38 ` [PATCH V8 09/10] powerpc, perf: Enable privilege mode SW branch filters Anshuman Khandual
2015-06-11  1:19   ` Daniel Axtens
2015-06-12  7:04     ` Anshuman Khandual
2015-06-08 11:38 ` [PATCH V8 10/10] selftests, powerpc: Add test for BHRB branch filters (HW & SW) Anshuman Khandual
2015-06-09  5:41   ` Anshuman Khandual
2015-06-11  2:09   ` Daniel Axtens
2015-06-12  7:02     ` Anshuman Khandual
2015-06-12  7:26       ` Madhavan Srinivasan
2015-06-12  8:59         ` Anshuman Khandual
2015-06-10  3:21 ` [PATCH V8 01/10] powerpc, perf: Drop the branch sample when 'from' cannot be fetched Daniel Axtens
2015-06-10 12:02   ` Anshuman Khandual
2015-06-11  2:22     ` Daniel Axtens

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=1433915365.3096.44.camel@axtens.net \
    --to=dja@axtens$(echo .)net \
    --cc=khandual@linux$(echo .)vnet.ibm.com \
    --cc=linuxppc-dev@ozlabs$(echo .)org \
    --cc=mikey@neuling$(echo .)org \
    --cc=sukadev@linux$(echo .)vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox