Add xgmi perfmons for Arcturus. Signed-off-by: Jonathan Kim <Jonathan.Kim@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c | 32 +++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/df_v3_6.c | 3 +++ 2 files changed, 35 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c index eaa44c99d423..420157ee7c25 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.c @@ -32,6 +32,7 @@ #define NUM_FORMATS_DF_VEGA20 3 #define NUM_EVENTS_DF_VEGA20 8 #define NUM_EVENTS_XGMI_VEGA20 2 +#define NUM_EVENTS_XGMI_ARCTURUS 6 /* record to keep track of pmu entry per pmu type per device */ struct amdgpu_pmu_entry { @@ -58,6 +59,11 @@ static struct attribute_group xgmi_vega20_event_attr_group = { .attrs = NULL }; +static struct attribute_group xgmi_arcturus_event_attr_group = { + .name = "events", + .attrs = NULL +}; + const struct attribute_group *df_vega20_attr_groups[] = { &df_vega20_format_attr_group, &df_vega20_event_attr_group, @@ -70,6 +76,12 @@ const struct attribute_group *xgmi_vega20_attr_groups[] = { NULL }; +const struct attribute_group *xgmi_arcturus_attr_groups[] = { + &df_vega20_format_attr_group, + &xgmi_arcturus_event_attr_group, + NULL +}; + static const char *df_vega20_formats[NUM_FORMATS_DF_VEGA20][2] = { { "event", "config:0-7" }, { "instance", "config:8-15" }, @@ -96,6 +108,15 @@ static const char *xgmi_vega20_events[NUM_EVENTS_XGMI_VEGA20][2] = { { "xgmi_link1_data_outbound", "event=0x7,instance=0x47,umask=0x2" } }; +static const char *xgmi_arcturus_events[NUM_EVENTS_XGMI_ARCTURUS][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" } +}; + /* initialize perf counter */ static int amdgpu_perf_event_init(struct perf_event *event) { @@ -387,6 +408,17 @@ int amdgpu_pmu_init(struct amdgpu_device *adev) /* other pmu types go here*/ break; + case CHIP_ARCTURUS: + /* init xgmi */ + ret = init_pmu_by_type(adev, xgmi_arcturus_attr_groups, + "XGMI", "amdgpu", PERF_TYPE_AMDGPU_XGMI, + df_vega20_formats, + &df_vega20_format_attr_group, + NUM_FORMATS_DF_VEGA20, + xgmi_arcturus_events, + &xgmi_arcturus_event_attr_group, + NUM_EVENTS_XGMI_ARCTURUS); + 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 569c40be6e75..23af431de997 100644 --- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c +++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c @@ -512,6 +512,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); @@ -553,6 +554,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, @@ -589,6 +591,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, &lo_base_addr, &hi_base_addr); -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx