Symbol: idxd_pmu
drivers/dma/idxd/idxd.h
370
struct idxd_pmu *idxd_pmu;
drivers/dma/idxd/perfmon.c
104
static int perfmon_assign_event(struct idxd_pmu *idxd_pmu,
drivers/dma/idxd/perfmon.c
110
if (!test_and_set_bit(i, idxd_pmu->used_mask))
drivers/dma/idxd/perfmon.c
124
static int perfmon_validate_group(struct idxd_pmu *pmu,
drivers/dma/idxd/perfmon.c
128
struct idxd_pmu *fake_pmu;
drivers/dma/idxd/perfmon.c
186
if (event->pmu != &idxd->idxd_pmu->pmu)
drivers/dma/idxd/perfmon.c
194
ret = perfmon_validate_group(idxd->idxd_pmu, event);
drivers/dma/idxd/perfmon.c
214
int shift = 64 - idxd->idxd_pmu->counter_width;
drivers/dma/idxd/perfmon.c
236
n_counters = min(idxd->idxd_pmu->n_counters, OVERFLOW_SIZE);
drivers/dma/idxd/perfmon.c
254
event = idxd->idxd_pmu->event_list[i];
drivers/dma/idxd/perfmon.c
317
if (flt_wq && test_bit(FLT_WQ, &idxd->idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
319
if (flt_tc && test_bit(FLT_TC, &idxd->idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
321
if (flt_pg_sz && test_bit(FLT_PG_SZ, &idxd->idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
323
if (flt_xfer_sz && test_bit(FLT_XFER_SZ, &idxd->idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
325
if (flt_eng && test_bit(FLT_ENG, &idxd->idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
351
for (i = 0; i < idxd->idxd_pmu->n_events; i++) {
drivers/dma/idxd/perfmon.c
352
if (event != idxd->idxd_pmu->event_list[i])
drivers/dma/idxd/perfmon.c
355
for (++i; i < idxd->idxd_pmu->n_events; i++)
drivers/dma/idxd/perfmon.c
356
idxd->idxd_pmu->event_list[i - 1] = idxd->idxd_pmu->event_list[i];
drivers/dma/idxd/perfmon.c
357
--idxd->idxd_pmu->n_events;
drivers/dma/idxd/perfmon.c
369
clear_bit(cntr, idxd->idxd_pmu->used_mask);
drivers/dma/idxd/perfmon.c
380
struct idxd_pmu *idxd_pmu = idxd->idxd_pmu;
drivers/dma/idxd/perfmon.c
384
n = perfmon_collect_events(idxd_pmu, event, false);
drivers/dma/idxd/perfmon.c
392
idx = perfmon_assign_event(idxd_pmu, event);
drivers/dma/idxd/perfmon.c
396
perfmon_assign_hw_event(idxd_pmu, event, idx);
drivers/dma/idxd/perfmon.c
401
idxd_pmu->n_events = n;
drivers/dma/idxd/perfmon.c
439
static void idxd_pmu_init(struct idxd_pmu *idxd_pmu)
drivers/dma/idxd/perfmon.c
444
if (!test_bit(i, &idxd_pmu->supported_filters))
drivers/dma/idxd/perfmon.c
448
idxd_pmu->pmu.name = idxd_pmu->name;
drivers/dma/idxd/perfmon.c
449
idxd_pmu->pmu.attr_groups = perfmon_attr_groups;
drivers/dma/idxd/perfmon.c
450
idxd_pmu->pmu.task_ctx_nr = perf_invalid_context;
drivers/dma/idxd/perfmon.c
451
idxd_pmu->pmu.event_init = perfmon_pmu_event_init;
drivers/dma/idxd/perfmon.c
452
idxd_pmu->pmu.pmu_enable = perfmon_pmu_enable;
drivers/dma/idxd/perfmon.c
453
idxd_pmu->pmu.pmu_disable = perfmon_pmu_disable;
drivers/dma/idxd/perfmon.c
454
idxd_pmu->pmu.add = perfmon_pmu_event_add;
drivers/dma/idxd/perfmon.c
455
idxd_pmu->pmu.del = perfmon_pmu_event_del;
drivers/dma/idxd/perfmon.c
456
idxd_pmu->pmu.start = perfmon_pmu_event_start;
drivers/dma/idxd/perfmon.c
457
idxd_pmu->pmu.stop = perfmon_pmu_event_stop;
drivers/dma/idxd/perfmon.c
458
idxd_pmu->pmu.read = perfmon_pmu_event_update;
drivers/dma/idxd/perfmon.c
459
idxd_pmu->pmu.capabilities = PERF_PMU_CAP_NO_EXCLUDE;
drivers/dma/idxd/perfmon.c
460
idxd_pmu->pmu.scope = PERF_PMU_SCOPE_SYS_WIDE;
drivers/dma/idxd/perfmon.c
461
idxd_pmu->pmu.module = THIS_MODULE;
drivers/dma/idxd/perfmon.c
466
if (!idxd->idxd_pmu)
drivers/dma/idxd/perfmon.c
469
perf_pmu_unregister(&idxd->idxd_pmu->pmu);
drivers/dma/idxd/perfmon.c
470
kfree(idxd->idxd_pmu);
drivers/dma/idxd/perfmon.c
471
idxd->idxd_pmu = NULL;
drivers/dma/idxd/perfmon.c
477
struct idxd_pmu *idxd_pmu;
drivers/dma/idxd/perfmon.c
487
idxd_pmu = kzalloc_obj(*idxd_pmu);
drivers/dma/idxd/perfmon.c
488
if (!idxd_pmu)
drivers/dma/idxd/perfmon.c
491
idxd_pmu->idxd = idxd;
drivers/dma/idxd/perfmon.c
492
idxd->idxd_pmu = idxd_pmu;
drivers/dma/idxd/perfmon.c
495
rc = sprintf(idxd_pmu->name, "dsa%d", idxd->id);
drivers/dma/idxd/perfmon.c
499
rc = sprintf(idxd_pmu->name, "iax%d", idxd->id);
drivers/dma/idxd/perfmon.c
50
static bool is_idxd_event(struct idxd_pmu *idxd_pmu, struct perf_event *event)
drivers/dma/idxd/perfmon.c
52
return &idxd_pmu->pmu == event->pmu;
drivers/dma/idxd/perfmon.c
536
idxd_pmu->n_event_categories = perfcap.num_event_category;
drivers/dma/idxd/perfmon.c
537
idxd_pmu->supported_event_categories = perfcap.global_event_category;
drivers/dma/idxd/perfmon.c
538
idxd_pmu->per_counter_caps_supported = perfcap.cap_per_counter;
drivers/dma/idxd/perfmon.c
541
idxd_pmu->supported_filters = perfcap.filter;
drivers/dma/idxd/perfmon.c
543
idxd_pmu->n_filters = hweight8(perfcap.filter);
drivers/dma/idxd/perfmon.c
546
idxd_pmu->n_counters = perfcap.num_perf_counter;
drivers/dma/idxd/perfmon.c
547
idxd_pmu->counter_width = perfcap.counter_width;
drivers/dma/idxd/perfmon.c
549
idxd_pmu_init(idxd_pmu);
drivers/dma/idxd/perfmon.c
55
static int perfmon_collect_events(struct idxd_pmu *idxd_pmu,
drivers/dma/idxd/perfmon.c
551
rc = perf_pmu_register(&idxd_pmu->pmu, idxd_pmu->name, -1);
drivers/dma/idxd/perfmon.c
558
kfree(idxd_pmu);
drivers/dma/idxd/perfmon.c
559
idxd->idxd_pmu = NULL;
drivers/dma/idxd/perfmon.c
62
max_count = idxd_pmu->n_counters;
drivers/dma/idxd/perfmon.c
63
n = idxd_pmu->n_events;
drivers/dma/idxd/perfmon.c
68
if (is_idxd_event(idxd_pmu, leader)) {
drivers/dma/idxd/perfmon.c
69
idxd_pmu->event_list[n] = leader;
drivers/dma/idxd/perfmon.c
70
idxd_pmu->event_list[n]->hw.idx = n;
drivers/dma/idxd/perfmon.c
78
if (!is_idxd_event(idxd_pmu, event) ||
drivers/dma/idxd/perfmon.c
85
idxd_pmu->event_list[n] = event;
drivers/dma/idxd/perfmon.c
86
idxd_pmu->event_list[n]->hw.idx = n;
drivers/dma/idxd/perfmon.c
93
static void perfmon_assign_hw_event(struct idxd_pmu *idxd_pmu,
drivers/dma/idxd/perfmon.c
96
struct idxd_device *idxd = idxd_pmu->idxd;
drivers/dma/idxd/perfmon.h
19
static inline struct idxd_pmu *event_to_pmu(struct perf_event *event)
drivers/dma/idxd/perfmon.h
21
struct idxd_pmu *idxd_pmu;
drivers/dma/idxd/perfmon.h
25
idxd_pmu = container_of(pmu, struct idxd_pmu, pmu);
drivers/dma/idxd/perfmon.h
27
return idxd_pmu;
drivers/dma/idxd/perfmon.h
32
struct idxd_pmu *idxd_pmu;
drivers/dma/idxd/perfmon.h
36
idxd_pmu = container_of(pmu, struct idxd_pmu, pmu);
drivers/dma/idxd/perfmon.h
38
return idxd_pmu->idxd;
drivers/dma/idxd/perfmon.h
43
struct idxd_pmu *idxd_pmu;
drivers/dma/idxd/perfmon.h
45
idxd_pmu = container_of(pmu, struct idxd_pmu, pmu);
drivers/dma/idxd/perfmon.h
47
return idxd_pmu->idxd;