diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0316-drm-amdkfd-fix-runlist-length-calculation.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0316-drm-amdkfd-fix-runlist-length-calculation.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0316-drm-amdkfd-fix-runlist-length-calculation.patch b/common/recipes-kernel/linux/files/0316-drm-amdkfd-fix-runlist-length-calculation.patch new file mode 100644 index 00000000..95d267d3 --- /dev/null +++ b/common/recipes-kernel/linux/files/0316-drm-amdkfd-fix-runlist-length-calculation.patch @@ -0,0 +1,53 @@ +From e1940fa4bfa32d86a771e300a3fd116c46878bf4 Mon Sep 17 00:00:00 2001 +From: Ben Goz <ben.goz@amd.com> +Date: Tue, 6 Jan 2015 11:32:13 +0200 +Subject: [PATCH 0316/1050] drm/amdkfd: fix runlist length calculation + +The MAP_QUEUES packet length for Carrizo is different than for Kaveri. +Therefore, we now need to calculate the runlist length with regard to the +underlying H/W. + +Signed-off-by: Ben Goz <ben.goz@amd.com> +Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c +index 99b6d28..e3230cc 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c +@@ -27,6 +27,7 @@ + #include "kfd_kernel_queue.h" + #include "kfd_priv.h" + #include "kfd_pm4_headers.h" ++#include "kfd_pm4_headers_vi.h" + #include "kfd_pm4_opcodes.h" + + static inline void inc_wptr(unsigned int *wptr, unsigned int increment_bytes, +@@ -55,6 +56,7 @@ static void pm_calc_rlib_size(struct packet_manager *pm, + bool *over_subscription) + { + unsigned int process_count, queue_count; ++ unsigned int map_queue_size; + + BUG_ON(!pm || !rlib_size || !over_subscription); + +@@ -69,9 +71,13 @@ static void pm_calc_rlib_size(struct packet_manager *pm, + pr_debug("kfd: over subscribed runlist\n"); + } + ++ map_queue_size = ++ (pm->dqm->dev->device_info->asic_family == CHIP_CARRIZO) ? ++ sizeof(struct pm4_mes_map_queues) : ++ sizeof(struct pm4_map_queues); + /* calculate run list ib allocation size */ + *rlib_size = process_count * sizeof(struct pm4_map_process) + +- queue_count * sizeof(struct pm4_map_queues); ++ queue_count * map_queue_size; + + /* + * Increase the allocation size in case we need a chained run list +-- +1.9.1 + |