[PATCH] lib: sbi_pmu: Track SBI_PMU_FW_PLATFORM started counter

Atish Patra atish.patra at linux.dev
Mon Feb 2 11:28:08 PST 2026


On 1/27/26 3:58 PM, Charlie Jenkins via B4 Relay wrote:
> From: Charlie Jenkins <thecharlesjenkins at 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 at 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 at meta.com>

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




More information about the opensbi mailing list