Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

perf: riscv: skip empty batches in counter start

Avoid unnecessary SBI calls when starting non-overflowed counters
in pmu_sbi_start_ovf_ctrs_sbi() by checking ctr_start_mask.

Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20250804025110.11088-1-cuiyunhui@bytedance.com
Signed-off-by: Paul Walmsley <pjw@kernel.org>

authored by

Yunhui Cui and committed by
Paul Walmsley
568a2fa1 f68cd7dd

+4 -2
+4 -2
drivers/perf/riscv_pmu_sbi.c
··· 877 877 for (i = 0; i < BITS_TO_LONGS(RISCV_MAX_COUNTERS); i++) { 878 878 ctr_start_mask = cpu_hw_evt->used_hw_ctrs[i] & ~ctr_ovf_mask; 879 879 /* Start all the counters that did not overflow in a single shot */ 880 - sbi_ecall(SBI_EXT_PMU, SBI_EXT_PMU_COUNTER_START, i * BITS_PER_LONG, ctr_start_mask, 881 - 0, 0, 0, 0); 880 + if (ctr_start_mask) { 881 + sbi_ecall(SBI_EXT_PMU, SBI_EXT_PMU_COUNTER_START, i * BITS_PER_LONG, 882 + ctr_start_mask, 0, 0, 0, 0); 883 + } 882 884 } 883 885 884 886 /* Reinitialize and start all the counter that overflowed */