drm/amdkfd: Store kfd_dev in iolink and cache properties
authorHarish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Fri, 20 Jul 2018 19:40:14 +0000 (15:40 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 3 Oct 2019 14:11:03 +0000 (09:11 -0500)
This is required to check against cgroup permissions.

Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_topology.c
drivers/gpu/drm/amd/amdkfd/kfd_topology.h

index 453832e..d37cb95 100644 (file)
@@ -1098,6 +1098,9 @@ 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;
+       struct kfd_cache_properties *cache;
+       struct kfd_iolink_properties *iolink;
 
        down_write(&topology_lock);
        list_for_each_entry(dev, &topology_device_list, list) {
@@ -1111,6 +1114,13 @@ static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu)
                if (!dev->gpu && (dev->node_props.simd_count > 0)) {
                        dev->gpu = gpu;
                        out_dev = dev;
+
+                       list_for_each_entry(mem, &dev->mem_props, list)
+                               mem->gpu = dev->gpu;
+                       list_for_each_entry(cache, &dev->cache_props, list)
+                               cache->gpu = dev->gpu;
+                       list_for_each_entry(iolink, &dev->io_link_props, list)
+                               iolink->gpu = dev->gpu;
                        break;
                }
        }
index d4718d5..15843e0 100644 (file)
@@ -102,6 +102,7 @@ struct kfd_mem_properties {
        uint32_t                flags;
        uint32_t                width;
        uint32_t                mem_clk_max;
+       struct kfd_dev          *gpu;
        struct kobject          *kobj;
        struct attribute        attr;
 };
@@ -123,6 +124,7 @@ struct kfd_cache_properties {
        uint32_t                cache_latency;
        uint32_t                cache_type;
        uint8_t                 sibling_map[CRAT_SIBLINGMAP_SIZE];
+       struct kfd_dev          *gpu;
        struct kobject          *kobj;
        struct attribute        attr;
 };
@@ -141,6 +143,7 @@ struct kfd_iolink_properties {
        uint32_t                max_bandwidth;
        uint32_t                rec_transfer_size;
        uint32_t                flags;
+       struct kfd_dev          *gpu;
        struct kobject          *kobj;
        struct attribute        attr;
 };