Symbol: dsu_pmu
drivers/perf/arm_dsu_pmu.c
125
static inline struct dsu_pmu *to_dsu_pmu(struct pmu *pmu)
drivers/perf/arm_dsu_pmu.c
127
return container_of(pmu, struct dsu_pmu, pmu);
drivers/perf/arm_dsu_pmu.c
144
struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu);
drivers/perf/arm_dsu_pmu.c
152
cpumask = &dsu_pmu->active_cpu;
drivers/perf/arm_dsu_pmu.c
155
cpumask = &dsu_pmu->associated_cpus;
drivers/perf/arm_dsu_pmu.c
190
struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu);
drivers/perf/arm_dsu_pmu.c
195
return test_bit(evt, dsu_pmu->cpmceid_bitmap) ? attr->mode : 0;
drivers/perf/arm_dsu_pmu.c
221
static inline bool dsu_pmu_counter_valid(struct dsu_pmu *dsu_pmu, u32 idx)
drivers/perf/arm_dsu_pmu.c
223
return (idx < dsu_pmu->num_counters) ||
drivers/perf/arm_dsu_pmu.c
231
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
235
&dsu_pmu->associated_cpus)))
drivers/perf/arm_dsu_pmu.c
238
if (!dsu_pmu_counter_valid(dsu_pmu, idx)) {
drivers/perf/arm_dsu_pmu.c
244
raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
249
raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
257
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
261
&dsu_pmu->associated_cpus)))
drivers/perf/arm_dsu_pmu.c
264
if (!dsu_pmu_counter_valid(dsu_pmu, idx)) {
drivers/perf/arm_dsu_pmu.c
270
raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
275
raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
283
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
286
if (evtype == DSU_PMU_EVT_CYCLES && dsu_pmu->has_pmccntr) {
drivers/perf/arm_dsu_pmu.c
291
idx = find_first_zero_bit(used_mask, dsu_pmu->num_counters);
drivers/perf/arm_dsu_pmu.c
292
if (idx >= dsu_pmu->num_counters)
drivers/perf/arm_dsu_pmu.c
298
static void dsu_pmu_enable_counter(struct dsu_pmu *dsu_pmu, int idx)
drivers/perf/arm_dsu_pmu.c
304
static void dsu_pmu_disable_counter(struct dsu_pmu *dsu_pmu, int idx)
drivers/perf/arm_dsu_pmu.c
310
static inline void dsu_pmu_set_event(struct dsu_pmu *dsu_pmu,
drivers/perf/arm_dsu_pmu.c
316
if (!dsu_pmu_counter_valid(dsu_pmu, idx)) {
drivers/perf/arm_dsu_pmu.c
322
raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
324
raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
376
struct dsu_pmu *dsu_pmu = dev;
drivers/perf/arm_dsu_pmu.c
377
struct dsu_hw_events *hw_events = &dsu_pmu->hw_events;
drivers/perf/arm_dsu_pmu.c
399
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
406
dsu_pmu_set_event(dsu_pmu, event);
drivers/perf/arm_dsu_pmu.c
408
dsu_pmu_enable_counter(dsu_pmu, event->hw.idx);
drivers/perf/arm_dsu_pmu.c
413
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
417
dsu_pmu_disable_counter(dsu_pmu, event->hw.idx);
drivers/perf/arm_dsu_pmu.c
424
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
425
struct dsu_hw_events *hw_events = &dsu_pmu->hw_events;
drivers/perf/arm_dsu_pmu.c
430
&dsu_pmu->associated_cpus)))
drivers/perf/arm_dsu_pmu.c
450
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
451
struct dsu_hw_events *hw_events = &dsu_pmu->hw_events;
drivers/perf/arm_dsu_pmu.c
465
struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu);
drivers/perf/arm_dsu_pmu.c
468
if (bitmap_empty(dsu_pmu->hw_events.used_mask, DSU_PMU_MAX_HW_CNTRS))
drivers/perf/arm_dsu_pmu.c
471
raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
475
raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
482
struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu);
drivers/perf/arm_dsu_pmu.c
484
raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
488
raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags);
drivers/perf/arm_dsu_pmu.c
527
struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu);
drivers/perf/arm_dsu_pmu.c
534
dev_dbg(dsu_pmu->pmu.dev, "Can't support sampling events\n");
drivers/perf/arm_dsu_pmu.c
540
dev_dbg(dsu_pmu->pmu.dev, "Can't support per-task counters\n");
drivers/perf/arm_dsu_pmu.c
545
dev_dbg(dsu_pmu->pmu.dev, "Can't support filtering\n");
drivers/perf/arm_dsu_pmu.c
549
if (!cpumask_test_cpu(event->cpu, &dsu_pmu->associated_cpus)) {
drivers/perf/arm_dsu_pmu.c
550
dev_dbg(dsu_pmu->pmu.dev,
drivers/perf/arm_dsu_pmu.c
560
event->cpu = cpumask_first(&dsu_pmu->active_cpu);
drivers/perf/arm_dsu_pmu.c
567
event->hw.flags = dsu_pmu->has_32b_pmevcntr;
drivers/perf/arm_dsu_pmu.c
571
static struct dsu_pmu *dsu_pmu_alloc(struct platform_device *pdev)
drivers/perf/arm_dsu_pmu.c
573
struct dsu_pmu *dsu_pmu;
drivers/perf/arm_dsu_pmu.c
575
dsu_pmu = devm_kzalloc(&pdev->dev, sizeof(*dsu_pmu), GFP_KERNEL);
drivers/perf/arm_dsu_pmu.c
576
if (!dsu_pmu)
drivers/perf/arm_dsu_pmu.c
579
raw_spin_lock_init(&dsu_pmu->pmu_lock);
drivers/perf/arm_dsu_pmu.c
584
dsu_pmu->num_counters = -1;
drivers/perf/arm_dsu_pmu.c
585
return dsu_pmu;
drivers/perf/arm_dsu_pmu.c
651
static void dsu_pmu_probe_pmu(struct dsu_pmu *dsu_pmu)
drivers/perf/arm_dsu_pmu.c
661
dsu_pmu->num_counters = num_counters;
drivers/perf/arm_dsu_pmu.c
662
if (!dsu_pmu->num_counters)
drivers/perf/arm_dsu_pmu.c
666
bitmap_from_arr32(dsu_pmu->cpmceid_bitmap, cpmceid,
drivers/perf/arm_dsu_pmu.c
671
dsu_pmu->has_32b_pmevcntr = true;
drivers/perf/arm_dsu_pmu.c
675
dsu_pmu->has_pmccntr = true;
drivers/perf/arm_dsu_pmu.c
678
static void dsu_pmu_set_active_cpu(int cpu, struct dsu_pmu *dsu_pmu)
drivers/perf/arm_dsu_pmu.c
680
cpumask_set_cpu(cpu, &dsu_pmu->active_cpu);
drivers/perf/arm_dsu_pmu.c
681
if (irq_set_affinity(dsu_pmu->irq, &dsu_pmu->active_cpu))
drivers/perf/arm_dsu_pmu.c
689
static void dsu_pmu_init_pmu(struct dsu_pmu *dsu_pmu)
drivers/perf/arm_dsu_pmu.c
691
if (dsu_pmu->num_counters == -1)
drivers/perf/arm_dsu_pmu.c
692
dsu_pmu_probe_pmu(dsu_pmu);
drivers/perf/arm_dsu_pmu.c
700
struct dsu_pmu *dsu_pmu;
drivers/perf/arm_dsu_pmu.c
705
dsu_pmu = dsu_pmu_alloc(pdev);
drivers/perf/arm_dsu_pmu.c
706
if (IS_ERR(dsu_pmu))
drivers/perf/arm_dsu_pmu.c
707
return PTR_ERR(dsu_pmu);
drivers/perf/arm_dsu_pmu.c
710
rc = dsu_pmu_dt_get_cpus(&pdev->dev, &dsu_pmu->associated_cpus);
drivers/perf/arm_dsu_pmu.c
712
rc = dsu_pmu_acpi_get_cpus(&pdev->dev, &dsu_pmu->associated_cpus);
drivers/perf/arm_dsu_pmu.c
730
IRQF_NOBALANCING, name, dsu_pmu);
drivers/perf/arm_dsu_pmu.c
736
dsu_pmu->irq = irq;
drivers/perf/arm_dsu_pmu.c
737
platform_set_drvdata(pdev, dsu_pmu);
drivers/perf/arm_dsu_pmu.c
739
&dsu_pmu->cpuhp_node);
drivers/perf/arm_dsu_pmu.c
743
dsu_pmu->pmu = (struct pmu) {
drivers/perf/arm_dsu_pmu.c
760
rc = perf_pmu_register(&dsu_pmu->pmu, name, -1);
drivers/perf/arm_dsu_pmu.c
763
&dsu_pmu->cpuhp_node);
drivers/perf/arm_dsu_pmu.c
771
struct dsu_pmu *dsu_pmu = platform_get_drvdata(pdev);
drivers/perf/arm_dsu_pmu.c
773
perf_pmu_unregister(&dsu_pmu->pmu);
drivers/perf/arm_dsu_pmu.c
774
cpuhp_state_remove_instance(dsu_pmu_cpuhp_state, &dsu_pmu->cpuhp_node);
drivers/perf/arm_dsu_pmu.c
804
struct dsu_pmu *dsu_pmu = hlist_entry_safe(node, struct dsu_pmu,
drivers/perf/arm_dsu_pmu.c
807
if (!cpumask_test_cpu(cpu, &dsu_pmu->associated_cpus))
drivers/perf/arm_dsu_pmu.c
811
if (!cpumask_empty(&dsu_pmu->active_cpu))
drivers/perf/arm_dsu_pmu.c
814
dsu_pmu_init_pmu(dsu_pmu);
drivers/perf/arm_dsu_pmu.c
815
dsu_pmu_set_active_cpu(cpu, dsu_pmu);
drivers/perf/arm_dsu_pmu.c
822
struct dsu_pmu *dsu_pmu;
drivers/perf/arm_dsu_pmu.c
825
dsu_pmu = hlist_entry_safe(node, struct dsu_pmu, cpuhp_node);
drivers/perf/arm_dsu_pmu.c
827
if (!cpumask_test_and_clear_cpu(cpu, &dsu_pmu->active_cpu))
drivers/perf/arm_dsu_pmu.c
830
dst = cpumask_any_and_but(&dsu_pmu->associated_cpus,
drivers/perf/arm_dsu_pmu.c
836
perf_pmu_migrate_context(&dsu_pmu->pmu, cpu, dst);
drivers/perf/arm_dsu_pmu.c
837
dsu_pmu_set_active_cpu(dst, dsu_pmu);