Pushed. Will work on the market name later.
Yong
From: Kuehling, Felix <Felix.Kuehling@xxxxxxx>
Sent: Thursday, August 15, 2019 8:45 PM To: Zhao, Yong <Yong.Zhao@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx <amd-gfx@xxxxxxxxxxxxxxxxxxxxx> 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@xxxxxxx> Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> 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 |
_______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx