From: Tomer Tayar <[email protected]>

There are no internal queues if H/W queues are being used.
In this case we can skip the redundant traversal over the queues array,
looking for internal queues.

Signed-off-by: Tomer Tayar <[email protected]>
Reviewed-by: Oded Gabbay <[email protected]>
Signed-off-by: Oded Gabbay <[email protected]>
---
 drivers/misc/habanalabs/common/hw_queue.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/misc/habanalabs/common/hw_queue.c 
b/drivers/misc/habanalabs/common/hw_queue.c
index 239e2ba0545f..84a7458f3363 100644
--- a/drivers/misc/habanalabs/common/hw_queue.c
+++ b/drivers/misc/habanalabs/common/hw_queue.c
@@ -48,6 +48,11 @@ void hl_int_hw_queue_update_ci(struct hl_cs *cs)
                return;
 
        q = &hdev->kernel_queues[0];
+
+       /* There are no internal queues if H/W queues are being used */
+       if (!hdev->asic_prop.max_queues || q->queue_type == QUEUE_TYPE_HW)
+               return;
+
        for (i = 0 ; i < hdev->asic_prop.max_queues ; i++, q++) {
                if (q->queue_type == QUEUE_TYPE_INT)
                        atomic_add(cs->jobs_in_queue_cnt[i], &q->ci);
-- 
2.17.1

Reply via email to