All of lore.kernel.org
 help / color / mirror / Atom feed
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] arm64: perf: Use only exclude_kernel attribute when kernel is running in HYP
Date: Thu, 20 Apr 2017 09:49:29 +0100	[thread overview]
Message-ID: <20170420084928.GC31436@leverpostej> (raw)
In-Reply-To: <1492623846-29335-1-git-send-email-ganapatrao.kulkarni@cavium.com>

On Wed, Apr 19, 2017 at 11:14:06PM +0530, Ganapatrao Kulkarni wrote:
> commit d98ecda (arm64: perf: Count EL2 events if the kernel is running in HYP)
> is returning error for perf syscall with mixed attribute set for exclude_kernel
> and exclude_hv. This change is breaking some applications (observed with hhvm)
> when ran on VHE enabled platforms.
> 
> Adding fix to consider only exclude_kernel attribute when kernel is
> running in HYP. Also adding sysfs file to notify the bhehaviour
> of attribute exclude_hv.
> 
> Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
> ---
> 
> Changelog:
> 
> V2:
>  - Changes as per Will Deacon's suggestion.
> 
> V1: Initial patch
> 
>  arch/arm64/kernel/perf_event.c | 28 ++++++++++++++++++++++++----
>  include/linux/perf/arm_pmu.h   |  1 +
>  2 files changed, 25 insertions(+), 4 deletions(-)
> 
> @@ -871,14 +890,13 @@ static int armv8pmu_set_event_filter(struct hw_perf_event *event,
>  
>  	if (attr->exclude_idle)
>  		return -EPERM;
> -	if (is_kernel_in_hyp_mode() &&
> -	    attr->exclude_kernel != attr->exclude_hv)
> -		return -EINVAL;
> +	if (is_kernel_in_hyp_mode() && !attr->exclude_kernel)
> +		config_base |= ARMV8_PMU_INCLUDE_EL2;
>  	if (attr->exclude_user)
>  		config_base |= ARMV8_PMU_EXCLUDE_EL0;
>  	if (!is_kernel_in_hyp_mode() && attr->exclude_kernel)
>  		config_base |= ARMV8_PMU_EXCLUDE_EL1;
> -	if (!attr->exclude_hv)
> +	if (!is_kernel_in_hyp_mode() && !attr->exclude_hv)
>  		config_base |= ARMV8_PMU_INCLUDE_EL2;

This isn't quite what Will suggested.

The idea was that userspace would read sysfs, then use that to determine
the correct exclusion parameters [1,2]. This logic was not expected to
change; it correctly validates whether we can provide what the user
requests.

Thanks,
Mark.

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/499224.html
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/499493.html

>  
>  	/*
> @@ -1008,6 +1026,8 @@ static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu)
>  		&armv8_pmuv3_events_attr_group;
>  	cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
>  		&armv8_pmuv3_format_attr_group;
> +	cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_ATTR] =
> +		&armv8_pmuv3_attr_group;
>  	return armv8pmu_probe_pmu(cpu_pmu);
>  }
>  
> diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
> index 8462da2..a26ffc7 100644
> --- a/include/linux/perf/arm_pmu.h
> +++ b/include/linux/perf/arm_pmu.h
> @@ -81,6 +81,7 @@ enum armpmu_attr_groups {
>  	ARMPMU_ATTR_GROUP_COMMON,
>  	ARMPMU_ATTR_GROUP_EVENTS,
>  	ARMPMU_ATTR_GROUP_FORMATS,
> +	ARMPMU_ATTR_GROUP_ATTR,
>  	ARMPMU_NR_ATTR_GROUPS
>  };
>  
> -- 
> 1.8.1.4
> 

WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, Will.Deacon@arm.com,
	catalin.marinas@arm.com, acme@kernel.org,
	alexander.shishkin@linux.intel.com, peterz@infradead.org,
	mingo@redhat.com, jnair@caviumnetworks.com, gpkulkarni@gmail.com
Subject: Re: [PATCH v2] arm64: perf: Use only exclude_kernel attribute when kernel is running in HYP
Date: Thu, 20 Apr 2017 09:49:29 +0100	[thread overview]
Message-ID: <20170420084928.GC31436@leverpostej> (raw)
In-Reply-To: <1492623846-29335-1-git-send-email-ganapatrao.kulkarni@cavium.com>

On Wed, Apr 19, 2017 at 11:14:06PM +0530, Ganapatrao Kulkarni wrote:
> commit d98ecda (arm64: perf: Count EL2 events if the kernel is running in HYP)
> is returning error for perf syscall with mixed attribute set for exclude_kernel
> and exclude_hv. This change is breaking some applications (observed with hhvm)
> when ran on VHE enabled platforms.
> 
> Adding fix to consider only exclude_kernel attribute when kernel is
> running in HYP. Also adding sysfs file to notify the bhehaviour
> of attribute exclude_hv.
> 
> Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
> ---
> 
> Changelog:
> 
> V2:
>  - Changes as per Will Deacon's suggestion.
> 
> V1: Initial patch
> 
>  arch/arm64/kernel/perf_event.c | 28 ++++++++++++++++++++++++----
>  include/linux/perf/arm_pmu.h   |  1 +
>  2 files changed, 25 insertions(+), 4 deletions(-)
> 
> @@ -871,14 +890,13 @@ static int armv8pmu_set_event_filter(struct hw_perf_event *event,
>  
>  	if (attr->exclude_idle)
>  		return -EPERM;
> -	if (is_kernel_in_hyp_mode() &&
> -	    attr->exclude_kernel != attr->exclude_hv)
> -		return -EINVAL;
> +	if (is_kernel_in_hyp_mode() && !attr->exclude_kernel)
> +		config_base |= ARMV8_PMU_INCLUDE_EL2;
>  	if (attr->exclude_user)
>  		config_base |= ARMV8_PMU_EXCLUDE_EL0;
>  	if (!is_kernel_in_hyp_mode() && attr->exclude_kernel)
>  		config_base |= ARMV8_PMU_EXCLUDE_EL1;
> -	if (!attr->exclude_hv)
> +	if (!is_kernel_in_hyp_mode() && !attr->exclude_hv)
>  		config_base |= ARMV8_PMU_INCLUDE_EL2;

This isn't quite what Will suggested.

The idea was that userspace would read sysfs, then use that to determine
the correct exclusion parameters [1,2]. This logic was not expected to
change; it correctly validates whether we can provide what the user
requests.

Thanks,
Mark.

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/499224.html
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/499493.html

>  
>  	/*
> @@ -1008,6 +1026,8 @@ static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu)
>  		&armv8_pmuv3_events_attr_group;
>  	cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
>  		&armv8_pmuv3_format_attr_group;
> +	cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_ATTR] =
> +		&armv8_pmuv3_attr_group;
>  	return armv8pmu_probe_pmu(cpu_pmu);
>  }
>  
> diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
> index 8462da2..a26ffc7 100644
> --- a/include/linux/perf/arm_pmu.h
> +++ b/include/linux/perf/arm_pmu.h
> @@ -81,6 +81,7 @@ enum armpmu_attr_groups {
>  	ARMPMU_ATTR_GROUP_COMMON,
>  	ARMPMU_ATTR_GROUP_EVENTS,
>  	ARMPMU_ATTR_GROUP_FORMATS,
> +	ARMPMU_ATTR_GROUP_ATTR,
>  	ARMPMU_NR_ATTR_GROUPS
>  };
>  
> -- 
> 1.8.1.4
> 

  reply	other threads:[~2017-04-20  8:49 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-19 17:44 [PATCH v2] arm64: perf: Use only exclude_kernel attribute when kernel is running in HYP Ganapatrao Kulkarni
2017-04-19 17:44 ` Ganapatrao Kulkarni
2017-04-20  8:49 ` Mark Rutland [this message]
2017-04-20  8:49   ` Mark Rutland
2017-04-20  9:26   ` Ganapatrao Kulkarni
2017-04-20  9:26     ` Ganapatrao Kulkarni
2017-04-24 15:45     ` Will Deacon
2017-04-24 15:45       ` Will Deacon
2017-04-25  3:43       ` Ganapatrao Kulkarni
2017-04-25  3:43         ` Ganapatrao Kulkarni
2017-04-25 16:53         ` Will Deacon
2017-04-25 16:53           ` Will Deacon
2017-04-26  6:53           ` Jayachandran C.
2017-04-26  6:53             ` Jayachandran C.
2017-04-26  7:22             ` Pinski, Andrew
2017-04-26 10:10               ` Will Deacon
2017-04-26 10:10                 ` Will Deacon
2017-04-26 13:41                 ` Jayachandran C
2017-04-26 13:41                   ` Jayachandran C
2017-04-27 17:37                   ` Will Deacon
2017-04-27 17:37                     ` Will Deacon
2017-04-28 13:46                     ` Jayachandran C
2017-04-28 13:46                       ` Jayachandran C
2017-04-28 16:38                       ` Will Deacon
2017-04-28 16:38                         ` Will Deacon
2017-05-01 16:10                         ` Jayachandran C
2017-05-01 16:10                           ` Jayachandran C

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=20170420084928.GC31436@leverpostej \
    --to=mark.rutland@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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.