} __packed;
struct paicrypt_map {
- unsigned long *page; /* Page for CPU to store counters */
+ unsigned long *area; /* Area for CPU to store counters */
struct pai_userdata *save; /* Page to store no-zero counters */
unsigned int active_events; /* # of PAI crypto users */
refcount_t refcnt; /* Reference count mapped buffers */
/* Free all memory allocated for event counting/sampling setup */
static void paicrypt_free(struct paicrypt_mapptr *mp)
{
- free_page((unsigned long)mp->mapptr->page);
+ free_page((unsigned long)mp->mapptr->area);
kvfree(mp->mapptr->save);
kfree(mp->mapptr);
mp->mapptr = NULL;
int i;
if (event->attr.config != PAI_CRYPTO_BASE) {
- return paicrypt_getctr(cpump->page,
+ return paicrypt_getctr(cpump->area,
event->attr.config - PAI_CRYPTO_BASE,
kernel);
}
for (i = 1; i <= paicrypt_cnt; i++) {
- u64 val = paicrypt_getctr(cpump->page, i, kernel);
+ u64 val = paicrypt_getctr(cpump->area, i, kernel);
if (!val)
continue;
* Only the first counting event has to allocate a page.
*/
mp->mapptr = cpump;
- cpump->page = (unsigned long *)get_zeroed_page(GFP_KERNEL);
+ cpump->area = (unsigned long *)get_zeroed_page(GFP_KERNEL);
cpump->save = kvmalloc_array(paicrypt_cnt + 1,
sizeof(struct pai_userdata),
GFP_KERNEL);
- if (!cpump->page || !cpump->save) {
+ if (!cpump->area || !cpump->save) {
paicrypt_free(mp);
goto undo;
}
sum = paicrypt_getall(event); /* Get current value */
local64_set(&event->hw.prev_count, sum);
} else { /* Sampling */
- memcpy((void *)PAI_SAVE_AREA(event), cpump->page, PAGE_SIZE);
+ memcpy((void *)PAI_SAVE_AREA(event), cpump->area, PAGE_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);
unsigned long ccd;
if (++cpump->active_events == 1) {
- ccd = virt_to_phys(cpump->page) | PAI_CRYPTO_KERNEL_OFFSET;
+ ccd = virt_to_phys(cpump->area) | PAI_CRYPTO_KERNEL_OFFSET;
WRITE_ONCE(get_lowcore()->ccd, ccd);
local_ctl_set_bit(0, CR0_CRYPTOGRAPHY_COUNTER_BIT);
}
overflow = perf_event_overflow(event, &data, ®s);
perf_event_update_userpage(event);
/* Save crypto counter lowcore page after reading event data. */
- memcpy((void *)PAI_SAVE_AREA(event), cpump->page, PAGE_SIZE);
+ memcpy((void *)PAI_SAVE_AREA(event), cpump->area, PAGE_SIZE);
return overflow;
}
if (!event) /* No event active */
return;
- rawsize = paicrypt_copy(cpump->save, cpump->page,
+ rawsize = paicrypt_copy(cpump->save, cpump->area,
(unsigned long *)PAI_SAVE_AREA(event),
event->attr.exclude_user,
event->attr.exclude_kernel);