Lines Matching refs:perf_iommu
183 static int clear_avail_iommu_bnk_cntr(struct perf_amd_iommu *perf_iommu, in clear_avail_iommu_bnk_cntr() argument
190 max_banks = perf_iommu->max_banks; in clear_avail_iommu_bnk_cntr()
191 max_cntrs = perf_iommu->max_counters; in clear_avail_iommu_bnk_cntr()
198 raw_spin_lock_irqsave(&perf_iommu->lock, flags); in clear_avail_iommu_bnk_cntr()
199 perf_iommu->cntr_assign_mask &= ~(1ULL<<shift); in clear_avail_iommu_bnk_cntr()
200 raw_spin_unlock_irqrestore(&perf_iommu->lock, flags); in clear_avail_iommu_bnk_cntr()
367 struct perf_amd_iommu *perf_iommu = in perf_iommu_del() local
373 clear_avail_iommu_bnk_cntr(perf_iommu, in perf_iommu_del()
419 struct perf_amd_iommu *perf_iommu; in init_one_iommu() local
422 perf_iommu = kzalloc(sizeof(struct perf_amd_iommu), GFP_KERNEL); in init_one_iommu()
423 if (!perf_iommu) in init_one_iommu()
426 raw_spin_lock_init(&perf_iommu->lock); in init_one_iommu()
428 perf_iommu->pmu = iommu_pmu; in init_one_iommu()
429 perf_iommu->iommu = get_amd_iommu(idx); in init_one_iommu()
430 perf_iommu->max_banks = amd_iommu_pc_get_max_banks(idx); in init_one_iommu()
431 perf_iommu->max_counters = amd_iommu_pc_get_max_counters(idx); in init_one_iommu()
433 if (!perf_iommu->iommu || in init_one_iommu()
434 !perf_iommu->max_banks || in init_one_iommu()
435 !perf_iommu->max_counters) { in init_one_iommu()
436 kfree(perf_iommu); in init_one_iommu()
440 snprintf(perf_iommu->name, IOMMU_NAME_SIZE, "amd_iommu_%u", idx); in init_one_iommu()
442 ret = perf_pmu_register(&perf_iommu->pmu, perf_iommu->name, -1); in init_one_iommu()
445 idx, perf_iommu->max_banks, perf_iommu->max_counters); in init_one_iommu()
446 list_add_tail(&perf_iommu->list, &perf_amd_iommu_list); in init_one_iommu()
449 kfree(perf_iommu); in init_one_iommu()