From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 4/5] arm64/perf: Enable PMCR long cycle counter bit
Date: Mon, 29 Feb 2016 15:39:35 +0000 [thread overview]
Message-ID: <20160229153934.GB14848@arm.com> (raw)
In-Reply-To: <467597048eda3004bd69f1fbe3981aab111e00dd.1455810755.git.jglauber@cavium.com>
Hi Jan,
I've queued this lot on my perf/updates branch, but I just noticed an
oddity whilst dealing with some potential conflicts with the kvm tree.
On Thu, Feb 18, 2016 at 05:50:13PM +0100, Jan Glauber wrote:
> With the long cycle counter bit (LC) disabled the cycle counter is not
> working on ThunderX SOC (ThunderX only implements Aarch64).
> Also, according to documentation LC == 0 is deprecated.
>
> To keep the code simple the patch does not introduce 64 bit wide counter
> functions. Instead writing the cycle counter always sets the upper
> 32 bits so overflow interrupts are generated as before.
>
> Original patch from Andrew Pinksi <Andrew.Pinksi@caviumnetworks.com>
>
> Signed-off-by: Jan Glauber <jglauber@cavium.com>
> ---
> arch/arm64/kernel/perf_event.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c
> index 0ed05f6..c68fa98 100644
> --- a/arch/arm64/kernel/perf_event.c
> +++ b/arch/arm64/kernel/perf_event.c
> @@ -405,6 +405,7 @@ static const struct attribute_group *armv8_pmuv3_attr_groups[] = {
> #define ARMV8_PMCR_D (1 << 3) /* CCNT counts every 64th cpu cycle */
> #define ARMV8_PMCR_X (1 << 4) /* Export to ETM */
> #define ARMV8_PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/
> +#define ARMV8_PMCR_LC (1 << 6) /* Overflow on 64 bit cycle counter */
> #define ARMV8_PMCR_N_SHIFT 11 /* Number of counters supported */
> #define ARMV8_PMCR_N_MASK 0x1f
> #define ARMV8_PMCR_MASK 0x3f /* Mask for writable bits */
You haven't extended this mask to cover the LC bit, so it will be ignored
by armv8pmu_pmcr_write afaict.
How did you test this? I can easily update the mask, but it would be
good to know that it doesn't end up cause a breakage.
Will
WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: Jan Glauber <jglauber@cavium.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, marc.zyngier@arm.com
Subject: Re: [PATCH v4 4/5] arm64/perf: Enable PMCR long cycle counter bit
Date: Mon, 29 Feb 2016 15:39:35 +0000 [thread overview]
Message-ID: <20160229153934.GB14848@arm.com> (raw)
In-Reply-To: <467597048eda3004bd69f1fbe3981aab111e00dd.1455810755.git.jglauber@cavium.com>
Hi Jan,
I've queued this lot on my perf/updates branch, but I just noticed an
oddity whilst dealing with some potential conflicts with the kvm tree.
On Thu, Feb 18, 2016 at 05:50:13PM +0100, Jan Glauber wrote:
> With the long cycle counter bit (LC) disabled the cycle counter is not
> working on ThunderX SOC (ThunderX only implements Aarch64).
> Also, according to documentation LC == 0 is deprecated.
>
> To keep the code simple the patch does not introduce 64 bit wide counter
> functions. Instead writing the cycle counter always sets the upper
> 32 bits so overflow interrupts are generated as before.
>
> Original patch from Andrew Pinksi <Andrew.Pinksi@caviumnetworks.com>
>
> Signed-off-by: Jan Glauber <jglauber@cavium.com>
> ---
> arch/arm64/kernel/perf_event.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c
> index 0ed05f6..c68fa98 100644
> --- a/arch/arm64/kernel/perf_event.c
> +++ b/arch/arm64/kernel/perf_event.c
> @@ -405,6 +405,7 @@ static const struct attribute_group *armv8_pmuv3_attr_groups[] = {
> #define ARMV8_PMCR_D (1 << 3) /* CCNT counts every 64th cpu cycle */
> #define ARMV8_PMCR_X (1 << 4) /* Export to ETM */
> #define ARMV8_PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/
> +#define ARMV8_PMCR_LC (1 << 6) /* Overflow on 64 bit cycle counter */
> #define ARMV8_PMCR_N_SHIFT 11 /* Number of counters supported */
> #define ARMV8_PMCR_N_MASK 0x1f
> #define ARMV8_PMCR_MASK 0x3f /* Mask for writable bits */
You haven't extended this mask to cover the LC bit, so it will be ignored
by armv8pmu_pmcr_write afaict.
How did you test this? I can easily update the mask, but it would be
good to know that it doesn't end up cause a breakage.
Will
next prev parent reply other threads:[~2016-02-29 15:39 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-18 16:50 [PATCH v4 0/5] Cavium ThunderX PMU support Jan Glauber
2016-02-18 16:50 ` Jan Glauber
2016-02-18 16:50 ` [PATCH v4 1/5] arm64/perf: Rename Cortex A57 events Jan Glauber
2016-02-18 16:50 ` Jan Glauber
2016-02-18 16:50 ` [PATCH v4 2/5] arm64/perf: Add Cavium ThunderX PMU support Jan Glauber
2016-02-18 16:50 ` Jan Glauber
2016-02-18 16:50 ` [PATCH v4 3/5] arm64: dts: Add Cavium ThunderX specific PMU Jan Glauber
2016-02-18 16:50 ` Jan Glauber
2016-02-18 17:32 ` Will Deacon
2016-02-18 17:32 ` Will Deacon
2016-02-18 18:37 ` David Daney
2016-02-18 18:37 ` David Daney
2016-02-22 12:40 ` Jan Glauber
2016-02-22 12:40 ` Jan Glauber
2016-02-18 16:50 ` [PATCH v4 4/5] arm64/perf: Enable PMCR long cycle counter bit Jan Glauber
2016-02-18 16:50 ` Jan Glauber
2016-02-18 17:34 ` Will Deacon
2016-02-18 17:34 ` Will Deacon
2016-02-18 18:28 ` Jan Glauber
2016-02-18 18:28 ` Jan Glauber
2016-02-18 18:57 ` David Daney
2016-02-18 18:57 ` David Daney
2016-02-22 12:45 ` Jan Glauber
2016-02-22 12:45 ` Jan Glauber
2016-02-22 13:41 ` Will Deacon
2016-02-22 13:41 ` Will Deacon
2016-02-29 15:39 ` Will Deacon [this message]
2016-02-29 15:39 ` Will Deacon
2016-03-01 7:21 ` Jan Glauber
2016-03-01 7:21 ` Jan Glauber
2016-03-01 15:10 ` Jan Glauber
2016-03-01 15:10 ` Jan Glauber
2016-02-18 16:50 ` [PATCH v4 5/5] arm64/perf: Extend event mask for ARMv8.1 Jan Glauber
2016-02-18 16:50 ` Jan Glauber
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=20160229153934.GB14848@arm.com \
--to=will.deacon@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.