Commit c0cc999f authored by Ma Jun's avatar Ma Jun Committed by Alex Deucher

drm/amdkfd: Fix the warning of array-index-out-of-bounds

For some GPUs with more CUs, the original sibling_map[32]
in struct crat_subtype_cache is not enough
to save the cache information when create the VCRAT table,
so skip filling the struct crat_subtype_cache info instead
fill struct kfd_cache_properties directly to fix this problem.
Signed-off-by: default avatarMa Jun <Jun.Ma2@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent cfa61b8f
This diff is collapsed.
...@@ -295,6 +295,18 @@ struct crat_subtype_generic { ...@@ -295,6 +295,18 @@ struct crat_subtype_generic {
struct kfd_dev; struct kfd_dev;
/* Static table to describe GPU Cache information */
struct kfd_gpu_cache_info {
uint32_t cache_size;
uint32_t cache_level;
uint32_t flags;
/* Indicates how many Compute Units share this cache
* within a SA. Value = 1 indicates the cache is not shared
*/
uint32_t num_cu_shared;
};
int kfd_get_gpu_cache_info(struct kfd_dev *kdev, struct kfd_gpu_cache_info **pcache_info);
int kfd_create_crat_image_acpi(void **crat_image, size_t *size); int kfd_create_crat_image_acpi(void **crat_image, size_t *size);
void kfd_destroy_crat_image(void *crat_image); void kfd_destroy_crat_image(void *crat_image);
int kfd_parse_crat_table(void *crat_image, struct list_head *device_list, int kfd_parse_crat_table(void *crat_image, struct list_head *device_list,
......
This diff is collapsed.
...@@ -80,6 +80,8 @@ struct kfd_mem_properties { ...@@ -80,6 +80,8 @@ struct kfd_mem_properties {
struct attribute attr; struct attribute attr;
}; };
#define CACHE_SIBLINGMAP_SIZE 64
struct kfd_cache_properties { struct kfd_cache_properties {
struct list_head list; struct list_head list;
uint32_t processor_id_low; uint32_t processor_id_low;
...@@ -90,10 +92,11 @@ struct kfd_cache_properties { ...@@ -90,10 +92,11 @@ 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[CRAT_SIBLINGMAP_SIZE]; uint8_t sibling_map[CACHE_SIBLINGMAP_SIZE];
struct kfd_dev *gpu; struct kfd_dev *gpu;
struct kobject *kobj; struct kobject *kobj;
struct attribute attr; struct attribute attr;
uint32_t sibling_map_size;
}; };
struct kfd_iolink_properties { struct kfd_iolink_properties {
......
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