linux/arch
Kajol Jain 4708fba19a powerpc/vpa_dtl: Add interface to expose vpa dtl counters via perf
The pseries Shared Processor Logical Partition(SPLPAR) machines
can retrieve a log of dispatch and preempt events from the
hypervisor using data from Disptach Trace Log(DTL) buffer.
With this information, user can retrieve when and why each dispatch &
preempt has occurred. Added an interface to expose the Virtual Processor
Area(VPA) DTL counters via perf.

The following events are available and exposed in sysfs:

 vpa_dtl/dtl_cede/ - Trace voluntary (OS initiated) virtual processor waits
 vpa_dtl/dtl_preempt/ - Trace time slice preempts
 vpa_dtl/dtl_fault/ - Trace virtual partition memory page faults.
 vpa_dtl/dtl_all/ - Trace all (dtl_cede/dtl_preempt/dtl_fault)

Added interface defines supported event list, config fields for the
event attributes and their corresponding bit values which are exported
via sysfs. User could use the standard perf tool to access perf events
exposed via vpa-dtl pmu.

The VPA DTL PMU counters do not interrupt on overflow or generate any
PMI interrupts. Therefore, the kernel needs to poll the counters, added
hrtimer code to do that. The timer interval can be provided by user via
sample_period field in nano seconds. There is one hrtimer added per
vpa-dtl pmu thread.

To ensure there are no other conflicting dtl users (example: debugfs dtl
or /proc/powerpc/vcpudispatch_stats), interface added code to use
"down_write_trylock" call to take the dtl_access_lock. The dtl_access_lock
is defined in dtl.h file. Also added global reference count variable called
"dtl_global_refc", to ensure dtl data can be captured per-cpu. Code also
added global lock called "dtl_global_lock" to avoid race condition.

Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
Tested-by: Tejas Manhas <tejas05@linux.ibm.com>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20250915102947.26681-3-atrajeev@linux.ibm.com
2025-09-22 14:48:57 +05:30
..
alpha Significant patch series in this pull request: 2025-08-03 16:23:09 -07:00
arc
arm ARM: stacktrace: include asm/sections.h in asm/stacktrace.h 2025-08-25 06:12:06 -07:00
arm64 Two arm64 fixes: 2025-08-30 10:43:53 -07:00
csky
hexagon
loongarch LoongArch: KVM: Add address alignment check in pch_pic register access 2025-08-20 22:51:15 +08:00
m68k treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
microblaze
mips mips: lantiq: xway: sysctrl: rename the etop node 2025-08-22 22:03:21 +02:00
nios2
openrisc OpenRISC updates for 6.17 2025-08-04 08:37:46 -07:00
parisc parisc architecture fixes for kernel v6.17-rc1: 2025-08-01 16:15:53 -07:00
powerpc powerpc/vpa_dtl: Add interface to expose vpa dtl counters via perf 2025-09-22 14:48:57 +05:30
riscv RISC-V: KVM: fix stack overrun when loading vlenb 2025-08-25 10:26:20 +05:30
s390 s390/hypfs: Enable limited access during lockdown 2025-08-21 17:46:14 +02:00
sh Significant patch series in this pull request: 2025-08-03 16:23:09 -07:00
sparc Summary of significant series in this pull request: 2025-07-31 14:57:54 -07:00
um
x86 - Convert the SSB mitigation to the attack vector controls which got forgotten 2025-08-31 09:20:17 -07:00
xtensa Xtensa updates for v6.17 2025-08-09 07:35:03 +03:00
.gitignore
Kconfig Deferred unwind changes for 6.17 2025-08-01 09:46:24 -07:00