mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 15:58:37 +07:00
drm/amdkfd: Adjust dequeue latencies and timeouts
Adjust latencies and timeouts for dequeueing with HWS and consolidate them in one place. Make them longer to allow long running waves to complete without causing a timeout. The timeout is twice as long as the latency plus some buffer to make sure we don't detect a timeout prematurely. Change timeouts for dequeueing HQDs without HWS. KFD_UNMAP_LATENCY is more consistent with what the HWS does for user queues. Signed-off-by: Yong Zhao <yong.zhao@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
This commit is contained in:
parent
8c72c3d7df
commit
b90e3fbecc
@ -323,7 +323,7 @@ static int destroy_queue_nocpsch(struct device_queue_manager *dqm,
|
||||
|
||||
retval = mqd->destroy_mqd(mqd, q->mqd,
|
||||
KFD_PREEMPT_TYPE_WAVEFRONT_RESET,
|
||||
QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS,
|
||||
KFD_UNMAP_LATENCY_MS,
|
||||
q->pipe, q->queue);
|
||||
|
||||
if (retval)
|
||||
|
@ -29,7 +29,9 @@
|
||||
#include "kfd_priv.h"
|
||||
#include "kfd_mqd_manager.h"
|
||||
|
||||
#define QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS (500)
|
||||
#define KFD_UNMAP_LATENCY_MS (4000)
|
||||
#define QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS (2 * KFD_UNMAP_LATENCY_MS + 1000)
|
||||
|
||||
#define CIK_VMID_NUM (8)
|
||||
#define KFD_VMID_START_OFFSET (8)
|
||||
#define VMID_PER_DEVICE CIK_VMID_NUM
|
||||
|
@ -185,7 +185,7 @@ static void uninitialize(struct kernel_queue *kq)
|
||||
kq->mqd->destroy_mqd(kq->mqd,
|
||||
kq->queue->mqd,
|
||||
KFD_PREEMPT_TYPE_WAVEFRONT_RESET,
|
||||
QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS,
|
||||
KFD_UNMAP_LATENCY_MS,
|
||||
kq->queue->pipe,
|
||||
kq->queue->queue);
|
||||
else if (kq->queue->properties.type == KFD_QUEUE_TYPE_DIQ)
|
||||
|
@ -376,7 +376,7 @@ int pm_send_set_resources(struct packet_manager *pm,
|
||||
packet->bitfields2.queue_type =
|
||||
queue_type__mes_set_resources__hsa_interface_queue_hiq;
|
||||
packet->bitfields2.vmid_mask = res->vmid_mask;
|
||||
packet->bitfields2.unmap_latency = KFD_UNMAP_LATENCY;
|
||||
packet->bitfields2.unmap_latency = KFD_UNMAP_LATENCY_MS / 100;
|
||||
packet->bitfields7.oac_mask = res->oac_mask;
|
||||
packet->bitfields8.gds_heap_base = res->gds_heap_base;
|
||||
packet->bitfields8.gds_heap_size = res->gds_heap_size;
|
||||
|
@ -676,11 +676,8 @@ int amdkfd_fence_wait_timeout(unsigned int *fence_addr,
|
||||
|
||||
/* Packet Manager */
|
||||
|
||||
#define KFD_HIQ_TIMEOUT (500)
|
||||
|
||||
#define KFD_FENCE_COMPLETED (100)
|
||||
#define KFD_FENCE_INIT (10)
|
||||
#define KFD_UNMAP_LATENCY (150)
|
||||
|
||||
struct packet_manager {
|
||||
struct device_queue_manager *dqm;
|
||||
|
Loading…
Reference in New Issue
Block a user