accel/habanalabs: capture RAZWI info only if HW indication detected
authorKoby Elbaz <kelbaz@habana.ai>
Sun, 22 Jan 2023 09:30:26 +0000 (11:30 +0200)
committerOded Gabbay <ogabbay@kernel.org>
Wed, 15 Mar 2023 11:29:11 +0000 (13:29 +0200)
RAZWI handling routine is called from most EQ events,
no matter if a RAZWI happens or not.
This fix is added to verify the handler is called only if
a real RAZWI indication in HW has been detected.

Signed-off-by: Koby Elbaz <kelbaz@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
drivers/accel/habanalabs/gaudi/gaudi.c

index bb858b94e1e81348853601019a907a268a4883fa..4ba5352cb7cbfd92e2e83c4aac14f541ac4b3eac 100644 (file)
@@ -7297,7 +7297,7 @@ static void gaudi_handle_qman_err(struct hl_device *hdev, u16 event_type, u64 *e
 }
 
 static void gaudi_print_irq_info(struct hl_device *hdev, u16 event_type,
-                                       bool razwi, u64 *event_mask)
+                                       bool check_razwi, u64 *event_mask)
 {
        bool is_read = false, is_write = false;
        u16 engine_id[2], num_of_razwi_eng = 0;
@@ -7316,7 +7316,7 @@ static void gaudi_print_irq_info(struct hl_device *hdev, u16 event_type,
        dev_err_ratelimited(hdev->dev, "Received H/W interrupt %d [\"%s\"]\n",
                event_type, desc);
 
-       if (razwi) {
+       if (check_razwi) {
                gaudi_print_and_get_razwi_info(hdev, &engine_id[0], &engine_id[1], &is_read,
                                                &is_write);
                gaudi_print_and_get_mmu_error_info(hdev, &razwi_addr, event_mask);
@@ -7333,8 +7333,9 @@ static void gaudi_print_irq_info(struct hl_device *hdev, u16 event_type,
                                num_of_razwi_eng = 1;
                }
 
-               hl_handle_razwi(hdev, razwi_addr, engine_id, num_of_razwi_eng, razwi_flags,
-                               event_mask);
+               if (razwi_flags)
+                       hl_handle_razwi(hdev, razwi_addr, engine_id, num_of_razwi_eng,
+                                       razwi_flags, event_mask);
        }
 }