Skip to content

Commit 6fe66b2

Browse files
Thomas Richterhcahca
authored andcommitted
s390/pai_crypto: Add common pai_start() 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_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>
1 parent 8f6116f commit 6fe66b2

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

arch/s390/kernel/perf_pai_crypto.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,17 +382,20 @@ static void paicrypt_read(struct perf_event *event)
382382
pai_read(event, paicrypt_getall);
383383
}
384384

385-
static void paicrypt_start(struct perf_event *event, int flags)
385+
static void pai_start(struct perf_event *event, int flags,
386+
u64 (*fct)(struct perf_event *event))
386387
{
388+
int idx = PAI_PMU_IDX(event);
389+
struct pai_pmu *pp = &pai_pmu[idx];
387390
struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr);
388391
struct pai_map *cpump = mp->mapptr;
389392
u64 sum;
390393

391394
if (!event->attr.sample_period) { /* Counting */
392-
sum = paicrypt_getall(event); /* Get current value */
395+
sum = fct(event); /* Get current value */
393396
local64_set(&event->hw.prev_count, sum);
394397
} else { /* Sampling */
395-
memcpy((void *)PAI_SAVE_AREA(event), cpump->area, PAGE_SIZE);
398+
memcpy((void *)PAI_SAVE_AREA(event), cpump->area, pp->area_size);
396399
/* Enable context switch callback for system-wide sampling */
397400
if (!(event->attach_state & PERF_ATTACH_TASK)) {
398401
list_add_tail(PAI_SWLIST(event), &cpump->syswide_list);
@@ -403,6 +406,11 @@ static void paicrypt_start(struct perf_event *event, int flags)
403406
}
404407
}
405408

409+
static void paicrypt_start(struct perf_event *event, int flags)
410+
{
411+
pai_start(event, flags, paicrypt_getall);
412+
}
413+
406414
static int paicrypt_add(struct perf_event *event, int flags)
407415
{
408416
struct pai_mapptr *mp = this_cpu_ptr(pai_root.mapptr);

0 commit comments

Comments
 (0)