RE: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-10-05 Thread Kasiviswanathan, Harish
[AMD Official Use Only - Internal Distribution Only]

This patch series Reviewed-By: Harish Kasiviswanathan 


-Original Message-
From: Kim, Jonathan  
Sent: Friday, October 2, 2020 4:19 PM
To: amd-gfx@lists.freedesktop.org
Cc: Kasiviswanathan, Harish ; Kim, Jonathan 

Subject: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 

v4: Align with patch 2 with struct improvements
v3: Align with patch 2 streamlining perf types versus event config types.
v2: Resend for re-review with alignment for v3 in patch 2.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 49 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index 20c500f61b40..d29226f7b6ea 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -35,6 +35,9 @@
 #define NUM_EVENT_TYPES_VEGA20 1
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  NUM_EVENTS_VEGA20_XGMI
+#define NUM_EVENT_TYPES_ARCTURUS   1
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAXNUM_EVENTS_ARCTURUS_XGMI
 
 struct amdgpu_pmu_event_attribute {
struct device_attribute attr;
@@ -174,6 +177,36 @@ static struct amdgpu_pmu_config df_vega20_config = {
.num_types = 0
 };
 
+/* Arcturus events */
+static struct amdgpu_pmu_attr arcturus_events[NUM_EVENTS_ARCTURUS_MAX] = {
+   { .name = "xgmi_link0_data_outbound",
+   .config = "event=0x7,instance=0x4b,umask=0x2" },
+   { .name = "xgmi_link1_data_outbound",
+   .config = "event=0x7,instance=0x4c,umask=0x2" },
+   { .name = "xgmi_link2_data_outbound",
+   .config = "event=0x7,instance=0x4d,umask=0x2" },
+   { .name = "xgmi_link3_data_outbound",
+   .config = "event=0x7,instance=0x4e,umask=0x2" },
+   { .name = "xgmi_link4_data_outbound",
+   .config = "event=0x7,instance=0x4f,umask=0x2" },
+   { .name = "xgmi_link5_data_outbound",
+   .config = "event=0x7,instance=0x50,umask=0x2" } };
+
+static struct amdgpu_pmu_type arcturus_types[NUM_EVENT_TYPES_ARCTURUS] = {
+   { .type = AMDGPU_PMU_EVENT_CONFIG_TYPE_XGMI,
+   .num_of_type = NUM_EVENTS_ARCTURUS_XGMI } };
+
+static struct amdgpu_pmu_config arcturus_config = {
+   .formats = amdgpu_pmu_formats,
+   .num_formats = ARRAY_SIZE(amdgpu_pmu_formats),
+   .events = arcturus_events,
+   .num_events = ARRAY_SIZE(arcturus_events),
+   .types = arcturus_types,
+   .num_types = ARRAY_SIZE(arcturus_types) };
+
 /* initialize perf counter */
 static int amdgpu_perf_event_init(struct perf_event *event)  { @@ -605,6 
+638,22 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
}
 
break;
+   case CHIP_ARCTURUS:
+   pmu_entry = create_pmu_entry(adev, AMDGPU_PMU_PERF_TYPE_ALL,
+   "", "amdgpu");
+   if (!pmu_entry)
+   return -ENOMEM;
+
+   ret = init_pmu_entry_by_type_and_add(pmu_entry,
+   _config);
+
+   if (ret) {
+   kfree(pmu_entry);
+   return -ENOMEM;
+   }
+
+   break;
+
default:
return 0;
};
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
--
2.17.1
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-10-02 Thread Kasiviswanathan, Harish
[AMD Official Use Only - Internal Distribution Only]

This series Acked-by: Harish Kasiviswanathan 

-Original Message-
From: Kim, Jonathan  
Sent: Friday, October 2, 2020 4:19 PM
To: amd-gfx@lists.freedesktop.org
Cc: Kasiviswanathan, Harish ; Kim, Jonathan 

Subject: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 

v4: Align with patch 2 with struct improvements
v3: Align with patch 2 streamlining perf types versus event config types.
v2: Resend for re-review with alignment for v3 in patch 2.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 49 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index 20c500f61b40..d29226f7b6ea 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -35,6 +35,9 @@
 #define NUM_EVENT_TYPES_VEGA20 1
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  NUM_EVENTS_VEGA20_XGMI
+#define NUM_EVENT_TYPES_ARCTURUS   1
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAXNUM_EVENTS_ARCTURUS_XGMI
 
 struct amdgpu_pmu_event_attribute {
struct device_attribute attr;
@@ -174,6 +177,36 @@ static struct amdgpu_pmu_config df_vega20_config = {
.num_types = 0
 };
 
+/* Arcturus events */
+static struct amdgpu_pmu_attr arcturus_events[NUM_EVENTS_ARCTURUS_MAX] = {
+   { .name = "xgmi_link0_data_outbound",
+   .config = "event=0x7,instance=0x4b,umask=0x2" },
+   { .name = "xgmi_link1_data_outbound",
+   .config = "event=0x7,instance=0x4c,umask=0x2" },
+   { .name = "xgmi_link2_data_outbound",
+   .config = "event=0x7,instance=0x4d,umask=0x2" },
+   { .name = "xgmi_link3_data_outbound",
+   .config = "event=0x7,instance=0x4e,umask=0x2" },
+   { .name = "xgmi_link4_data_outbound",
+   .config = "event=0x7,instance=0x4f,umask=0x2" },
+   { .name = "xgmi_link5_data_outbound",
+   .config = "event=0x7,instance=0x50,umask=0x2" } };
+
+static struct amdgpu_pmu_type arcturus_types[NUM_EVENT_TYPES_ARCTURUS] = {
+   { .type = AMDGPU_PMU_EVENT_CONFIG_TYPE_XGMI,
+   .num_of_type = NUM_EVENTS_ARCTURUS_XGMI } };
+
+static struct amdgpu_pmu_config arcturus_config = {
+   .formats = amdgpu_pmu_formats,
+   .num_formats = ARRAY_SIZE(amdgpu_pmu_formats),
+   .events = arcturus_events,
+   .num_events = ARRAY_SIZE(arcturus_events),
+   .types = arcturus_types,
+   .num_types = ARRAY_SIZE(arcturus_types) };
+
 /* initialize perf counter */
 static int amdgpu_perf_event_init(struct perf_event *event)  { @@ -605,6 
+638,22 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
}
 
break;
+   case CHIP_ARCTURUS:
+   pmu_entry = create_pmu_entry(adev, AMDGPU_PMU_PERF_TYPE_ALL,
+   "", "amdgpu");
+   if (!pmu_entry)
+   return -ENOMEM;
+
+   ret = init_pmu_entry_by_type_and_add(pmu_entry,
+   _config);
+
+   if (ret) {
+   kfree(pmu_entry);
+   return -ENOMEM;
+   }
+
+   break;
+
default:
return 0;
};
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
--
2.17.1
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-10-02 Thread Jonathan Kim
Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 

v4: Align with patch 2 with struct improvements
v3: Align with patch 2 streamlining perf types versus event config types.
v2: Resend for re-review with alignment for v3 in patch 2.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 49 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index 20c500f61b40..d29226f7b6ea 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -35,6 +35,9 @@
 #define NUM_EVENT_TYPES_VEGA20 1
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  NUM_EVENTS_VEGA20_XGMI
+#define NUM_EVENT_TYPES_ARCTURUS   1
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAXNUM_EVENTS_ARCTURUS_XGMI
 
 struct amdgpu_pmu_event_attribute {
struct device_attribute attr;
@@ -174,6 +177,36 @@ static struct amdgpu_pmu_config df_vega20_config = {
.num_types = 0
 };
 
+/* Arcturus events */
+static struct amdgpu_pmu_attr arcturus_events[NUM_EVENTS_ARCTURUS_MAX] = {
+   { .name = "xgmi_link0_data_outbound",
+   .config = "event=0x7,instance=0x4b,umask=0x2" },
+   { .name = "xgmi_link1_data_outbound",
+   .config = "event=0x7,instance=0x4c,umask=0x2" },
+   { .name = "xgmi_link2_data_outbound",
+   .config = "event=0x7,instance=0x4d,umask=0x2" },
+   { .name = "xgmi_link3_data_outbound",
+   .config = "event=0x7,instance=0x4e,umask=0x2" },
+   { .name = "xgmi_link4_data_outbound",
+   .config = "event=0x7,instance=0x4f,umask=0x2" },
+   { .name = "xgmi_link5_data_outbound",
+   .config = "event=0x7,instance=0x50,umask=0x2" }
+};
+
+static struct amdgpu_pmu_type arcturus_types[NUM_EVENT_TYPES_ARCTURUS] = {
+   { .type = AMDGPU_PMU_EVENT_CONFIG_TYPE_XGMI,
+   .num_of_type = NUM_EVENTS_ARCTURUS_XGMI }
+};
+
+static struct amdgpu_pmu_config arcturus_config = {
+   .formats = amdgpu_pmu_formats,
+   .num_formats = ARRAY_SIZE(amdgpu_pmu_formats),
+   .events = arcturus_events,
+   .num_events = ARRAY_SIZE(arcturus_events),
+   .types = arcturus_types,
+   .num_types = ARRAY_SIZE(arcturus_types)
+};
+
 /* initialize perf counter */
 static int amdgpu_perf_event_init(struct perf_event *event)
 {
@@ -605,6 +638,22 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
}
 
break;
+   case CHIP_ARCTURUS:
+   pmu_entry = create_pmu_entry(adev, AMDGPU_PMU_PERF_TYPE_ALL,
+   "", "amdgpu");
+   if (!pmu_entry)
+   return -ENOMEM;
+
+   ret = init_pmu_entry_by_type_and_add(pmu_entry,
+   _config);
+
+   if (ret) {
+   kfree(pmu_entry);
+   return -ENOMEM;
+   }
+
+   break;
+
default:
return 0;
};
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-09-23 Thread Jonathan Kim
Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 

v3: Align with patch 2 streamlining perf types versus event config types.
v2: Resend for re-review with alignment for v3 in patch 2.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 43 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 46 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index 610f96bb0239..5f6de18cfee2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -35,6 +35,9 @@
 #define NUM_EVENT_TYPES_VEGA20 1
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  NUM_EVENTS_VEGA20_XGMI
+#define NUM_EVENT_TYPES_ARCTURUS   1
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAXNUM_EVENTS_ARCTURUS_XGMI
 
 struct amdgpu_pmu_event_attribute {
struct device_attribute attr;
@@ -122,6 +125,21 @@ static const char 
*df_vega20_events[NUM_EVENTS_DF_VEGA20][2] = {
{ "cake1_ftiinstat_rspalloc", "event=0xb,instance=0x47,umask=0x8" },
 };
 
+/* Arcturus events */
+static const char *arcturus_events[NUM_EVENTS_ARCTURUS_MAX][2] = {
+   { "xgmi_link0_data_outbound", "event=0x7,instance=0x4b,umask=0x2" },
+   { "xgmi_link1_data_outbound", "event=0x7,instance=0x4c,umask=0x2" },
+   { "xgmi_link2_data_outbound", "event=0x7,instance=0x4d,umask=0x2" },
+   { "xgmi_link3_data_outbound", "event=0x7,instance=0x4e,umask=0x2" },
+   { "xgmi_link4_data_outbound", "event=0x7,instance=0x4f,umask=0x2" },
+   { "xgmi_link5_data_outbound", "event=0x7,instance=0x50,umask=0x2" }
+};
+
+static const int arcturus_event_config_types[NUM_EVENT_TYPES_ARCTURUS][2] = {
+   { AMDGPU_PMU_EVENT_CONFIG_TYPE_XGMI, NUM_EVENTS_ARCTURUS_XGMI }
+};
+
+
 /* initialize perf counter */
 static int amdgpu_perf_event_init(struct perf_event *event)
 {
@@ -553,6 +571,31 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
}
 
break;
+   case CHIP_ARCTURUS:
+   pmu_entry = kzalloc(sizeof(struct amdgpu_pmu_entry),
+   GFP_KERNEL);
+
+   if (!pmu_entry)
+   return -ENOMEM;
+
+   pmu_entry->adev = adev;
+   pmu_entry->fmt_attr_group.name = "format";
+   pmu_entry->fmt_attr_group.attrs = NULL;
+   pmu_entry->evt_attr_group.name = "events";
+   pmu_entry->evt_attr_group.attrs = NULL;
+   ret = init_pmu_by_type(pmu_entry, "", "amdgpu",
+   AMDGPU_PMU_PERF_TYPE_ALL,
+   amdgpu_pmu_formats,
+   NUM_FORMATS_AMDGPU_PMU,
+   arcturus_events,
+   NUM_EVENTS_ARCTURUS_MAX,
+   arcturus_event_config_types,
+   NUM_EVENT_TYPES_ARCTURUS);
+
+   if (ret)
+   kfree(pmu_entry);
+   break;
+
default:
return 0;
};
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-09-17 Thread Jonathan Kim
Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 

v2: Resend for re-review with alignment for v3 in patch 2.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 41 -
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index 74fe8fbdc0d1..c58af4495c5a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -34,6 +34,8 @@
 #define NUM_EVENTS_DF_LEGACY   8
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  NUM_EVENTS_VEGA20_XGMI
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAXNUM_EVENTS_ARCTURUS_XGMI
 
 struct amdgpu_pmu_event_attribute {
struct device_attribute attr;
@@ -98,6 +100,16 @@ static const char *vega20_events[NUM_EVENTS_VEGA20_MAX][2] 
= {
{ "xgmi_link1_data_outbound", "event=0x7,instance=0x47,umask=0x2" }
 };
 
+/* Arcturus events */
+static const char *arcturus_events[NUM_EVENTS_ARCTURUS_MAX][2] = {
+   { "xgmi_link0_data_outbound", "event=0x7,instance=0x4b,umask=0x2" },
+   { "xgmi_link1_data_outbound", "event=0x7,instance=0x4c,umask=0x2" },
+   { "xgmi_link2_data_outbound", "event=0x7,instance=0x4d,umask=0x2" },
+   { "xgmi_link3_data_outbound", "event=0x7,instance=0x4e,umask=0x2" },
+   { "xgmi_link4_data_outbound", "event=0x7,instance=0x4f,umask=0x2" },
+   { "xgmi_link5_data_outbound", "event=0x7,instance=0x50,umask=0x2" }
+};
+
 /* All df_vega20_* items are DEPRECATED. Use vega20_ items above instead. */
 static const char *df_vega20_formats[NUM_FORMATS_DF_LEGACY][2] = {
{ "event", "config:0-7" },
@@ -413,6 +425,32 @@ static int init_pmu_by_type(struct amdgpu_pmu_entry 
*pmu_entry,
 
/* other events can be added here */
 
+   break;
+   case CHIP_ARCTURUS:
+   ret = amdgpu_pmu_alloc_pmu_attrs(_entry->fmt_attr_group,
+   _entry->fmt_attr,
+   NUM_FORMATS_AMDGPU_PMU,
+   _entry->evt_attr_group,
+   _entry->evt_attr,
+   NUM_EVENTS_ARCTURUS_MAX);
+
+   if (ret)
+   goto err_out;
+
+   amdgpu_pmu_create_attributes(_entry->fmt_attr_group,
+   pmu_entry->fmt_attr,
+   amdgpu_pmu_formats,
+   0, NUM_FORMATS_AMDGPU_PMU, 0);
+
+   amdgpu_pmu_create_attributes(_entry->evt_attr_group,
+   pmu_entry->evt_attr,
+   arcturus_events,
+   0, NUM_EVENTS_ARCTURUS_XGMI,
+   PERF_TYPE_AMDGPU_XGMI);
+   num_events += NUM_EVENTS_ARCTURUS_XGMI;
+
+   /* other events can be added here */
+
break;
default:
ret = -ENODEV;
@@ -473,7 +511,8 @@ void amdgpu_pmu_fini(struct amdgpu_device *adev)
 
 static bool amdgpu_pmu_is_supported(struct amdgpu_device *adev)
 {
-   return adev->asic_type == CHIP_VEGA20;
+   return adev->asic_type == CHIP_VEGA20 ||
+   adev->asic_type == CHIP_ARCTURUS;
 }
 
 /* init amdgpu_pmu */
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-09-17 Thread Kim, Jonathan
Hi Harish.  Thanks for the review.  As discussed offline, patch 2 has a problem 
where attr groups array is global but allocation is done per-device causing 
problems with mem free and pmu unregister.  I'm sending out a second series 
that should fix this and simplify the solution as well as hopefully address 
your concerns.  Sorry again for the churn.

Jon

> -Original Message-
> From: Kasiviswanathan, Harish 
> Sent: Tuesday, September 15, 2020 10:10 PM
> To: Kim, Jonathan ; amd-
> g...@lists.freedesktop.org
> Subject: RE: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus
> 
> [AMD Official Use Only - Internal Distribution Only]
> 
> Reviewed-by: Harish Kasiviswanathan 
> 
> -Original Message-
> From: Kim, Jonathan 
> Sent: Tuesday, September 15, 2020 6:00 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Kasiviswanathan, Harish ; Kim,
> Jonathan ; Kim, Jonathan
> 
> Subject: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus
> 
> Add xgmi perfmons for Arcturus.
> 
> Signed-off-by: Jonathan Kim 
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 55
> +
>  drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
>  2 files changed, 58 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
> index f3d2ac0e88a7..ec521c72e631 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
> @@ -34,6 +34,8 @@
>  #define NUM_EVENTS_DF_LEGACY 8
>  #define NUM_EVENTS_VEGA20_XGMI   2
>  #define NUM_EVENTS_VEGA20_MAX2
> +#define NUM_EVENTS_ARCTURUS_XGMI 6
> +#define NUM_EVENTS_ARCTURUS_MAX  6
> 
>  /* record to keep track of pmu entry per pmu type per device */  struct
> amdgpu_pmu_entry { @@ -110,6 +112,27 @@ const struct attribute_group
> *vega20_attr_groups[] = {
>   NULL
>  };
> 
> +/* Arcturus events */
> +static const char *arcturus_events[NUM_EVENTS_ARCTURUS_MAX][2] = {
> + { "xgmi_link0_data_outbound",
> "event=0x7,instance=0x4b,umask=0x2" },
> + { "xgmi_link1_data_outbound",
> "event=0x7,instance=0x4c,umask=0x2" },
> + { "xgmi_link2_data_outbound",
> "event=0x7,instance=0x4d,umask=0x2" },
> + { "xgmi_link3_data_outbound",
> "event=0x7,instance=0x4e,umask=0x2" },
> + { "xgmi_link4_data_outbound",
> "event=0x7,instance=0x4f,umask=0x2" },
> + { "xgmi_link5_data_outbound",
> "event=0x7,instance=0x50,umask=0x2" } };
> +
> +static struct attribute_group arcturus_event_attr_group = {
> + .name = "events",
> + .attrs = NULL
> +};
> +
> +const struct attribute_group *arcturus_attr_groups[] = {
> + _pmu_format_attr_group,
> + _event_attr_group,
> + NULL
> +};
> +
>  /* All df_vega20_* items are DEPRECATED. Use vega20_ items above
> instead. */  static const char
> *df_vega20_formats[NUM_FORMATS_DF_LEGACY][2] = {
>   { "event", "config:0-7" },
> @@ -400,6 +423,16 @@ static int init_pmu_by_type(struct amdgpu_device
> *adev,
> 
>   pmu_entry->pmu.attr_groups = vega20_attr_groups;
>   break;
> + case CHIP_ARCTURUS:
> + amdgpu_pmu_create_attributes(evt_attr_group, evt_attr,
> + arcturus_events, 0,
> NUM_EVENTS_ARCTURUS_XGMI,
> + PERF_TYPE_AMDGPU_XGMI);
> + num_events += NUM_EVENTS_ARCTURUS_XGMI;
> +
> + /* other events can be added here */
> +
> + pmu_entry->pmu.attr_groups = arcturus_attr_groups;
> + break;
>   default:
>   return -ENODEV;
>   };
> @@ -530,6 +563,28 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
>   goto err_pmu;
>   }
> 
> + break;
> + case CHIP_ARCTURUS:
> + ret =
> amdgpu_pmu_alloc_pmu_attrs(_pmu_format_attr_group,
> + _attr,
> +
>   NUM_FORMATS_AMDGPU_PMU,
> + _event_attr_group,
> + _attr,
> +
>   NUM_EVENTS_ARCTURUS_MAX);
> +
> + if (ret)
> + goto err_alloc;
> +
> + ret = init_pmu_by_type(adev,
> + _pmu_format_attr_group,
> fmt_attr,
> + _event_attr_group, evt_attr,
> + "Event", "amdgpu",
> PERF_TYPE_AMDGPU_MAX);
> +
> + if

RE: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-09-15 Thread Kasiviswanathan, Harish
[AMD Official Use Only - Internal Distribution Only]

Reviewed-by: Harish Kasiviswanathan 

-Original Message-
From: Kim, Jonathan  
Sent: Tuesday, September 15, 2020 6:00 PM
To: amd-gfx@lists.freedesktop.org
Cc: Kasiviswanathan, Harish ; Kim, Jonathan 
; Kim, Jonathan 
Subject: [PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 55 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 58 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index f3d2ac0e88a7..ec521c72e631 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -34,6 +34,8 @@
 #define NUM_EVENTS_DF_LEGACY   8
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  2
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAX6
 
 /* record to keep track of pmu entry per pmu type per device */  struct 
amdgpu_pmu_entry { @@ -110,6 +112,27 @@ const struct attribute_group 
*vega20_attr_groups[] = {
NULL
 };
 
+/* Arcturus events */
+static const char *arcturus_events[NUM_EVENTS_ARCTURUS_MAX][2] = {
+   { "xgmi_link0_data_outbound", "event=0x7,instance=0x4b,umask=0x2" },
+   { "xgmi_link1_data_outbound", "event=0x7,instance=0x4c,umask=0x2" },
+   { "xgmi_link2_data_outbound", "event=0x7,instance=0x4d,umask=0x2" },
+   { "xgmi_link3_data_outbound", "event=0x7,instance=0x4e,umask=0x2" },
+   { "xgmi_link4_data_outbound", "event=0x7,instance=0x4f,umask=0x2" },
+   { "xgmi_link5_data_outbound", "event=0x7,instance=0x50,umask=0x2" } };
+
+static struct attribute_group arcturus_event_attr_group = {
+   .name = "events",
+   .attrs = NULL
+};
+
+const struct attribute_group *arcturus_attr_groups[] = {
+   _pmu_format_attr_group,
+   _event_attr_group,
+   NULL
+};
+
 /* All df_vega20_* items are DEPRECATED. Use vega20_ items above instead. */  
static const char *df_vega20_formats[NUM_FORMATS_DF_LEGACY][2] = {
{ "event", "config:0-7" },
@@ -400,6 +423,16 @@ static int init_pmu_by_type(struct amdgpu_device *adev,
 
pmu_entry->pmu.attr_groups = vega20_attr_groups;
break;
+   case CHIP_ARCTURUS:
+   amdgpu_pmu_create_attributes(evt_attr_group, evt_attr,
+   arcturus_events, 0, NUM_EVENTS_ARCTURUS_XGMI,
+   PERF_TYPE_AMDGPU_XGMI);
+   num_events += NUM_EVENTS_ARCTURUS_XGMI;
+
+   /* other events can be added here */
+
+   pmu_entry->pmu.attr_groups = arcturus_attr_groups;
+   break;
default:
return -ENODEV;
};
@@ -530,6 +563,28 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
goto err_pmu;
}
 
+   break;
+   case CHIP_ARCTURUS:
+   ret = amdgpu_pmu_alloc_pmu_attrs(_pmu_format_attr_group,
+   _attr,
+   NUM_FORMATS_AMDGPU_PMU,
+   _event_attr_group,
+   _attr,
+   NUM_EVENTS_ARCTURUS_MAX);
+
+   if (ret)
+   goto err_alloc;
+
+   ret = init_pmu_by_type(adev,
+   _pmu_format_attr_group, fmt_attr,
+   _event_attr_group, evt_attr,
+   "Event", "amdgpu", PERF_TYPE_AMDGPU_MAX);
+
+   if (ret) {
+   kfree(arcturus_event_attr_group.attrs);
+   goto err_pmu;
+   }
+
break;
default:
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
cou

[PATCH 3/3] drm/amdgpu: add xgmi perfmons for arcturus

2020-09-15 Thread Jonathan Kim
Add xgmi perfmons for Arcturus.

Signed-off-by: Jonathan Kim 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 55 +
 drivers/gpu/drm/amd/amdgpu/df_v3_6.c|  3 ++
 2 files changed, 58 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
index f3d2ac0e88a7..ec521c72e631 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c
@@ -34,6 +34,8 @@
 #define NUM_EVENTS_DF_LEGACY   8
 #define NUM_EVENTS_VEGA20_XGMI 2
 #define NUM_EVENTS_VEGA20_MAX  2
+#define NUM_EVENTS_ARCTURUS_XGMI   6
+#define NUM_EVENTS_ARCTURUS_MAX6
 
 /* record to keep track of pmu entry per pmu type per device */
 struct amdgpu_pmu_entry {
@@ -110,6 +112,27 @@ const struct attribute_group *vega20_attr_groups[] = {
NULL
 };
 
+/* Arcturus events */
+static const char *arcturus_events[NUM_EVENTS_ARCTURUS_MAX][2] = {
+   { "xgmi_link0_data_outbound", "event=0x7,instance=0x4b,umask=0x2" },
+   { "xgmi_link1_data_outbound", "event=0x7,instance=0x4c,umask=0x2" },
+   { "xgmi_link2_data_outbound", "event=0x7,instance=0x4d,umask=0x2" },
+   { "xgmi_link3_data_outbound", "event=0x7,instance=0x4e,umask=0x2" },
+   { "xgmi_link4_data_outbound", "event=0x7,instance=0x4f,umask=0x2" },
+   { "xgmi_link5_data_outbound", "event=0x7,instance=0x50,umask=0x2" }
+};
+
+static struct attribute_group arcturus_event_attr_group = {
+   .name = "events",
+   .attrs = NULL
+};
+
+const struct attribute_group *arcturus_attr_groups[] = {
+   _pmu_format_attr_group,
+   _event_attr_group,
+   NULL
+};
+
 /* All df_vega20_* items are DEPRECATED. Use vega20_ items above instead. */
 static const char *df_vega20_formats[NUM_FORMATS_DF_LEGACY][2] = {
{ "event", "config:0-7" },
@@ -400,6 +423,16 @@ static int init_pmu_by_type(struct amdgpu_device *adev,
 
pmu_entry->pmu.attr_groups = vega20_attr_groups;
break;
+   case CHIP_ARCTURUS:
+   amdgpu_pmu_create_attributes(evt_attr_group, evt_attr,
+   arcturus_events, 0, NUM_EVENTS_ARCTURUS_XGMI,
+   PERF_TYPE_AMDGPU_XGMI);
+   num_events += NUM_EVENTS_ARCTURUS_XGMI;
+
+   /* other events can be added here */
+
+   pmu_entry->pmu.attr_groups = arcturus_attr_groups;
+   break;
default:
return -ENODEV;
};
@@ -530,6 +563,28 @@ int amdgpu_pmu_init(struct amdgpu_device *adev)
goto err_pmu;
}
 
+   break;
+   case CHIP_ARCTURUS:
+   ret = amdgpu_pmu_alloc_pmu_attrs(_pmu_format_attr_group,
+   _attr,
+   NUM_FORMATS_AMDGPU_PMU,
+   _event_attr_group,
+   _attr,
+   NUM_EVENTS_ARCTURUS_MAX);
+
+   if (ret)
+   goto err_alloc;
+
+   ret = init_pmu_by_type(adev,
+   _pmu_format_attr_group, fmt_attr,
+   _event_attr_group, evt_attr,
+   "Event", "amdgpu", PERF_TYPE_AMDGPU_MAX);
+
+   if (ret) {
+   kfree(arcturus_event_attr_group.attrs);
+   goto err_pmu;
+   }
+
break;
default:
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c 
b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
index 6e57ae95f997..6b4b30a8dce5 100644
--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
@@ -513,6 +513,7 @@ static int df_v3_6_pmc_start(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
if (is_add)
return df_v3_6_pmc_add_cntr(adev, config);
 
@@ -554,6 +555,7 @@ static int df_v3_6_pmc_stop(struct amdgpu_device *adev, 
uint64_t config,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
ret = df_v3_6_pmc_get_ctrl_settings(adev,
config,
counter_idx,
@@ -590,6 +592,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device 
*adev,
 
switch (adev->asic_type) {
case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
df_v3_6_pmc_get_read_settings(adev, config, counter_idx,
_base_addr, _base_addr);
 
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx