Re: [PATCH] lib: sbi_pmu: Honor CLEAR_VALUE/AUTO_START for all hardware event types
Anup Patel <[email protected]> Fri, 12 Jun 2026 18:53:19 +0530
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CAK9=C2V_At9_+0nUO8jhqnam7heXkQfe_ykhMhNjBvT=+MOFsQ@mail.gmail.com> |
On Fri, May 22, 2026 at 8:16 PM David E. Garcia Porras <[email protected]> wrote: > > sbi_pmu_ctr_cfg_match() only acts on SBI_PMU_CFG_FLAG_CLEAR_VALUE and > SBI_PMU_CFG_FLAG_AUTO_START when the event type is SBI_PMU_EVENT_TYPE_HW. > However, pmu_ctr_find_hw() allocates a hardware counter from the same > hw_event_map for SBI_PMU_EVENT_TYPE_HW_CACHE, SBI_PMU_EVENT_TYPE_HW_RAW, > and SBI_PMU_EVENT_TYPE_HW_RAW_V2 as well, and the start/clear helpers > (pmu_ctr_start_hw, pmu_ctr_write_hw) operate on the counter index alone > and are agnostic to the event type. As a result, when a supervisor > configures a HW_CACHE/HW_RAW/HW_RAW_V2 event with these flags, the > counter is programmed and recorded in active_events[] but is never > cleared or started, requiring an extra SBI call to make it count. > > Extend the check to cover all hardware-counter event types so that the > configuration flags take effect for HW_CACHE and raw events too. > > Deliberately avoiding using "not FW" logic to be explicit about HW-backed events only. > > Fixes: 13d40f21 ("lib: sbi: Add PMU support") > Signed-off-by: David E. Garcia Porras <[email protected]> LGTM. Reviewed-by: Anup Patel <[email protected]> Applied this patch to the riscv/opensbi repo. Thanks, Anup > --- > lib/sbi/sbi_pmu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c > index 8a9021e2..480a9723 100644 > --- a/lib/sbi/sbi_pmu.c > +++ b/lib/sbi/sbi_pmu.c > @@ -946,7 +946,10 @@ int sbi_pmu_ctr_cfg_match(unsigned long cidx_base, unsigned long cidx_mask, > > phs->active_events[ctr_idx] = event_idx; > skip_match: > - if (event_type == SBI_PMU_EVENT_TYPE_HW) { > + if (event_type == SBI_PMU_EVENT_TYPE_HW || > + event_type == SBI_PMU_EVENT_TYPE_HW_CACHE || > + event_type == SBI_PMU_EVENT_TYPE_HW_RAW || > + event_type == SBI_PMU_EVENT_TYPE_HW_RAW_V2) { > if (flags & SBI_PMU_CFG_FLAG_CLEAR_VALUE) > pmu_ctr_write_hw(ctr_idx, 0); > if (flags & SBI_PMU_CFG_FLAG_AUTO_START) > -- > 2.43.0 > > > -- > opensbi mailing list > [email protected] > http://lists.infradead.org/mailman/listinfo/opensbi -- opensbi mailing list [email protected] http://lists.infradead.org/mailman/listinfo/opensbi