[PATCH] lib: sbi_pmu: Track SBI_PMU_FW_PLATFORM started counter

Charlie Jenkins thecharlesjenkins at gmail.com
Wed Feb 25 16:35:42 PST 2026


On Mon, Feb 23, 2026 at 10:29:44AM +0530, Anup Patel wrote:
> On Wed, Jan 28, 2026 at 5:28 AM Charlie Jenkins via B4 Relay
> <devnull+thecharlesjenkins.gmail.com at kernel.org> 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>
> 
> This is already covered by the following patch:
> "lib: sbi_pmu: Fix multiple FW counter start operations with custom PMU device"
> 
> Regards,
> Anup

Great, thanks for applying that one!

- Charlie

> 
> > ---
> >  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)
> >
> > ---
> > base-commit: 74434f255873d74e56cc50aa762d1caf24c099f8
> > change-id: 20260127-pmu_platform_stop-febef65abf54
> >
> > - Charlie
> >
> >
> >
> > --
> > opensbi mailing list
> > opensbi at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/opensbi
> 
> -- 
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list