Re: [PATCH] lib: sbi_pmu: Track SBI_PMU_FW_PLATFORM started counter

Atish Patra
2026-02-02T19:31:05Z

On 1/27/26 3:58 PM, Charlie Jenkins via B4 Relay wrote:
> From: Charlie Jenkins <thecharlesjenkins@gmail.com>
>
> When a SBI_PMU_FW_PLATFORM starts, add the counter to the counter array
> instead of returning early. This will cause fw_counter_stop() to be
> called when a SBI_PMU_FW_PLATFORM counter should be stopped.
>
> Signed-off-by: Charlie Jenkins <thecharlesjenkins@gmail.com>
> ---
> lib/sbi/sbi_pmu.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c
> index e084005d..3c61079b 100644
> --- a/lib/sbi/sbi_pmu.c
> +++ b/lib/sbi/sbi_pmu.c
> @@ -448,6 +448,8 @@ static int pmu_ctr_start_fw(struct sbi_pmu_hart_state *phs,
> uint64_t event_data, uint64_t ival,
> bool ival_update)
> {
> + int rc = 0;
> +
> if ((event_code >= SBI_PMU_FW_MAX &&
> event_code <= SBI_PMU_FW_RESERVED_MAX) ||
> event_code > SBI_PMU_FW_PLATFORM)
> @@ -468,9 +470,9 @@ static int pmu_ctr_start_fw(struct sbi_pmu_hart_state *phs,
> cidx - num_hw_ctrs,
> ival);
>
> - return pmu_dev->fw_counter_start(phs->hartid,
> - cidx - num_hw_ctrs,
> - event_data);
> + rc = pmu_dev->fw_counter_start(phs->hartid,
> + cidx - num_hw_ctrs,
> + event_data);
> } else {
> if (ival_update)
> phs->fw_counters_data[cidx - num_hw_ctrs] = ival;
> @@ -478,7 +480,7 @@ static int pmu_ctr_start_fw(struct sbi_pmu_hart_state *phs,
>
> phs->fw_counters_started |= BIT(cidx - num_hw_ctrs);
>
> - return 0;
> + return rc;
> }
>
> static void pmu_update_inhibit_flags(unsigned long flags, uint64_t *mhpmevent_val)
>

Reviewed-by: Atish Patra <atishp@meta.com>

> ---
> base-commit: 74434f255873d74e56cc50aa762d1caf24c099f8
> change-id: 20260127-pmu_platform_stop-febef65abf54
>
> - Charlie