diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1314-drm-amdkfd-Add-support-for-displaying-VRAM-usage.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1314-drm-amdkfd-Add-support-for-displaying-VRAM-usage.patch | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1314-drm-amdkfd-Add-support-for-displaying-VRAM-usage.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1314-drm-amdkfd-Add-support-for-displaying-VRAM-usage.patch deleted file mode 100644 index b81c6131..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1314-drm-amdkfd-Add-support-for-displaying-VRAM-usage.patch +++ /dev/null @@ -1,137 +0,0 @@ -From bf47c9a8a8699ea4c62f4c72b768ad937136f696 Mon Sep 17 00:00:00 2001 -From: Kent Russell <kent.russell@amd.com> -Date: Thu, 20 Jul 2017 12:51:38 -0400 -Subject: [PATCH 1314/4131] drm/amdkfd: Add support for displaying VRAM usage - -Add a sysfs file in topology (node/x/memory_banks/X/used_memory) that -reports the current VRAM usage for that node. Only works for GPU nodes -at this time - -Change-Id: I326c7995eef165edba3897049ad7176e1434c95a -Signed-off-by: Kent Russell <kent.russell@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 49 +++++++++++++++++++++++++++---- - drivers/gpu/drm/amd/amdkfd/kfd_topology.h | 4 ++- - 2 files changed, 46 insertions(+), 7 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -index 0cfeba2..cf9bd01 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -@@ -226,6 +226,8 @@ struct kfd_topology_device *kfd_create_topology_device( - sysfs_show_gen_prop(buffer, "%s %llu\n", name, value) - #define sysfs_show_32bit_val(buffer, value) \ - sysfs_show_gen_prop(buffer, "%u\n", value) -+#define sysfs_show_64bit_val(buffer, value) \ -+ sysfs_show_gen_prop(buffer, "%llu\n", value) - #define sysfs_show_str_val(buffer, value) \ - sysfs_show_gen_prop(buffer, "%s\n", value) - -@@ -308,11 +310,23 @@ static ssize_t mem_show(struct kobject *kobj, struct attribute *attr, - { - ssize_t ret; - struct kfd_mem_properties *mem; -+ uint64_t used_mem; - - /* Making sure that the buffer is an empty string */ - buffer[0] = 0; - -- mem = container_of(attr, struct kfd_mem_properties, attr); -+ if (strcmp(attr->name, "used_memory") == 0) { -+ mem = container_of(attr, struct kfd_mem_properties, -+ attr_used); -+ if (mem->gpu) { -+ used_mem = mem->gpu->kfd2kgd->get_vram_usage(mem->gpu->kgd); -+ return sysfs_show_64bit_val(buffer, used_mem); -+ } -+ /* TODO: Report APU/CPU-allocated memory; For now return 0 */ -+ return 0; -+ } -+ -+ mem = container_of(attr, struct kfd_mem_properties, attr_props); - sysfs_show_32bit_prop(buffer, "heap_type", mem->heap_type); - sysfs_show_64bit_prop(buffer, "size_in_bytes", mem->size_in_bytes); - sysfs_show_32bit_prop(buffer, "flags", mem->flags); -@@ -580,7 +594,12 @@ static void kfd_remove_sysfs_node_entry(struct kfd_topology_device *dev) - if (dev->kobj_mem) { - list_for_each_entry(mem, &dev->mem_props, list) - if (mem->kobj) { -- kfd_remove_sysfs_file(mem->kobj, &mem->attr); -+ kfd_remove_sysfs_file(mem->kobj, -+ &mem->attr_props); -+ /* TODO: Remove when CPU/APU supported */ -+ if (dev->node_props.cpu_cores_count == 0) -+ kfd_remove_sysfs_file(mem->kobj, -+ &mem->attr_used); - mem->kobj = NULL; - } - kobject_del(dev->kobj_mem); -@@ -691,12 +710,23 @@ static int kfd_build_sysfs_node_entry(struct kfd_topology_device *dev, - if (ret < 0) - return ret; - -- mem->attr.name = "properties"; -- mem->attr.mode = KFD_SYSFS_FILE_MODE; -- sysfs_attr_init(&mem->attr); -- ret = sysfs_create_file(mem->kobj, &mem->attr); -+ mem->attr_props.name = "properties"; -+ mem->attr_props.mode = KFD_SYSFS_FILE_MODE; -+ sysfs_attr_init(&mem->attr_props); -+ ret = sysfs_create_file(mem->kobj, &mem->attr_props); - if (ret < 0) - return ret; -+ -+ /* TODO: Support APU/CPU memory usage */ -+ if (dev->node_props.cpu_cores_count == 0) { -+ mem->attr_used.name = "used_memory"; -+ mem->attr_used.mode = KFD_SYSFS_FILE_MODE; -+ sysfs_attr_init(&mem->attr_used); -+ ret = sysfs_create_file(mem->kobj, &mem->attr_used); -+ if (ret < 0) -+ return ret; -+ } -+ - i++; - } - -@@ -1159,15 +1189,22 @@ static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu) - { - struct kfd_topology_device *dev; - struct kfd_topology_device *out_dev = NULL; -+ struct kfd_mem_properties *mem; - - down_write(&topology_lock); - list_for_each_entry(dev, &topology_device_list, list) - if (!dev->gpu && (dev->node_props.simd_count > 0)) { - dev->gpu = gpu; - out_dev = dev; -+ -+ /* Assign mem->gpu */ -+ list_for_each_entry(mem, &dev->mem_props, list) -+ mem->gpu = dev->gpu; -+ - break; - } - up_write(&topology_lock); -+ - return out_dev; - } - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h -index ae5edd9..44f0fc7 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h -@@ -97,7 +97,9 @@ struct kfd_mem_properties { - uint32_t width; - uint32_t mem_clk_max; - struct kobject *kobj; -- struct attribute attr; -+ struct kfd_dev *gpu; -+ struct attribute attr_props; -+ struct attribute attr_used; - }; - - #define HSA_CACHE_TYPE_DATA 0x00000001 --- -2.7.4 - |