diff options
| author | Thomas Richter <tmricht@linux.ibm.com> | 2025-11-05 15:38:50 +0100 |
|---|---|---|
| committer | Heiko Carstens <hca@linux.ibm.com> | 2025-11-14 11:30:06 +0100 |
| commit | 360e180d8b5d448429079d2c541c1968f3b82790 (patch) | |
| tree | b8c3f6a31abf9095fa7a17e86e8afa4b76e6edc1 | |
| parent | 42cd0c82422775e34528b9d0df438e51150a4db9 (diff) | |
s390/pai_crypto: Rename paicrypt_getctr() to pai_getctr()
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.
Rename paicrypt_getctr() to pai_getctr() to reflect is common
purpose. pai_getctr() now uses pai_pmu table to extract PAI PMU
characteristics such as kernel_offset inside the counter area page.
Also rename paicrypt_have_sample() to pai_have_sample().
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>
| -rw-r--r-- | arch/s390/kernel/perf_pai_crypto.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/arch/s390/kernel/perf_pai_crypto.c b/arch/s390/kernel/perf_pai_crypto.c index 8b3f6c624e81..33af05b91874 100644 --- a/arch/s390/kernel/perf_pai_crypto.c +++ b/arch/s390/kernel/perf_pai_crypto.c @@ -152,10 +152,10 @@ static void pai_event_destroy(struct perf_event *event) } } -static u64 paicrypt_getctr(unsigned long *page, int nr, bool kernel) +static u64 pai_getctr(unsigned long *page, int nr, unsigned long offset) { - if (kernel) - nr += PAI_CRYPTO_MAXCTR; + if (offset) + nr += offset / sizeof(*page); return page[nr]; } @@ -172,13 +172,14 @@ static u64 pai_getdata(struct perf_event *event, bool kernel) u64 sum = 0; if (event->attr.config != pp->base) { - return paicrypt_getctr(cpump->area, + return pai_getctr(cpump->area, event->attr.config - pp->base, - kernel); + kernel ? pp->kernel_offset : 0); } for (i = 1; i <= pp->num_avail; i++) { - u64 val = paicrypt_getctr(cpump->area, i, kernel); + u64 val = pai_getctr(cpump->area, i, + kernel ? pp->kernel_offset : 0); if (!val) continue; @@ -416,7 +417,7 @@ static int paicrypt_add(struct perf_event *event, int flags) return 0; } -static void paicrypt_have_sample(struct perf_event *, struct pai_map *); +static void pai_have_sample(struct perf_event *, struct pai_map *); static void paicrypt_stop(struct perf_event *event, int flags) { struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr); @@ -429,7 +430,7 @@ static void paicrypt_stop(struct perf_event *event, int flags) perf_sched_cb_dec(event->pmu); list_del(PAI_SWLIST(event)); } else { - paicrypt_have_sample(event, cpump); + pai_have_sample(event, cpump); cpump->event = NULL; } } @@ -456,21 +457,21 @@ static void paicrypt_del(struct perf_event *event, int flags) * 8 bytes: Value of counter */ static size_t paicrypt_copy(struct pai_userdata *userdata, unsigned long *page, - unsigned long *page_old, bool exclude_user, - bool exclude_kernel) + struct pai_pmu *pp, unsigned long *page_old, + bool exclude_user, bool exclude_kernel) { int i, outidx = 0; - for (i = 1; i <= paicrypt_cnt; i++) { + for (i = 1; i <= pp->num_avail; i++) { u64 val = 0, val_old = 0; if (!exclude_kernel) { - val += paicrypt_getctr(page, i, true); - val_old += paicrypt_getctr(page_old, i, true); + val += pai_getctr(page, i, pp->kernel_offset); + val_old += pai_getctr(page_old, i, pp->kernel_offset); } if (!exclude_user) { - val += paicrypt_getctr(page, i, false); - val_old += paicrypt_getctr(page_old, i, false); + val += pai_getctr(page, i, 0); + val_old += pai_getctr(page_old, i, 0); } if (val >= val_old) val -= val_old; @@ -524,14 +525,15 @@ static int paicrypt_push_sample(size_t rawsize, struct pai_map *cpump, } /* Check if there is data to be saved on schedule out of a task. */ -static void paicrypt_have_sample(struct perf_event *event, - struct pai_map *cpump) +static void pai_have_sample(struct perf_event *event, struct pai_map *cpump) { + struct pai_pmu *pp; size_t rawsize; if (!event) /* No event active */ return; - rawsize = paicrypt_copy(cpump->save, cpump->area, + pp = &pai_pmu[PAI_PMU_IDX(event)]; + rawsize = paicrypt_copy(cpump->save, cpump->area, pp, (unsigned long *)PAI_SAVE_AREA(event), event->attr.exclude_user, event->attr.exclude_kernel); @@ -547,7 +549,7 @@ static void paicrypt_have_samples(void) struct perf_event *event; list_for_each_entry(event, &cpump->syswide_list, hw.tp_list) - paicrypt_have_sample(event, cpump); + pai_have_sample(event, cpump); } /* Called on schedule-in and schedule-out. No access to event structure, |
