[PATCH] drm/amdkfd: Fill the name field in node topology with asic name v2

Zhao, Yong Yong.Zhao at amd.com
Fri Aug 16 15:55:21 UTC 2019


Pushed. Will work on the market name later.

Yong
________________________________
From: Kuehling, Felix <Felix.Kuehling at amd.com>
Sent: Thursday, August 15, 2019 8:45 PM
To: Zhao, Yong <Yong.Zhao at amd.com>; amd-gfx at lists.freedesktop.org <amd-gfx at lists.freedesktop.org>
Subject: Re: [PATCH] drm/amdkfd: Fill the name field in node topology with asic name v2

On 2019-08-13 17:21, Zhao, Yong wrote:
> The name field in node topology has not been used. We re-purpose it to
> hold the asic name, which can be queried by user space applications
> through sysfs.
>
> Change-Id: I74f4f5487db169004a9d27ea15abe99261c86220
> Signed-off-by: Yong Zhao <Yong.Zhao at amd.com>

Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>

As a follow-up, I think you could also remove the marketing name field
from struct kfd_node_properties. As far as I can tell this is never
populated and now it's also no longer reported in sysfs.

Regards,
   Felix

> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_device.c   | 18 ++++++++++++++++++
>   drivers/gpu/drm/amd/amdkfd/kfd_priv.h     |  1 +
>   drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 16 ++++++----------
>   drivers/gpu/drm/amd/amdkfd/kfd_topology.h |  4 ++--
>   4 files changed, 27 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index 3b9fe629a126..24bfdf583820 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -42,6 +42,7 @@ static atomic_t kfd_locked = ATOMIC_INIT(0);
>   #ifdef KFD_SUPPORT_IOMMU_V2
>   static const struct kfd_device_info kaveri_device_info = {
>        .asic_family = CHIP_KAVERI,
> +     .asic_name = "kaveri",
>        .max_pasid_bits = 16,
>        /* max num of queues for KV.TODO should be a dynamic value */
>        .max_no_of_hqd  = 24,
> @@ -60,6 +61,7 @@ static const struct kfd_device_info kaveri_device_info = {
>
>   static const struct kfd_device_info carrizo_device_info = {
>        .asic_family = CHIP_CARRIZO,
> +     .asic_name = "carrizo",
>        .max_pasid_bits = 16,
>        /* max num of queues for CZ.TODO should be a dynamic value */
>        .max_no_of_hqd  = 24,
> @@ -78,6 +80,7 @@ static const struct kfd_device_info carrizo_device_info = {
>
>   static const struct kfd_device_info raven_device_info = {
>        .asic_family = CHIP_RAVEN,
> +     .asic_name = "raven",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -96,6 +99,7 @@ static const struct kfd_device_info raven_device_info = {
>
>   static const struct kfd_device_info hawaii_device_info = {
>        .asic_family = CHIP_HAWAII,
> +     .asic_name = "hawaii",
>        .max_pasid_bits = 16,
>        /* max num of queues for KV.TODO should be a dynamic value */
>        .max_no_of_hqd  = 24,
> @@ -114,6 +118,7 @@ static const struct kfd_device_info hawaii_device_info = {
>
>   static const struct kfd_device_info tonga_device_info = {
>        .asic_family = CHIP_TONGA,
> +     .asic_name = "tonga",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -131,6 +136,7 @@ static const struct kfd_device_info tonga_device_info = {
>
>   static const struct kfd_device_info fiji_device_info = {
>        .asic_family = CHIP_FIJI,
> +     .asic_name = "fiji",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -148,6 +154,7 @@ static const struct kfd_device_info fiji_device_info = {
>
>   static const struct kfd_device_info fiji_vf_device_info = {
>        .asic_family = CHIP_FIJI,
> +     .asic_name = "fiji",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -166,6 +173,7 @@ static const struct kfd_device_info fiji_vf_device_info = {
>
>   static const struct kfd_device_info polaris10_device_info = {
>        .asic_family = CHIP_POLARIS10,
> +     .asic_name = "polaris10",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -183,6 +191,7 @@ static const struct kfd_device_info polaris10_device_info = {
>
>   static const struct kfd_device_info polaris10_vf_device_info = {
>        .asic_family = CHIP_POLARIS10,
> +     .asic_name = "polaris10",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -200,6 +209,7 @@ static const struct kfd_device_info polaris10_vf_device_info = {
>
>   static const struct kfd_device_info polaris11_device_info = {
>        .asic_family = CHIP_POLARIS11,
> +     .asic_name = "polaris11",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -217,6 +227,7 @@ static const struct kfd_device_info polaris11_device_info = {
>
>   static const struct kfd_device_info polaris12_device_info = {
>        .asic_family = CHIP_POLARIS12,
> +     .asic_name = "polaris12",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -234,6 +245,7 @@ static const struct kfd_device_info polaris12_device_info = {
>
>   static const struct kfd_device_info vegam_device_info = {
>        .asic_family = CHIP_VEGAM,
> +     .asic_name = "vegam",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 4,
> @@ -251,6 +263,7 @@ static const struct kfd_device_info vegam_device_info = {
>
>   static const struct kfd_device_info vega10_device_info = {
>        .asic_family = CHIP_VEGA10,
> +     .asic_name = "vega10",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -268,6 +281,7 @@ static const struct kfd_device_info vega10_device_info = {
>
>   static const struct kfd_device_info vega10_vf_device_info = {
>        .asic_family = CHIP_VEGA10,
> +     .asic_name = "vega10",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -285,6 +299,7 @@ static const struct kfd_device_info vega10_vf_device_info = {
>
>   static const struct kfd_device_info vega12_device_info = {
>        .asic_family = CHIP_VEGA12,
> +     .asic_name = "vega12",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -302,6 +317,7 @@ static const struct kfd_device_info vega12_device_info = {
>
>   static const struct kfd_device_info vega20_device_info = {
>        .asic_family = CHIP_VEGA20,
> +     .asic_name = "vega20",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -319,6 +335,7 @@ static const struct kfd_device_info vega20_device_info = {
>
>   static const struct kfd_device_info arcturus_device_info = {
>        .asic_family = CHIP_ARCTURUS,
> +     .asic_name = "arcturus",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> @@ -336,6 +353,7 @@ static const struct kfd_device_info arcturus_device_info = {
>
>   static const struct kfd_device_info navi10_device_info = {
>        .asic_family = CHIP_NAVI10,
> +     .asic_name = "navi10",
>        .max_pasid_bits = 16,
>        .max_no_of_hqd  = 24,
>        .doorbell_size  = 8,
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 9b9a8da187c8..06bb2d7a9b39 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -195,6 +195,7 @@ struct kfd_event_interrupt_class {
>
>   struct kfd_device_info {
>        enum amd_asic_type asic_family;
> +     const char *asic_name;
>        const struct kfd_event_interrupt_class *event_interrupt_class;
>        unsigned int max_pasid_bits;
>        unsigned int max_no_of_hqd;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> index 36fa98fe858b..7551761f2aa9 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> @@ -406,8 +406,6 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
>                char *buffer)
>   {
>        struct kfd_topology_device *dev;
> -     char public_name[KFD_TOPOLOGY_PUBLIC_NAME_SIZE];
> -     uint32_t i;
>        uint32_t log_max_watch_addr;
>
>        /* Making sure that the buffer is an empty string */
> @@ -422,14 +420,8 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
>        if (strcmp(attr->name, "name") == 0) {
>                dev = container_of(attr, struct kfd_topology_device,
>                                attr_name);
> -             for (i = 0; i < KFD_TOPOLOGY_PUBLIC_NAME_SIZE; i++) {
> -                     public_name[i] =
> -                                     (char)dev->node_props.marketing_name[i];
> -                     if (dev->node_props.marketing_name[i] == 0)
> -                             break;
> -             }
> -             public_name[KFD_TOPOLOGY_PUBLIC_NAME_SIZE-1] = 0x0;
> -             return sysfs_show_str_val(buffer, public_name);
> +
> +             return sysfs_show_str_val(buffer, dev->node_props.name);
>        }
>
>        dev = container_of(attr, struct kfd_topology_device,
> @@ -1274,6 +1266,10 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
>         */
>
>        amdgpu_amdkfd_get_cu_info(dev->gpu->kgd, &cu_info);
> +
> +     strncpy(dev->node_props.name, gpu->device_info->asic_name,
> +                     KFD_TOPOLOGY_PUBLIC_NAME_SIZE);
> +
>        dev->node_props.simd_arrays_per_engine =
>                cu_info.num_shader_arrays_per_engine;
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
> index 276354aa0fcc..d4718d58d0f2 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
> @@ -27,7 +27,7 @@
>   #include <linux/list.h>
>   #include "kfd_crat.h"
>
> -#define KFD_TOPOLOGY_PUBLIC_NAME_SIZE 128
> +#define KFD_TOPOLOGY_PUBLIC_NAME_SIZE 32
>
>   #define HSA_CAP_HOT_PLUGGABLE                       0x00000001
>   #define HSA_CAP_ATS_PRESENT                 0x00000002
> @@ -81,7 +81,7 @@ struct kfd_node_properties {
>        int32_t  drm_render_minor;
>        uint32_t num_sdma_engines;
>        uint32_t num_sdma_xgmi_engines;
> -     uint16_t marketing_name[KFD_TOPOLOGY_PUBLIC_NAME_SIZE];
> +     char name[KFD_TOPOLOGY_PUBLIC_NAME_SIZE];
>   };
>
>   #define HSA_MEM_HEAP_TYPE_SYSTEM    0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20190816/8aadf613/attachment-0001.html>


More information about the amd-gfx mailing list