Messages in this thread Patch in this message | | | From | Oded Gabbay <> | Subject | [PATCH 62/83] hsa/radeon: Fix timeout calculation in sync_with_hw | Date | Fri, 11 Jul 2014 00:54:18 +0300 |
| |
This patch fixes a bug in the timeout calculation done in sync_with_hw functions. The original code assumed that jiffies is incremented in ms.
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com> --- drivers/gpu/hsa/radeon/kfd_kernel_queue.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/hsa/radeon/kfd_kernel_queue.c b/drivers/gpu/hsa/radeon/kfd_kernel_queue.c index 25528b3..ce3261b 100644 --- a/drivers/gpu/hsa/radeon/kfd_kernel_queue.c +++ b/drivers/gpu/hsa/radeon/kfd_kernel_queue.c @@ -222,12 +222,18 @@ static void submit_packet(struct kernel_queue *kq) static int sync_with_hw(struct kernel_queue *kq, unsigned long timeout_ms) { + unsigned long org_timeout_ms; + BUG_ON(!kq); - timeout_ms += jiffies; + + org_timeout_ms = timeout_ms; + timeout_ms += jiffies * 1000 / HZ; while (*kq->wptr_kernel != *kq->rptr_kernel) { - if (time_after(jiffies, timeout_ms)) { - pr_err("kfd: kernel_queue %s timeout expired %lu\n", __func__, timeout_ms); - pr_err("kfd: wptr: %d rptr: %d\n", *kq->wptr_kernel, *kq->rptr_kernel); + if (time_after(jiffies * 1000 / HZ, timeout_ms)) { + pr_err("kfd: kernel_queue %s timeout expired %lu\n", + __func__, org_timeout_ms); + pr_err("kfd: wptr: %d rptr: %d\n", + *kq->wptr_kernel, *kq->rptr_kernel); return -ETIME; } cpu_relax(); -- 1.9.1
| |