]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/pai_crypto: Add common pai_start() function
authorThomas Richter <tmricht@linux.ibm.com>
Wed, 5 Nov 2025 14:38:54 +0000 (15:38 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Fri, 14 Nov 2025 10:30:06 +0000 (11:30 +0100)
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_start() to the event on a CPU.
The function expects a PAI PMU specific read function as second
parameter to read out the start value for an event.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Reviewed-by: Jan Polensky <japo@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/kernel/perf_pai_crypto.c

index 4eb1a09c36bd255ee5893b40f9c43c6b17d7f32d..e7f2257641261a1e93d309b1b2b341747b5263e6 100644 (file)
@@ -382,17 +382,20 @@ static void paicrypt_read(struct perf_event *event)
        pai_read(event, paicrypt_getall);
 }
 
-static void paicrypt_start(struct perf_event *event, int flags)
+static void pai_start(struct perf_event *event, int flags,
+                     u64 (*fct)(struct perf_event *event))
 {
+       int idx = PAI_PMU_IDX(event);
+       struct pai_pmu *pp = &pai_pmu[idx];
        struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr);
        struct pai_map *cpump = mp->mapptr;
        u64 sum;
 
        if (!event->attr.sample_period) {       /* Counting */
-               sum = paicrypt_getall(event);   /* Get current value */
+               sum = fct(event);               /* Get current value */
                local64_set(&event->hw.prev_count, sum);
        } else {                                /* Sampling */
-               memcpy((void *)PAI_SAVE_AREA(event), cpump->area, PAGE_SIZE);
+               memcpy((void *)PAI_SAVE_AREA(event), cpump->area, pp->area_size);
                /* Enable context switch callback for system-wide sampling */
                if (!(event->attach_state & PERF_ATTACH_TASK)) {
                        list_add_tail(PAI_SWLIST(event), &cpump->syswide_list);
@@ -403,6 +406,11 @@ static void paicrypt_start(struct perf_event *event, int flags)
        }
 }
 
+static void paicrypt_start(struct perf_event *event, int flags)
+{
+       pai_start(event, flags, paicrypt_getall);
+}
+
 static int paicrypt_add(struct perf_event *event, int flags)
 {
        struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr);