From 8f6116fd4940ad60adbfaca3525567b087054b5b Mon Sep 17 00:00:00 2001 From: Thomas Richter Date: Wed, 5 Nov 2025 15:38:53 +0100 Subject: [PATCH] s390/pai_crypto: Add common pai_read() function To support one common PAI PMU device driver which handles both PMUs pai_crypto and pai_ext, use a common naming scheme for structures and variables suitable for both device drivers. Add a common usable function pai_read() to read counter values. The function expects a PAI PMU specific read function as second parameter. Signed-off-by: Thomas Richter Reviewed-by: Jan Polensky Signed-off-by: Heiko Carstens --- arch/s390/kernel/perf_pai_crypto.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/s390/kernel/perf_pai_crypto.c b/arch/s390/kernel/perf_pai_crypto.c index 59b18f86b8ae8..4eb1a09c36bd2 100644 --- a/arch/s390/kernel/perf_pai_crypto.c +++ b/arch/s390/kernel/perf_pai_crypto.c @@ -365,18 +365,23 @@ static int paicrypt_event_init(struct perf_event *event) return rc; } -static void paicrypt_read(struct perf_event *event) +static void pai_read(struct perf_event *event, + u64 (*fct)(struct perf_event *event)) { u64 prev, new, delta; prev = local64_read(&event->hw.prev_count); - new = paicrypt_getall(event); + new = fct(event); local64_set(&event->hw.prev_count, new); - delta = (prev <= new) ? new - prev - : (-1ULL - prev) + new + 1; /* overflow */ + delta = (prev <= new) ? new - prev : (-1ULL - prev) + new + 1; local64_add(delta, &event->count); } +static void paicrypt_read(struct perf_event *event) +{ + pai_read(event, paicrypt_getall); +} + static void paicrypt_start(struct perf_event *event, int flags) { struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr); -- 2.47.3