diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0317-drm-amdkfd-Implement-create_map_queues-for-Carrizo.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0317-drm-amdkfd-Implement-create_map_queues-for-Carrizo.patch | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/common/recipes-kernel/linux/files/0317-drm-amdkfd-Implement-create_map_queues-for-Carrizo.patch b/common/recipes-kernel/linux/files/0317-drm-amdkfd-Implement-create_map_queues-for-Carrizo.patch deleted file mode 100644 index 5b5b49f2..00000000 --- a/common/recipes-kernel/linux/files/0317-drm-amdkfd-Implement-create_map_queues-for-Carrizo.patch +++ /dev/null @@ -1,131 +0,0 @@ -From d7b8f73ea03923dbf7c61093743b9eb1842fa8d7 Mon Sep 17 00:00:00 2001 -From: Ben Goz <ben.goz@amd.com> -Date: Tue, 6 Jan 2015 11:35:50 +0200 -Subject: [PATCH 0317/1050] drm/amdkfd: Implement create_map_queues() for - Carrizo - -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 | 91 +++++++++++++++++++++++-- - 1 file changed, 87 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c -index e3230cc..90f3914 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c -@@ -182,6 +182,71 @@ static int pm_create_map_process(struct packet_manager *pm, uint32_t *buffer, - return 0; - } - -+static int pm_create_map_queue_vi(struct packet_manager *pm, uint32_t *buffer, -+ struct queue *q, bool is_static) -+{ -+ struct pm4_mes_map_queues *packet; -+ bool use_static = is_static; -+ -+ BUG_ON(!pm || !buffer || !q); -+ -+ pr_debug("kfd: In func %s\n", __func__); -+ -+ packet = (struct pm4_mes_map_queues *)buffer; -+ memset(buffer, 0, sizeof(struct pm4_map_queues)); -+ -+ packet->header.u32all = build_pm4_header(IT_MAP_QUEUES, -+ sizeof(struct pm4_map_queues)); -+ packet->bitfields2.alloc_format = -+ alloc_format__mes_map_queues__one_per_pipe_vi; -+ packet->bitfields2.num_queues = 1; -+ packet->bitfields2.queue_sel = -+ queue_sel__mes_map_queues__map_to_hws_determined_queue_slots_vi; -+ -+ packet->bitfields2.engine_sel = -+ engine_sel__mes_map_queues__compute_vi; -+ packet->bitfields2.queue_type = -+ queue_type__mes_map_queues__normal_compute_vi; -+ -+ switch (q->properties.type) { -+ case KFD_QUEUE_TYPE_COMPUTE: -+ if (use_static) -+ packet->bitfields2.queue_type = -+ queue_type__mes_map_queues__normal_latency_static_queue_vi; -+ break; -+ case KFD_QUEUE_TYPE_DIQ: -+ packet->bitfields2.queue_type = -+ queue_type__mes_map_queues__debug_interface_queue_vi; -+ break; -+ case KFD_QUEUE_TYPE_SDMA: -+ packet->bitfields2.engine_sel = -+ engine_sel__mes_map_queues__sdma0_vi; -+ use_static = false; /* no static queues under SDMA */ -+ break; -+ default: -+ pr_err("kfd: in %s queue type %d\n", __func__, -+ q->properties.type); -+ BUG(); -+ break; -+ } -+ packet->bitfields3.doorbell_offset = -+ q->properties.doorbell_off; -+ -+ packet->mqd_addr_lo = -+ lower_32_bits(q->gart_mqd_addr); -+ -+ packet->mqd_addr_hi = -+ upper_32_bits(q->gart_mqd_addr); -+ -+ packet->wptr_addr_lo = -+ lower_32_bits((uint64_t)q->properties.write_ptr); -+ -+ packet->wptr_addr_hi = -+ upper_32_bits((uint64_t)q->properties.write_ptr); -+ -+ return 0; -+} -+ - static int pm_create_map_queue(struct packet_manager *pm, uint32_t *buffer, - struct queue *q, bool is_static) - { -@@ -298,8 +363,17 @@ static int pm_create_runlist_ib(struct packet_manager *pm, - pr_debug("kfd: static_queue, mapping kernel q %d, is debug status %d\n", - kq->queue->queue, qpd->is_debug); - -- retval = pm_create_map_queue(pm, &rl_buffer[rl_wptr], -- kq->queue, qpd->is_debug); -+ if (pm->dqm->dev->device_info->asic_family == -+ CHIP_CARRIZO) -+ retval = pm_create_map_queue_vi(pm, -+ &rl_buffer[rl_wptr], -+ kq->queue, -+ qpd->is_debug); -+ else -+ retval = pm_create_map_queue(pm, -+ &rl_buffer[rl_wptr], -+ kq->queue, -+ qpd->is_debug); - if (retval != 0) - return retval; - -@@ -315,8 +389,17 @@ static int pm_create_runlist_ib(struct packet_manager *pm, - pr_debug("kfd: static_queue, mapping user queue %d, is debug status %d\n", - q->queue, qpd->is_debug); - -- retval = pm_create_map_queue(pm, &rl_buffer[rl_wptr], -- q, qpd->is_debug); -+ if (pm->dqm->dev->device_info->asic_family == -+ CHIP_CARRIZO) -+ retval = pm_create_map_queue_vi(pm, -+ &rl_buffer[rl_wptr], -+ q, -+ qpd->is_debug); -+ else -+ retval = pm_create_map_queue(pm, -+ &rl_buffer[rl_wptr], -+ q, -+ qpd->is_debug); - - if (retval != 0) - return retval; --- -1.9.1 - |