accel/habanalabs/gaudi2: fix spmu mask creation
authorOded Gabbay <ogabbay@kernel.org>
Thu, 28 Sep 2023 13:12:30 +0000 (16:12 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 9 Oct 2023 09:37:24 +0000 (12:37 +0300)
event_types_num received from the user can be 0. In that case, the
event_mask should be 0.

In addition, to create a correct mask we need to match the number
of event types to the bit location such that bit 0 represents a single
event type, bit 1 represents 2 types and so on.

Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Reviewed-by: Ofir Bitton <obitton@habana.ai>
drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c

index 14a855cdc96b6e7f4f1c47401dcde49d7ac534f5..2423620ff358f1994c49d71898e99264e063e116 100644 (file)
@@ -2500,7 +2500,8 @@ static int gaudi2_config_spmu(struct hl_device *hdev, struct hl_debug_params *pa
                 * set enabled events mask based on input->event_types_num
                 */
                event_mask = 0x80000000;
-               event_mask |= GENMASK(input->event_types_num, 0);
+               if (input->event_types_num)
+                       event_mask |= GENMASK(input->event_types_num - 1, 0);
 
                WREG32(base_reg + mmSPMU_PMCNTENSET_EL0_OFFSET, event_mask);
        } else {