Commit bc0c75a3 authored by Harish Kasiviswanathan's avatar Harish Kasiviswanathan Committed by Oded Gabbay

drm/amdkfd: Fix sibling_map[] size

Change kfd_cache_properties.sibling_map[256] to
kfd_cache_properties.sibling_map[32]. Since, CRAT uses bitmap for
sibling_map, it is more efficient to use bitmap in the kfd structure
also.
Signed-off-by: default avatarHarish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
parent 175b9263
...@@ -263,7 +263,7 @@ static ssize_t kfd_cache_show(struct kobject *kobj, struct attribute *attr, ...@@ -263,7 +263,7 @@ static ssize_t kfd_cache_show(struct kobject *kobj, struct attribute *attr,
char *buffer) char *buffer)
{ {
ssize_t ret; ssize_t ret;
uint32_t i; uint32_t i, j;
struct kfd_cache_properties *cache; struct kfd_cache_properties *cache;
/* Making sure that the buffer is an empty string */ /* Making sure that the buffer is an empty string */
...@@ -281,12 +281,18 @@ static ssize_t kfd_cache_show(struct kobject *kobj, struct attribute *attr, ...@@ -281,12 +281,18 @@ static ssize_t kfd_cache_show(struct kobject *kobj, struct attribute *attr,
sysfs_show_32bit_prop(buffer, "latency", cache->cache_latency); sysfs_show_32bit_prop(buffer, "latency", cache->cache_latency);
sysfs_show_32bit_prop(buffer, "type", cache->cache_type); sysfs_show_32bit_prop(buffer, "type", cache->cache_type);
snprintf(buffer, PAGE_SIZE, "%ssibling_map ", buffer); snprintf(buffer, PAGE_SIZE, "%ssibling_map ", buffer);
for (i = 0; i < KFD_TOPOLOGY_CPU_SIBLINGS; i++) for (i = 0; i < CRAT_SIBLINGMAP_SIZE; i++)
ret = snprintf(buffer, PAGE_SIZE, "%s%d%s", for (j = 0; j < sizeof(cache->sibling_map[0])*8; j++) {
buffer, cache->sibling_map[i], /* Check each bit */
(i == KFD_TOPOLOGY_CPU_SIBLINGS-1) ? if (cache->sibling_map[i] & (1 << j))
"\n" : ","); ret = snprintf(buffer, PAGE_SIZE,
"%s%d%s", buffer, 1, ",");
else
ret = snprintf(buffer, PAGE_SIZE,
"%s%d%s", buffer, 0, ",");
}
/* Replace the last "," with end of line */
*(buffer + strlen(buffer) - 1) = 0xA;
return ret; return ret;
} }
......
...@@ -91,8 +91,6 @@ struct kfd_mem_properties { ...@@ -91,8 +91,6 @@ struct kfd_mem_properties {
struct attribute attr; struct attribute attr;
}; };
#define KFD_TOPOLOGY_CPU_SIBLINGS 256
#define HSA_CACHE_TYPE_DATA 0x00000001 #define HSA_CACHE_TYPE_DATA 0x00000001
#define HSA_CACHE_TYPE_INSTRUCTION 0x00000002 #define HSA_CACHE_TYPE_INSTRUCTION 0x00000002
#define HSA_CACHE_TYPE_CPU 0x00000004 #define HSA_CACHE_TYPE_CPU 0x00000004
...@@ -109,7 +107,7 @@ struct kfd_cache_properties { ...@@ -109,7 +107,7 @@ struct kfd_cache_properties {
uint32_t cache_assoc; uint32_t cache_assoc;
uint32_t cache_latency; uint32_t cache_latency;
uint32_t cache_type; uint32_t cache_type;
uint8_t sibling_map[KFD_TOPOLOGY_CPU_SIBLINGS]; uint8_t sibling_map[CRAT_SIBLINGMAP_SIZE];
struct kobject *kobj; struct kobject *kobj;
struct attribute attr; struct attribute attr;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment