449 lines
16 KiB
Diff
449 lines
16 KiB
Diff
From 3d5c7ff8c993e8f570d32755ba43ae17e02b007e Mon Sep 17 00:00:00 2001
|
|
From: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Date: Fri, 30 Jul 2021 15:44:04 +0800
|
|
Subject: [PATCH 15/55] drivers/perf: hisi: Add PMU version for uncore PMU
|
|
drivers.
|
|
|
|
mainline inclusion
|
|
from mainline-v5.12-rc3
|
|
commit 3da582df575c3b2910e09e0445c27c3ebc8096e5
|
|
category: feature
|
|
bugzilla: 175148
|
|
CVE: NA
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3da582df575c3b2910e09e0445c27c3ebc8096e5
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
For HiSilicon uncore PMU, more versions are supported and some variables
|
|
shall be added suffix to distinguish the version which are prepared for
|
|
the new drivers.
|
|
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Cc: Will Deacon <will@kernel.org>
|
|
Cc: John Garry <john.garry@huawei.com>
|
|
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
|
|
Acked-by: Mark Rutland <mark.rutland@arm.com>
|
|
Reviewed-by: John Garry <john.garry@huawei.com>
|
|
Co-developed-by: Qi Liu <liuqi115@huawei.com>
|
|
Signed-off-by: Qi Liu <liuqi115@huawei.com>
|
|
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Link: https://lore.kernel.org/r/1615186237-22263-4-git-send-email-zhangshaokun@hisilicon.com
|
|
Signed-off-by: Will Deacon <will@kernel.org>
|
|
Reviewed-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
|
|
---
|
|
drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c | 96 ++++++++++---------
|
|
drivers/perf/hisilicon/hisi_uncore_hha_pmu.c | 27 +++---
|
|
drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c | 23 ++---
|
|
3 files changed, 75 insertions(+), 71 deletions(-)
|
|
|
|
diff --git a/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c b/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
|
|
index a03e3f8058b3..1d1c8e9f417e 100644
|
|
--- a/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
|
|
+++ b/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
|
|
@@ -39,7 +39,8 @@
|
|
|
|
/* DDRC has 8-counters */
|
|
#define DDRC_NR_COUNTERS 0x8
|
|
-#define DDRC_PERF_CTRL_EN 0x2
|
|
+#define DDRC_V1_PERF_CTRL_EN 0x2
|
|
+#define DDRC_V1_NR_EVENTS 0x7
|
|
|
|
/*
|
|
* For DDRC PMU, there are eight-events and every event has been mapped
|
|
@@ -56,26 +57,26 @@ static const u32 ddrc_reg_off[] = {
|
|
|
|
/*
|
|
* Select the counter register offset using the counter index.
|
|
- * In DDRC there are no programmable counter, the count
|
|
- * is readed form the statistics counter register itself.
|
|
+ * In PMU v1, there are no programmable counter, the count
|
|
+ * is read form the statistics counter register itself.
|
|
*/
|
|
-static u32 hisi_ddrc_pmu_get_counter_offset(int cntr_idx)
|
|
+static u32 hisi_ddrc_pmu_v1_get_counter_offset(int cntr_idx)
|
|
{
|
|
return ddrc_reg_off[cntr_idx];
|
|
}
|
|
|
|
-static u64 hisi_ddrc_pmu_read_counter(struct hisi_pmu *ddrc_pmu,
|
|
+static u64 hisi_ddrc_pmu_v1_read_counter(struct hisi_pmu *ddrc_pmu,
|
|
struct hw_perf_event *hwc)
|
|
{
|
|
return readl(ddrc_pmu->base +
|
|
- hisi_ddrc_pmu_get_counter_offset(hwc->idx));
|
|
+ hisi_ddrc_pmu_v1_get_counter_offset(hwc->idx));
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_write_counter(struct hisi_pmu *ddrc_pmu,
|
|
+static void hisi_ddrc_pmu_v1_write_counter(struct hisi_pmu *ddrc_pmu,
|
|
struct hw_perf_event *hwc, u64 val)
|
|
{
|
|
writel((u32)val,
|
|
- ddrc_pmu->base + hisi_ddrc_pmu_get_counter_offset(hwc->idx));
|
|
+ ddrc_pmu->base + hisi_ddrc_pmu_v1_get_counter_offset(hwc->idx));
|
|
}
|
|
|
|
/*
|
|
@@ -87,28 +88,28 @@ static void hisi_ddrc_pmu_write_evtype(struct hisi_pmu *hha_pmu, int idx,
|
|
{
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_start_counters(struct hisi_pmu *ddrc_pmu)
|
|
+static void hisi_ddrc_pmu_v1_start_counters(struct hisi_pmu *ddrc_pmu)
|
|
{
|
|
u32 val;
|
|
|
|
/* Set perf_enable in DDRC_PERF_CTRL to start event counting */
|
|
val = readl(ddrc_pmu->base + DDRC_PERF_CTRL);
|
|
- val |= DDRC_PERF_CTRL_EN;
|
|
+ val |= DDRC_V1_PERF_CTRL_EN;
|
|
writel(val, ddrc_pmu->base + DDRC_PERF_CTRL);
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_stop_counters(struct hisi_pmu *ddrc_pmu)
|
|
+static void hisi_ddrc_pmu_v1_stop_counters(struct hisi_pmu *ddrc_pmu)
|
|
{
|
|
u32 val;
|
|
|
|
/* Clear perf_enable in DDRC_PERF_CTRL to stop event counting */
|
|
val = readl(ddrc_pmu->base + DDRC_PERF_CTRL);
|
|
- val &= ~DDRC_PERF_CTRL_EN;
|
|
+ val &= ~DDRC_V1_PERF_CTRL_EN;
|
|
writel(val, ddrc_pmu->base + DDRC_PERF_CTRL);
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_enable_counter(struct hisi_pmu *ddrc_pmu,
|
|
- struct hw_perf_event *hwc)
|
|
+static void hisi_ddrc_pmu_v1_enable_counter(struct hisi_pmu *ddrc_pmu,
|
|
+ struct hw_perf_event *hwc)
|
|
{
|
|
u32 val;
|
|
|
|
@@ -118,8 +119,8 @@ static void hisi_ddrc_pmu_enable_counter(struct hisi_pmu *ddrc_pmu,
|
|
writel(val, ddrc_pmu->base + DDRC_EVENT_CTRL);
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_disable_counter(struct hisi_pmu *ddrc_pmu,
|
|
- struct hw_perf_event *hwc)
|
|
+static void hisi_ddrc_pmu_v1_disable_counter(struct hisi_pmu *ddrc_pmu,
|
|
+ struct hw_perf_event *hwc)
|
|
{
|
|
u32 val;
|
|
|
|
@@ -129,7 +130,7 @@ static void hisi_ddrc_pmu_disable_counter(struct hisi_pmu *ddrc_pmu,
|
|
writel(val, ddrc_pmu->base + DDRC_EVENT_CTRL);
|
|
}
|
|
|
|
-static int hisi_ddrc_pmu_get_event_idx(struct perf_event *event)
|
|
+static int hisi_ddrc_pmu_v1_get_event_idx(struct perf_event *event)
|
|
{
|
|
struct hisi_pmu *ddrc_pmu = to_hisi_pmu(event->pmu);
|
|
unsigned long *used_mask = ddrc_pmu->pmu_events.used_mask;
|
|
@@ -145,8 +146,8 @@ static int hisi_ddrc_pmu_get_event_idx(struct perf_event *event)
|
|
return idx;
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_enable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
- struct hw_perf_event *hwc)
|
|
+static void hisi_ddrc_pmu_v1_enable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
+ struct hw_perf_event *hwc)
|
|
{
|
|
u32 val;
|
|
|
|
@@ -156,8 +157,8 @@ static void hisi_ddrc_pmu_enable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
writel(val, ddrc_pmu->base + DDRC_INT_MASK);
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_disable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
- struct hw_perf_event *hwc)
|
|
+static void hisi_ddrc_pmu_v1_disable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
+ struct hw_perf_event *hwc)
|
|
{
|
|
u32 val;
|
|
|
|
@@ -167,12 +168,13 @@ static void hisi_ddrc_pmu_disable_counter_int(struct hisi_pmu *ddrc_pmu,
|
|
writel(val, ddrc_pmu->base + DDRC_INT_MASK);
|
|
}
|
|
|
|
-static u32 hisi_ddrc_pmu_get_int_status(struct hisi_pmu *ddrc_pmu)
|
|
+static u32 hisi_ddrc_pmu_v1_get_int_status(struct hisi_pmu *ddrc_pmu)
|
|
{
|
|
return readl(ddrc_pmu->base + DDRC_INT_STATUS);
|
|
}
|
|
|
|
-static void hisi_ddrc_pmu_clear_int_status(struct hisi_pmu *ddrc_pmu, int idx)
|
|
+static void hisi_ddrc_pmu_v1_clear_int_status(struct hisi_pmu *ddrc_pmu,
|
|
+ int idx)
|
|
{
|
|
writel(1 << idx, ddrc_pmu->base + DDRC_INT_CLEAR);
|
|
}
|
|
@@ -215,17 +217,17 @@ static int hisi_ddrc_pmu_init_data(struct platform_device *pdev,
|
|
return 0;
|
|
}
|
|
|
|
-static struct attribute *hisi_ddrc_pmu_format_attr[] = {
|
|
+static struct attribute *hisi_ddrc_pmu_v1_format_attr[] = {
|
|
HISI_PMU_FORMAT_ATTR(event, "config:0-4"),
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_ddrc_pmu_format_group = {
|
|
+static const struct attribute_group hisi_ddrc_pmu_v1_format_group = {
|
|
.name = "format",
|
|
- .attrs = hisi_ddrc_pmu_format_attr,
|
|
+ .attrs = hisi_ddrc_pmu_v1_format_attr,
|
|
};
|
|
|
|
-static struct attribute *hisi_ddrc_pmu_events_attr[] = {
|
|
+static struct attribute *hisi_ddrc_pmu_v1_events_attr[] = {
|
|
HISI_PMU_EVENT_ATTR(flux_wr, 0x00),
|
|
HISI_PMU_EVENT_ATTR(flux_rd, 0x01),
|
|
HISI_PMU_EVENT_ATTR(flux_wcmd, 0x02),
|
|
@@ -237,9 +239,9 @@ static struct attribute *hisi_ddrc_pmu_events_attr[] = {
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_ddrc_pmu_events_group = {
|
|
+static const struct attribute_group hisi_ddrc_pmu_v1_events_group = {
|
|
.name = "events",
|
|
- .attrs = hisi_ddrc_pmu_events_attr,
|
|
+ .attrs = hisi_ddrc_pmu_v1_events_attr,
|
|
};
|
|
|
|
static DEVICE_ATTR(cpumask, 0444, hisi_cpumask_sysfs_show, NULL);
|
|
@@ -265,27 +267,27 @@ static struct attribute_group hisi_ddrc_pmu_identifier_group = {
|
|
.attrs = hisi_ddrc_pmu_identifier_attrs,
|
|
};
|
|
|
|
-static const struct attribute_group *hisi_ddrc_pmu_attr_groups[] = {
|
|
- &hisi_ddrc_pmu_format_group,
|
|
- &hisi_ddrc_pmu_events_group,
|
|
+static const struct attribute_group *hisi_ddrc_pmu_v1_attr_groups[] = {
|
|
+ &hisi_ddrc_pmu_v1_format_group,
|
|
+ &hisi_ddrc_pmu_v1_events_group,
|
|
&hisi_ddrc_pmu_cpumask_attr_group,
|
|
&hisi_ddrc_pmu_identifier_group,
|
|
NULL,
|
|
};
|
|
|
|
-static const struct hisi_uncore_ops hisi_uncore_ddrc_ops = {
|
|
+static const struct hisi_uncore_ops hisi_uncore_ddrc_v1_ops = {
|
|
.write_evtype = hisi_ddrc_pmu_write_evtype,
|
|
- .get_event_idx = hisi_ddrc_pmu_get_event_idx,
|
|
- .start_counters = hisi_ddrc_pmu_start_counters,
|
|
- .stop_counters = hisi_ddrc_pmu_stop_counters,
|
|
- .enable_counter = hisi_ddrc_pmu_enable_counter,
|
|
- .disable_counter = hisi_ddrc_pmu_disable_counter,
|
|
- .enable_counter_int = hisi_ddrc_pmu_enable_counter_int,
|
|
- .disable_counter_int = hisi_ddrc_pmu_disable_counter_int,
|
|
- .write_counter = hisi_ddrc_pmu_write_counter,
|
|
- .read_counter = hisi_ddrc_pmu_read_counter,
|
|
- .get_int_status = hisi_ddrc_pmu_get_int_status,
|
|
- .clear_int_status = hisi_ddrc_pmu_clear_int_status,
|
|
+ .get_event_idx = hisi_ddrc_pmu_v1_get_event_idx,
|
|
+ .start_counters = hisi_ddrc_pmu_v1_start_counters,
|
|
+ .stop_counters = hisi_ddrc_pmu_v1_stop_counters,
|
|
+ .enable_counter = hisi_ddrc_pmu_v1_enable_counter,
|
|
+ .disable_counter = hisi_ddrc_pmu_v1_disable_counter,
|
|
+ .enable_counter_int = hisi_ddrc_pmu_v1_enable_counter_int,
|
|
+ .disable_counter_int = hisi_ddrc_pmu_v1_disable_counter_int,
|
|
+ .write_counter = hisi_ddrc_pmu_v1_write_counter,
|
|
+ .read_counter = hisi_ddrc_pmu_v1_read_counter,
|
|
+ .get_int_status = hisi_ddrc_pmu_v1_get_int_status,
|
|
+ .clear_int_status = hisi_ddrc_pmu_v1_clear_int_status,
|
|
};
|
|
|
|
static int hisi_ddrc_pmu_dev_probe(struct platform_device *pdev,
|
|
@@ -303,10 +305,10 @@ static int hisi_ddrc_pmu_dev_probe(struct platform_device *pdev,
|
|
|
|
ddrc_pmu->num_counters = DDRC_NR_COUNTERS;
|
|
ddrc_pmu->counter_bits = 32;
|
|
- ddrc_pmu->ops = &hisi_uncore_ddrc_ops;
|
|
+ ddrc_pmu->ops = &hisi_uncore_ddrc_v1_ops;
|
|
ddrc_pmu->dev = &pdev->dev;
|
|
ddrc_pmu->on_cpu = -1;
|
|
- ddrc_pmu->check_event = 7;
|
|
+ ddrc_pmu->check_event = DDRC_V1_NR_EVENTS;
|
|
|
|
return 0;
|
|
}
|
|
@@ -348,7 +350,7 @@ static int hisi_ddrc_pmu_probe(struct platform_device *pdev)
|
|
.start = hisi_uncore_pmu_start,
|
|
.stop = hisi_uncore_pmu_stop,
|
|
.read = hisi_uncore_pmu_read,
|
|
- .attr_groups = hisi_ddrc_pmu_attr_groups,
|
|
+ .attr_groups = hisi_ddrc_pmu_v1_attr_groups,
|
|
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
|
};
|
|
|
|
diff --git a/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c b/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
index 536d1f637fa7..7941900ea667 100644
|
|
--- a/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
+++ b/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
@@ -36,10 +36,11 @@
|
|
#define HHA_CNT0_LOWER 0x1F00
|
|
|
|
/* HHA has 16-counters */
|
|
-#define HHA_NR_COUNTERS 0x10
|
|
+#define HHA_V1_NR_COUNTERS 0x10
|
|
|
|
#define HHA_PERF_CTRL_EN 0x1
|
|
#define HHA_EVTYPE_NONE 0xff
|
|
+#define HHA_V1_NR_EVENT 0x65
|
|
|
|
/*
|
|
* Select the counter register offset using the counter index
|
|
@@ -209,17 +210,17 @@ static int hisi_hha_pmu_init_data(struct platform_device *pdev,
|
|
return 0;
|
|
}
|
|
|
|
-static struct attribute *hisi_hha_pmu_format_attr[] = {
|
|
+static struct attribute *hisi_hha_pmu_v1_format_attr[] = {
|
|
HISI_PMU_FORMAT_ATTR(event, "config:0-7"),
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_hha_pmu_format_group = {
|
|
+static const struct attribute_group hisi_hha_pmu_v1_format_group = {
|
|
.name = "format",
|
|
- .attrs = hisi_hha_pmu_format_attr,
|
|
+ .attrs = hisi_hha_pmu_v1_format_attr,
|
|
};
|
|
|
|
-static struct attribute *hisi_hha_pmu_events_attr[] = {
|
|
+static struct attribute *hisi_hha_pmu_v1_events_attr[] = {
|
|
HISI_PMU_EVENT_ATTR(rx_ops_num, 0x00),
|
|
HISI_PMU_EVENT_ATTR(rx_outer, 0x01),
|
|
HISI_PMU_EVENT_ATTR(rx_sccl, 0x02),
|
|
@@ -249,9 +250,9 @@ static struct attribute *hisi_hha_pmu_events_attr[] = {
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_hha_pmu_events_group = {
|
|
+static const struct attribute_group hisi_hha_pmu_v1_events_group = {
|
|
.name = "events",
|
|
- .attrs = hisi_hha_pmu_events_attr,
|
|
+ .attrs = hisi_hha_pmu_v1_events_attr,
|
|
};
|
|
|
|
static DEVICE_ATTR(cpumask, 0444, hisi_cpumask_sysfs_show, NULL);
|
|
@@ -277,9 +278,9 @@ static struct attribute_group hisi_hha_pmu_identifier_group = {
|
|
.attrs = hisi_hha_pmu_identifier_attrs,
|
|
};
|
|
|
|
-static const struct attribute_group *hisi_hha_pmu_attr_groups[] = {
|
|
- &hisi_hha_pmu_format_group,
|
|
- &hisi_hha_pmu_events_group,
|
|
+static const struct attribute_group *hisi_hha_pmu_v1_attr_groups[] = {
|
|
+ &hisi_hha_pmu_v1_format_group,
|
|
+ &hisi_hha_pmu_v1_events_group,
|
|
&hisi_hha_pmu_cpumask_attr_group,
|
|
&hisi_hha_pmu_identifier_group,
|
|
NULL,
|
|
@@ -313,12 +314,12 @@ static int hisi_hha_pmu_dev_probe(struct platform_device *pdev,
|
|
if (ret)
|
|
return ret;
|
|
|
|
- hha_pmu->num_counters = HHA_NR_COUNTERS;
|
|
+ hha_pmu->num_counters = HHA_V1_NR_COUNTERS;
|
|
hha_pmu->counter_bits = 48;
|
|
hha_pmu->ops = &hisi_uncore_hha_ops;
|
|
hha_pmu->dev = &pdev->dev;
|
|
hha_pmu->on_cpu = -1;
|
|
- hha_pmu->check_event = 0x65;
|
|
+ hha_pmu->check_event = HHA_V1_NR_EVENT;
|
|
|
|
return 0;
|
|
}
|
|
@@ -360,7 +361,7 @@ static int hisi_hha_pmu_probe(struct platform_device *pdev)
|
|
.start = hisi_uncore_pmu_start,
|
|
.stop = hisi_uncore_pmu_stop,
|
|
.read = hisi_uncore_pmu_read,
|
|
- .attr_groups = hisi_hha_pmu_attr_groups,
|
|
+ .attr_groups = hisi_hha_pmu_v1_attr_groups,
|
|
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
|
};
|
|
|
|
diff --git a/drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c b/drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c
|
|
index 5256e4ce3384..5a4975e64368 100644
|
|
--- a/drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c
|
|
+++ b/drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c
|
|
@@ -40,6 +40,7 @@
|
|
|
|
#define L3C_PERF_CTRL_EN 0x10000
|
|
#define L3C_EVTYPE_NONE 0xff
|
|
+#define L3C_V1_NR_EVENTS 0x59
|
|
|
|
/*
|
|
* Select the counter register offset using the counter index
|
|
@@ -212,17 +213,17 @@ static int hisi_l3c_pmu_init_data(struct platform_device *pdev,
|
|
return 0;
|
|
}
|
|
|
|
-static struct attribute *hisi_l3c_pmu_format_attr[] = {
|
|
+static struct attribute *hisi_l3c_pmu_v1_format_attr[] = {
|
|
HISI_PMU_FORMAT_ATTR(event, "config:0-7"),
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_l3c_pmu_format_group = {
|
|
+static const struct attribute_group hisi_l3c_pmu_v1_format_group = {
|
|
.name = "format",
|
|
- .attrs = hisi_l3c_pmu_format_attr,
|
|
+ .attrs = hisi_l3c_pmu_v1_format_attr,
|
|
};
|
|
|
|
-static struct attribute *hisi_l3c_pmu_events_attr[] = {
|
|
+static struct attribute *hisi_l3c_pmu_v1_events_attr[] = {
|
|
HISI_PMU_EVENT_ATTR(rd_cpipe, 0x00),
|
|
HISI_PMU_EVENT_ATTR(wr_cpipe, 0x01),
|
|
HISI_PMU_EVENT_ATTR(rd_hit_cpipe, 0x02),
|
|
@@ -239,9 +240,9 @@ static struct attribute *hisi_l3c_pmu_events_attr[] = {
|
|
NULL,
|
|
};
|
|
|
|
-static const struct attribute_group hisi_l3c_pmu_events_group = {
|
|
+static const struct attribute_group hisi_l3c_pmu_v1_events_group = {
|
|
.name = "events",
|
|
- .attrs = hisi_l3c_pmu_events_attr,
|
|
+ .attrs = hisi_l3c_pmu_v1_events_attr,
|
|
};
|
|
|
|
static DEVICE_ATTR(cpumask, 0444, hisi_cpumask_sysfs_show, NULL);
|
|
@@ -267,9 +268,9 @@ static struct attribute_group hisi_l3c_pmu_identifier_group = {
|
|
.attrs = hisi_l3c_pmu_identifier_attrs,
|
|
};
|
|
|
|
-static const struct attribute_group *hisi_l3c_pmu_attr_groups[] = {
|
|
- &hisi_l3c_pmu_format_group,
|
|
- &hisi_l3c_pmu_events_group,
|
|
+static const struct attribute_group *hisi_l3c_pmu_v1_attr_groups[] = {
|
|
+ &hisi_l3c_pmu_v1_format_group,
|
|
+ &hisi_l3c_pmu_v1_events_group,
|
|
&hisi_l3c_pmu_cpumask_attr_group,
|
|
&hisi_l3c_pmu_identifier_group,
|
|
NULL,
|
|
@@ -308,7 +309,7 @@ static int hisi_l3c_pmu_dev_probe(struct platform_device *pdev,
|
|
l3c_pmu->ops = &hisi_uncore_l3c_ops;
|
|
l3c_pmu->dev = &pdev->dev;
|
|
l3c_pmu->on_cpu = -1;
|
|
- l3c_pmu->check_event = 0x59;
|
|
+ l3c_pmu->check_event = L3C_V1_NR_EVENTS;
|
|
|
|
return 0;
|
|
}
|
|
@@ -350,7 +351,7 @@ static int hisi_l3c_pmu_probe(struct platform_device *pdev)
|
|
.start = hisi_uncore_pmu_start,
|
|
.stop = hisi_uncore_pmu_stop,
|
|
.read = hisi_uncore_pmu_read,
|
|
- .attr_groups = hisi_l3c_pmu_attr_groups,
|
|
+ .attr_groups = hisi_l3c_pmu_v1_attr_groups,
|
|
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
|
};
|
|
|
|
--
|
|
2.27.0
|
|
|