Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1300670 > unrolled thread
| Started by | "Suzuki K. Poulose" <suzuki.poulose@arm.com> |
|---|---|
| First post | 2016-01-04 13:00 +0100 |
| Last post | 2016-01-05 11:00 +0100 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v5 01/11] arm-cci: Define CCI counter period "Suzuki K. Poulose" <suzuki.poulose@arm.com> - 2016-01-04 13:00 +0100
Re: [PATCH v5 01/11] arm-cci: Define CCI counter period Mark Rutland <mark.rutland@arm.com> - 2016-01-04 19:30 +0100
Re: [PATCH v5 01/11] arm-cci: Define CCI counter period "Suzuki K. Poulose" <Suzuki.Poulose@arm.com> - 2016-01-05 11:00 +0100
| From | "Suzuki K. Poulose" <suzuki.poulose@arm.com> |
|---|---|
| Date | 2016-01-04 13:00 +0100 |
| Subject | [PATCH v5 01/11] arm-cci: Define CCI counter period |
| Message-ID | <qNbXQ-2ZX-25@gated-at.bofh.it> |
Instead of hard coding the period we program on the PMU
counters, define a symbol.
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Punit Agrawal <punit.agrawal@arm.com>
Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
---
drivers/bus/arm-cci.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
index ee47e6b..3786879 100644
--- a/drivers/bus/arm-cci.c
+++ b/drivers/bus/arm-cci.c
@@ -85,6 +85,14 @@ static const struct of_device_id arm_cci_matches[] = {
#define CCI_PMU_CNTR_MASK ((1ULL << 32) -1)
#define CCI_PMU_CNTR_LAST(cci_pmu) (cci_pmu->num_cntrs - 1)
+/*
+ * The CCI PMU counters have a period of 2^32. To account for the
+ * possiblity of extreme interrupt latency we program for a period of
+ * half that. Hopefully we can handle the interrupt before another 2^31
+ * events occur and the counter overtakes its previous value.
+ */
+#define CCI_CNTR_PERIOD (1UL << 31)
+
#define CCI_PMU_MAX_HW_CNTRS(model) \
((model)->num_hw_cntrs + (model)->fixed_hw_cntrs)
@@ -797,15 +805,8 @@ static void pmu_read(struct perf_event *event)
void pmu_event_set_period(struct perf_event *event)
{
struct hw_perf_event *hwc = &event->hw;
- /*
- * The CCI PMU counters have a period of 2^32. To account for the
- * possiblity of extreme interrupt latency we program for a period of
- * half that. Hopefully we can handle the interrupt before another 2^31
- * events occur and the counter overtakes its previous value.
- */
- u64 val = 1ULL << 31;
- local64_set(&hwc->prev_count, val);
- pmu_write_counter(event, val);
+ local64_set(&hwc->prev_count, CCI_CNTR_PERIOD);
+ pmu_write_counter(event, CCI_CNTR_PERIOD);
}
static irqreturn_t pmu_handle_irq(int irq_num, void *dev)
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Mark Rutland <mark.rutland@arm.com> |
|---|---|
| Date | 2016-01-04 19:30 +0100 |
| Message-ID | <qNi3g-76n-1@gated-at.bofh.it> |
| In reply to | #1300670 |
On Mon, Jan 04, 2016 at 11:54:40AM +0000, Suzuki K. Poulose wrote:
> Instead of hard coding the period we program on the PMU
> counters, define a symbol.
>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Punit Agrawal <punit.agrawal@arm.com>
> Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
> ---
> drivers/bus/arm-cci.c | 19 ++++++++++---------
> 1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
> index ee47e6b..3786879 100644
> --- a/drivers/bus/arm-cci.c
> +++ b/drivers/bus/arm-cci.c
> @@ -85,6 +85,14 @@ static const struct of_device_id arm_cci_matches[] = {
> #define CCI_PMU_CNTR_MASK ((1ULL << 32) -1)
> #define CCI_PMU_CNTR_LAST(cci_pmu) (cci_pmu->num_cntrs - 1)
>
> +/*
> + * The CCI PMU counters have a period of 2^32. To account for the
> + * possiblity of extreme interrupt latency we program for a period of
> + * half that. Hopefully we can handle the interrupt before another 2^31
> + * events occur and the counter overtakes its previous value.
> + */
> +#define CCI_CNTR_PERIOD (1UL << 31)
> +
> #define CCI_PMU_MAX_HW_CNTRS(model) \
> ((model)->num_hw_cntrs + (model)->fixed_hw_cntrs)
>
> @@ -797,15 +805,8 @@ static void pmu_read(struct perf_event *event)
> void pmu_event_set_period(struct perf_event *event)
> {
> struct hw_perf_event *hwc = &event->hw;
> - /*
> - * The CCI PMU counters have a period of 2^32. To account for the
> - * possiblity of extreme interrupt latency we program for a period of
> - * half that. Hopefully we can handle the interrupt before another 2^31
> - * events occur and the counter overtakes its previous value.
> - */
> - u64 val = 1ULL << 31;
> - local64_set(&hwc->prev_count, val);
> - pmu_write_counter(event, val);
> + local64_set(&hwc->prev_count, CCI_CNTR_PERIOD);
> + pmu_write_counter(event, CCI_CNTR_PERIOD);
I think this is a little misleading (and confusing), as we're conflating
the period with its inverse. This wouldn't work for any other value of
CCI_CNTR_PERIOD.
Perhaps s/PERIOD/START_VAL/, leaving everything else as-is?
Thanks,
Mark.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Suzuki K. Poulose" <Suzuki.Poulose@arm.com> |
|---|---|
| Date | 2016-01-05 11:00 +0100 |
| Message-ID | <qNwzh-j5-31@gated-at.bofh.it> |
| In reply to | #1300929 |
On 04/01/16 18:27, Mark Rutland wrote: > On Mon, Jan 04, 2016 at 11:54:40AM +0000, Suzuki K. Poulose wrote: >> Instead of hard coding the period we program on the PMU >> counters, define a symbol. >> >> - u64 val = 1ULL << 31; >> - local64_set(&hwc->prev_count, val); >> - pmu_write_counter(event, val); >> + local64_set(&hwc->prev_count, CCI_CNTR_PERIOD); >> + pmu_write_counter(event, CCI_CNTR_PERIOD); > > I think this is a little misleading (and confusing), as we're conflating > the period with its inverse. This wouldn't work for any other value of > CCI_CNTR_PERIOD. > > Perhaps s/PERIOD/START_VAL/, leaving everything else as-is? You are right, will change it. Cheers Suzuki -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web