Message ID | 20230928132527.89451-1-ogabbay@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | accel/habanalabs/gaudi2: fix spmu mask creation | expand |
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 <ogabbay@kernel.org> > --- > 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 <obitton@habana.ai>
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 {
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> --- drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)