dsu_pmu 127 drivers/perf/arm_dsu_pmu.c static inline struct dsu_pmu *to_dsu_pmu(struct pmu *pmu) dsu_pmu 129 drivers/perf/arm_dsu_pmu.c return container_of(pmu, struct dsu_pmu, pmu); dsu_pmu 156 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu); dsu_pmu 164 drivers/perf/arm_dsu_pmu.c cpumask = &dsu_pmu->active_cpu; dsu_pmu 167 drivers/perf/arm_dsu_pmu.c cpumask = &dsu_pmu->associated_cpus; dsu_pmu 202 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu); dsu_pmu 207 drivers/perf/arm_dsu_pmu.c return test_bit(evt, dsu_pmu->cpmceid_bitmap) ? attr->mode : 0; dsu_pmu 233 drivers/perf/arm_dsu_pmu.c static int dsu_pmu_get_online_cpu_any_but(struct dsu_pmu *dsu_pmu, int cpu) dsu_pmu 238 drivers/perf/arm_dsu_pmu.c &dsu_pmu->associated_cpus, cpu_online_mask); dsu_pmu 242 drivers/perf/arm_dsu_pmu.c static inline bool dsu_pmu_counter_valid(struct dsu_pmu *dsu_pmu, u32 idx) dsu_pmu 244 drivers/perf/arm_dsu_pmu.c return (idx < dsu_pmu->num_counters) || dsu_pmu 252 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 256 drivers/perf/arm_dsu_pmu.c &dsu_pmu->associated_cpus))) dsu_pmu 259 drivers/perf/arm_dsu_pmu.c if (!dsu_pmu_counter_valid(dsu_pmu, idx)) { dsu_pmu 265 drivers/perf/arm_dsu_pmu.c raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags); dsu_pmu 270 drivers/perf/arm_dsu_pmu.c raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags); dsu_pmu 278 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 282 drivers/perf/arm_dsu_pmu.c &dsu_pmu->associated_cpus))) dsu_pmu 285 drivers/perf/arm_dsu_pmu.c if (!dsu_pmu_counter_valid(dsu_pmu, idx)) { dsu_pmu 291 drivers/perf/arm_dsu_pmu.c raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags); dsu_pmu 296 drivers/perf/arm_dsu_pmu.c raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags); dsu_pmu 304 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 313 drivers/perf/arm_dsu_pmu.c idx = find_first_zero_bit(used_mask, dsu_pmu->num_counters); dsu_pmu 314 drivers/perf/arm_dsu_pmu.c if (idx >= dsu_pmu->num_counters) dsu_pmu 320 drivers/perf/arm_dsu_pmu.c static void dsu_pmu_enable_counter(struct dsu_pmu *dsu_pmu, int idx) dsu_pmu 326 drivers/perf/arm_dsu_pmu.c static void dsu_pmu_disable_counter(struct dsu_pmu *dsu_pmu, int idx) dsu_pmu 332 drivers/perf/arm_dsu_pmu.c static inline void dsu_pmu_set_event(struct dsu_pmu *dsu_pmu, dsu_pmu 338 drivers/perf/arm_dsu_pmu.c if (!dsu_pmu_counter_valid(dsu_pmu, idx)) { dsu_pmu 344 drivers/perf/arm_dsu_pmu.c raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags); dsu_pmu 346 drivers/perf/arm_dsu_pmu.c raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags); dsu_pmu 394 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = dev; dsu_pmu 395 drivers/perf/arm_dsu_pmu.c struct dsu_hw_events *hw_events = &dsu_pmu->hw_events; dsu_pmu 417 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 424 drivers/perf/arm_dsu_pmu.c dsu_pmu_set_event(dsu_pmu, event); dsu_pmu 426 drivers/perf/arm_dsu_pmu.c dsu_pmu_enable_counter(dsu_pmu, event->hw.idx); dsu_pmu 431 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 435 drivers/perf/arm_dsu_pmu.c dsu_pmu_disable_counter(dsu_pmu, event->hw.idx); dsu_pmu 442 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 443 drivers/perf/arm_dsu_pmu.c struct dsu_hw_events *hw_events = &dsu_pmu->hw_events; dsu_pmu 448 drivers/perf/arm_dsu_pmu.c &dsu_pmu->associated_cpus))) dsu_pmu 468 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 469 drivers/perf/arm_dsu_pmu.c struct dsu_hw_events *hw_events = &dsu_pmu->hw_events; dsu_pmu 483 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu); dsu_pmu 486 drivers/perf/arm_dsu_pmu.c if (bitmap_empty(dsu_pmu->hw_events.used_mask, DSU_PMU_MAX_HW_CNTRS)) dsu_pmu 489 drivers/perf/arm_dsu_pmu.c raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags); dsu_pmu 493 drivers/perf/arm_dsu_pmu.c raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags); dsu_pmu 500 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(pmu); dsu_pmu 502 drivers/perf/arm_dsu_pmu.c raw_spin_lock_irqsave(&dsu_pmu->pmu_lock, flags); dsu_pmu 506 drivers/perf/arm_dsu_pmu.c raw_spin_unlock_irqrestore(&dsu_pmu->pmu_lock, flags); dsu_pmu 545 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = to_dsu_pmu(event->pmu); dsu_pmu 552 drivers/perf/arm_dsu_pmu.c dev_dbg(dsu_pmu->pmu.dev, "Can't support sampling events\n"); dsu_pmu 558 drivers/perf/arm_dsu_pmu.c dev_dbg(dsu_pmu->pmu.dev, "Can't support per-task counters\n"); dsu_pmu 563 drivers/perf/arm_dsu_pmu.c dev_dbg(dsu_pmu->pmu.dev, "Can't support filtering\n"); dsu_pmu 567 drivers/perf/arm_dsu_pmu.c if (!cpumask_test_cpu(event->cpu, &dsu_pmu->associated_cpus)) { dsu_pmu 568 drivers/perf/arm_dsu_pmu.c dev_dbg(dsu_pmu->pmu.dev, dsu_pmu 578 drivers/perf/arm_dsu_pmu.c event->cpu = cpumask_first(&dsu_pmu->active_cpu); dsu_pmu 588 drivers/perf/arm_dsu_pmu.c static struct dsu_pmu *dsu_pmu_alloc(struct platform_device *pdev) dsu_pmu 590 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu; dsu_pmu 592 drivers/perf/arm_dsu_pmu.c dsu_pmu = devm_kzalloc(&pdev->dev, sizeof(*dsu_pmu), GFP_KERNEL); dsu_pmu 593 drivers/perf/arm_dsu_pmu.c if (!dsu_pmu) dsu_pmu 596 drivers/perf/arm_dsu_pmu.c raw_spin_lock_init(&dsu_pmu->pmu_lock); dsu_pmu 601 drivers/perf/arm_dsu_pmu.c dsu_pmu->num_counters = -1; dsu_pmu 602 drivers/perf/arm_dsu_pmu.c return dsu_pmu; dsu_pmu 637 drivers/perf/arm_dsu_pmu.c static void dsu_pmu_probe_pmu(struct dsu_pmu *dsu_pmu) dsu_pmu 647 drivers/perf/arm_dsu_pmu.c dsu_pmu->num_counters = num_counters; dsu_pmu 648 drivers/perf/arm_dsu_pmu.c if (!dsu_pmu->num_counters) dsu_pmu 652 drivers/perf/arm_dsu_pmu.c bitmap_from_arr32(dsu_pmu->cpmceid_bitmap, cpmceid, dsu_pmu 656 drivers/perf/arm_dsu_pmu.c static void dsu_pmu_set_active_cpu(int cpu, struct dsu_pmu *dsu_pmu) dsu_pmu 658 drivers/perf/arm_dsu_pmu.c cpumask_set_cpu(cpu, &dsu_pmu->active_cpu); dsu_pmu 659 drivers/perf/arm_dsu_pmu.c if (irq_set_affinity_hint(dsu_pmu->irq, &dsu_pmu->active_cpu)) dsu_pmu 667 drivers/perf/arm_dsu_pmu.c static void dsu_pmu_init_pmu(struct dsu_pmu *dsu_pmu) dsu_pmu 669 drivers/perf/arm_dsu_pmu.c if (dsu_pmu->num_counters == -1) dsu_pmu 670 drivers/perf/arm_dsu_pmu.c dsu_pmu_probe_pmu(dsu_pmu); dsu_pmu 678 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu; dsu_pmu 682 drivers/perf/arm_dsu_pmu.c dsu_pmu = dsu_pmu_alloc(pdev); dsu_pmu 683 drivers/perf/arm_dsu_pmu.c if (IS_ERR(dsu_pmu)) dsu_pmu 684 drivers/perf/arm_dsu_pmu.c return PTR_ERR(dsu_pmu); dsu_pmu 686 drivers/perf/arm_dsu_pmu.c rc = dsu_pmu_dt_get_cpus(pdev->dev.of_node, &dsu_pmu->associated_cpus); dsu_pmu 703 drivers/perf/arm_dsu_pmu.c IRQF_NOBALANCING, name, dsu_pmu); dsu_pmu 709 drivers/perf/arm_dsu_pmu.c dsu_pmu->irq = irq; dsu_pmu 710 drivers/perf/arm_dsu_pmu.c platform_set_drvdata(pdev, dsu_pmu); dsu_pmu 712 drivers/perf/arm_dsu_pmu.c &dsu_pmu->cpuhp_node); dsu_pmu 716 drivers/perf/arm_dsu_pmu.c dsu_pmu->pmu = (struct pmu) { dsu_pmu 732 drivers/perf/arm_dsu_pmu.c rc = perf_pmu_register(&dsu_pmu->pmu, name, -1); dsu_pmu 735 drivers/perf/arm_dsu_pmu.c &dsu_pmu->cpuhp_node); dsu_pmu 736 drivers/perf/arm_dsu_pmu.c irq_set_affinity_hint(dsu_pmu->irq, NULL); dsu_pmu 744 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = platform_get_drvdata(pdev); dsu_pmu 746 drivers/perf/arm_dsu_pmu.c perf_pmu_unregister(&dsu_pmu->pmu); dsu_pmu 747 drivers/perf/arm_dsu_pmu.c cpuhp_state_remove_instance(dsu_pmu_cpuhp_state, &dsu_pmu->cpuhp_node); dsu_pmu 748 drivers/perf/arm_dsu_pmu.c irq_set_affinity_hint(dsu_pmu->irq, NULL); dsu_pmu 769 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = hlist_entry_safe(node, struct dsu_pmu, dsu_pmu 772 drivers/perf/arm_dsu_pmu.c if (!cpumask_test_cpu(cpu, &dsu_pmu->associated_cpus)) dsu_pmu 776 drivers/perf/arm_dsu_pmu.c if (!cpumask_empty(&dsu_pmu->active_cpu)) dsu_pmu 779 drivers/perf/arm_dsu_pmu.c dsu_pmu_init_pmu(dsu_pmu); dsu_pmu 780 drivers/perf/arm_dsu_pmu.c dsu_pmu_set_active_cpu(cpu, dsu_pmu); dsu_pmu 788 drivers/perf/arm_dsu_pmu.c struct dsu_pmu *dsu_pmu = hlist_entry_safe(node, struct dsu_pmu, dsu_pmu 791 drivers/perf/arm_dsu_pmu.c if (!cpumask_test_and_clear_cpu(cpu, &dsu_pmu->active_cpu)) dsu_pmu 794 drivers/perf/arm_dsu_pmu.c dst = dsu_pmu_get_online_cpu_any_but(dsu_pmu, cpu); dsu_pmu 797 drivers/perf/arm_dsu_pmu.c irq_set_affinity_hint(dsu_pmu->irq, NULL); dsu_pmu 801 drivers/perf/arm_dsu_pmu.c perf_pmu_migrate_context(&dsu_pmu->pmu, cpu, dst); dsu_pmu 802 drivers/perf/arm_dsu_pmu.c dsu_pmu_set_active_cpu(dst, dsu_pmu);