From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 6/7] arm64/perf: Filter common events based on PMCEIDn_EL0
Date: Wed, 20 Apr 2016 15:52:58 +0100 [thread overview]
Message-ID: <20160420145258.GC15229@leverpostej> (raw)
In-Reply-To: <1461092062-7484-7-git-send-email-ashoks@broadcom.com>
On Tue, Apr 19, 2016 at 11:54:21AM -0700, Ashok Kumar wrote:
> +static ssize_t
> +armv8pmu_events_sysfs_show(struct device *dev,
> + struct device_attribute *attr, char *page)
> +{
> + struct perf_pmu_events_attr *pmu_attr;
> +
> + pmu_attr = container_of(attr, struct perf_pmu_events_attr, attr);
> +
> + return sprintf(page, "event=0x%02llx\n", pmu_attr->id);
> +}
It might be best to make that %03llx from the outset. Event encodings
are 10 bits, and the ARM ARM lists them all as 0xNNN (i.e. with three
hex digits).
> -static void armv8pmu_read_num_pmnc_events(void *info)
> +static void armv8pmu_read_num_pmnc_events(int *nb_cnt)
> {
> - int *nb_cnt = info;
> -
> /* Read the nb of CNTx counters supported from PMNC */
> *nb_cnt = (armv8pmu_pmcr_read() >> ARMV8_PMU_PMCR_N_SHIFT) & ARMV8_PMU_PMCR_N_MASK;
>
> @@ -870,11 +898,30 @@ static void armv8pmu_read_num_pmnc_events(void *info)
> *nb_cnt += 1;
> }
>
> -static int armv8pmu_probe_num_events(struct arm_pmu *arm_pmu)
> +static void armv8pmu_read_common_events_bitmap(unsigned long *bmp)
> +{
> + u32 arr[2];
> +
> + arr[0] = read_sysreg(pmceid0_el0);
> + arr[1] = read_sysreg(pmceid1_el0);
> +
> + bitmap_from_u32array(bmp, ARMV8_PMUV3_MAX_COMMON_EVENTS,
> + arr, ARRAY_SIZE(arr));
> +}
I'd recommend s/arr/pmceid/ here.
> +static void __armv8pmu_probe_pmu(void *info)
> +{
> + struct arm_pmu *cpu_pmu = info;
> +
> + armv8pmu_read_num_pmnc_events(&cpu_pmu->num_events);
> + armv8pmu_read_common_events_bitmap(cpu_pmu->pmceid_bitmap);
> +}
We may as well just fold these in to the same function; passwing
pointers to fields feels a little odd.
Otherwise this looks good to me.
Thanks,
Mark.
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
To: Ashok Kumar <ashoks-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org,
Suzuki.Poulose-5wv7dgnIgG8@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
catalin.marinas-5wv7dgnIgG8@public.gmane.org,
jchandra-dY08KVG/lbpWk0Htik3J/w@public.gmane.org,
jglauber-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH v5 6/7] arm64/perf: Filter common events based on PMCEIDn_EL0
Date: Wed, 20 Apr 2016 15:52:58 +0100 [thread overview]
Message-ID: <20160420145258.GC15229@leverpostej> (raw)
In-Reply-To: <1461092062-7484-7-git-send-email-ashoks-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
On Tue, Apr 19, 2016 at 11:54:21AM -0700, Ashok Kumar wrote:
> +static ssize_t
> +armv8pmu_events_sysfs_show(struct device *dev,
> + struct device_attribute *attr, char *page)
> +{
> + struct perf_pmu_events_attr *pmu_attr;
> +
> + pmu_attr = container_of(attr, struct perf_pmu_events_attr, attr);
> +
> + return sprintf(page, "event=0x%02llx\n", pmu_attr->id);
> +}
It might be best to make that %03llx from the outset. Event encodings
are 10 bits, and the ARM ARM lists them all as 0xNNN (i.e. with three
hex digits).
> -static void armv8pmu_read_num_pmnc_events(void *info)
> +static void armv8pmu_read_num_pmnc_events(int *nb_cnt)
> {
> - int *nb_cnt = info;
> -
> /* Read the nb of CNTx counters supported from PMNC */
> *nb_cnt = (armv8pmu_pmcr_read() >> ARMV8_PMU_PMCR_N_SHIFT) & ARMV8_PMU_PMCR_N_MASK;
>
> @@ -870,11 +898,30 @@ static void armv8pmu_read_num_pmnc_events(void *info)
> *nb_cnt += 1;
> }
>
> -static int armv8pmu_probe_num_events(struct arm_pmu *arm_pmu)
> +static void armv8pmu_read_common_events_bitmap(unsigned long *bmp)
> +{
> + u32 arr[2];
> +
> + arr[0] = read_sysreg(pmceid0_el0);
> + arr[1] = read_sysreg(pmceid1_el0);
> +
> + bitmap_from_u32array(bmp, ARMV8_PMUV3_MAX_COMMON_EVENTS,
> + arr, ARRAY_SIZE(arr));
> +}
I'd recommend s/arr/pmceid/ here.
> +static void __armv8pmu_probe_pmu(void *info)
> +{
> + struct arm_pmu *cpu_pmu = info;
> +
> + armv8pmu_read_num_pmnc_events(&cpu_pmu->num_events);
> + armv8pmu_read_common_events_bitmap(cpu_pmu->pmceid_bitmap);
> +}
We may as well just fold these in to the same function; passwing
pointers to fields feels a little odd.
Otherwise this looks good to me.
Thanks,
Mark.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-04-20 14:52 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-19 18:54 [PATCH v5 0/7] arm64: perf: Broadcom Vulcan PMU support Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-19 18:54 ` [PATCH v5 1/7] Documentation: arm64: pmu: Add Broadcom Vulcan PMU binding Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 11:15 ` Mark Rutland
2016-04-20 11:15 ` Mark Rutland
2016-04-19 18:54 ` [PATCH v5 2/7] arm64: dts: Add Broadcom Vulcan PMU in dts Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 11:16 ` Mark Rutland
2016-04-20 11:16 ` Mark Rutland
2016-04-19 18:54 ` [PATCH v5 3/7] arm64/perf: Changed events naming as per ARM ARM Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 13:34 ` Mark Rutland
2016-04-20 13:34 ` Mark Rutland
2016-04-20 13:43 ` Mark Rutland
2016-04-20 13:43 ` Mark Rutland
2016-04-21 9:21 ` Ashok Kumar
2016-04-21 9:21 ` Ashok Kumar
2016-04-21 9:21 ` Ashok Kumar
2016-04-21 9:26 ` Mark Rutland
2016-04-21 9:26 ` Mark Rutland
2016-04-21 9:21 ` Ashok Kumar
2016-04-19 18:54 ` [PATCH v5 4/7] arm64/perf: Define complete ARMv8 recommended implementation defined events Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 14:24 ` Mark Rutland
2016-04-20 14:24 ` Mark Rutland
2016-04-19 18:54 ` [PATCH v5 5/7] arm64/perf: Access pmu register using <read/write>_sys_reg Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 11:12 ` Mark Rutland
2016-04-20 11:12 ` Mark Rutland
2016-04-19 18:54 ` [PATCH v5 6/7] arm64/perf: Filter common events based on PMCEIDn_EL0 Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
2016-04-20 14:52 ` Mark Rutland [this message]
2016-04-20 14:52 ` Mark Rutland
2016-04-19 18:54 ` [PATCH v5 7/7] arm64/perf: Add Broadcom Vulcan PMU support Ashok Kumar
2016-04-19 18:54 ` Ashok Kumar
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=20160420145258.GC15229@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.