diff mbox series

perf: RISC-V: fix failure for custom firmware events

Message ID 20220919155211.14453-1-mchitale@ventanamicro.com (mailing list archive)
State New, archived
Headers show
Series perf: RISC-V: fix failure for custom firmware events | expand

Commit Message

Mayuresh Chitale Sept. 19, 2022, 3:52 p.m. UTC
We can have SBI implementation specific firmware events in addition
to standard firmware events so we should not check firmware event code
against any limit. This patch removes the check so that programming
of the custom firmware events can be supported by the driver.

Fixes: e9991434596f5 ("RISC-V: Add perf platform driver based on SBI PMU extension")
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
---
 drivers/perf/riscv_pmu_sbi.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

Comments

Atish Patra Sept. 20, 2022, 8:30 a.m. UTC | #1
On Mon, Sep 19, 2022 at 8:52 AM Mayuresh Chitale
<mchitale@ventanamicro.com> wrote:
>
> We can have SBI implementation specific firmware events in addition
> to standard firmware events so we should not check firmware event code
> against any limit. This patch removes the check so that programming
> of the custom firmware events can be supported by the driver.
>
> Fixes: e9991434596f5 ("RISC-V: Add perf platform driver based on SBI PMU extension")
> Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
> ---
>  drivers/perf/riscv_pmu_sbi.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c
> index 8de4ca2fef21..df044292615c 100644
> --- a/drivers/perf/riscv_pmu_sbi.c
> +++ b/drivers/perf/riscv_pmu_sbi.c
> @@ -381,11 +381,8 @@ static int pmu_sbi_event_map(struct perf_event *event, u64 *econfig)
>                 bSoftware = config >> 63;
>                 raw_config_val = config & RISCV_PMU_RAW_EVENT_MASK;
>                 if (bSoftware) {
> -                       if (raw_config_val < SBI_PMU_FW_MAX)
> -                               ret = (raw_config_val & 0xFFFF) |
> -                                     (SBI_PMU_EVENT_TYPE_FW << 16);
> -                       else
> -                               return -EINVAL;
> +                       ret = (raw_config_val & 0xFFFF) |
> +                               (SBI_PMU_EVENT_TYPE_FW << 16);
>                 } else {
>                         ret = RISCV_PMU_RAW_EVENT_IDX;
>                         *econfig = raw_config_val;
> --
> 2.25.1
>

I don't think this should be tagged as a fix. The SBI spec currently
does not mention anything about custom firmware events.
As it only defined a certain set of firmware events, the check was
added in the driver.

Just to be clear, I am not against this patch. We should allow
firmware to support custom events beyond what standard firmware events
that SBI specification defines.
The SBI spec will be improved to add provisions for custom firmware events.
The patch looks good to me with the fixes tag removed.
diff mbox series

Patch

diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c
index 8de4ca2fef21..df044292615c 100644
--- a/drivers/perf/riscv_pmu_sbi.c
+++ b/drivers/perf/riscv_pmu_sbi.c
@@ -381,11 +381,8 @@  static int pmu_sbi_event_map(struct perf_event *event, u64 *econfig)
 		bSoftware = config >> 63;
 		raw_config_val = config & RISCV_PMU_RAW_EVENT_MASK;
 		if (bSoftware) {
-			if (raw_config_val < SBI_PMU_FW_MAX)
-				ret = (raw_config_val & 0xFFFF) |
-				      (SBI_PMU_EVENT_TYPE_FW << 16);
-			else
-				return -EINVAL;
+			ret = (raw_config_val & 0xFFFF) |
+				(SBI_PMU_EVENT_TYPE_FW << 16);
 		} else {
 			ret = RISCV_PMU_RAW_EVENT_IDX;
 			*econfig = raw_config_val;