2023-09-28 13:35:05

by Oded Gabbay

[permalink] [raw]
Subject: [PATCH] accel/habanalabs/gaudi2: fix spmu mask creation

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 <[email protected]>
---
drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c b/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
index 14a855cdc96b..2423620ff358 100644
--- a/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
+++ b/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
@@ -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 {
--
2.34.1


2023-10-01 16:26:12

by Ofir Bitton

[permalink] [raw]
Subject: Re: [PATCH] accel/habanalabs/gaudi2: fix spmu mask creation

On 28/09/2023 16:25, Oded Gabbay wrote:
> 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 <[email protected]>
> ---
> drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c b/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
> index 14a855cdc96b..2423620ff358 100644
> --- a/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
> +++ b/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c
> @@ -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 {

Reviewed-by: Ofir Bitton <[email protected]>