Lines Matching defs:iommu

10 #include "iommu.h"
346 struct intel_iommu *iommu = iommu_pmu->iommu;
375 ecmd_submit_sync(iommu, DMA_ECMD_ENABLE, hwc->idx, 0);
383 struct intel_iommu *iommu = iommu_pmu->iommu;
387 ecmd_submit_sync(iommu, DMA_ECMD_DISABLE, hwc->idx, 0);
495 struct intel_iommu *iommu = iommu_pmu->iommu;
497 ecmd_submit_sync(iommu, DMA_ECMD_UNFREEZE, 0, 0);
503 struct intel_iommu *iommu = iommu_pmu->iommu;
505 ecmd_submit_sync(iommu, DMA_ECMD_FREEZE, 0, 0);
538 struct intel_iommu *iommu = dev_id;
540 if (!dmar_readl(iommu->reg + DMAR_PERFINTRSTS_REG))
543 iommu_pmu_counter_overflow(iommu->pmu);
546 dmar_writel(iommu->reg + DMAR_PERFINTRSTS_REG, DMA_PERFINTRSTS_PIS);
551 static int __iommu_pmu_register(struct intel_iommu *iommu)
553 struct iommu_pmu *iommu_pmu = iommu->pmu;
555 iommu_pmu->pmu.name = iommu->name;
574 get_perf_reg_address(struct intel_iommu *iommu, u32 offset)
576 u32 off = dmar_readl(iommu->reg + offset);
578 return iommu->reg + off;
581 int alloc_iommu_pmu(struct intel_iommu *iommu)
588 if (!ecap_pms(iommu->ecap))
592 if (!cap_ecmds(iommu->cap))
595 perfcap = dmar_readq(iommu->reg + DMAR_PERFCAP_REG);
609 if (!ecmd_has_pmu_essential(iommu))
638 pcap = dmar_readq(iommu->reg + DMAR_PERFEVNTCAP_REG +
662 iommu_pmu->cfg_reg = get_perf_reg_address(iommu, DMAR_PERFCFGOFF_REG);
663 iommu_pmu->cntr_reg = get_perf_reg_address(iommu, DMAR_PERFCNTROFF_REG);
664 iommu_pmu->overflow = get_perf_reg_address(iommu, DMAR_PERFOVFOFF_REG);
708 iommu_pmu->iommu = iommu;
709 iommu->pmu = iommu_pmu;
725 void free_iommu_pmu(struct intel_iommu *iommu)
727 struct iommu_pmu *iommu_pmu = iommu->pmu;
741 iommu->pmu = NULL;
744 static int iommu_pmu_set_interrupt(struct intel_iommu *iommu)
746 struct iommu_pmu *iommu_pmu = iommu->pmu;
749 irq = dmar_alloc_hwirq(IOMMU_IRQ_ID_OFFSET_PERF + iommu->seq_id, iommu->node, iommu);
753 snprintf(iommu_pmu->irq_name, sizeof(iommu_pmu->irq_name), "dmar%d-perf", iommu->seq_id);
755 iommu->perf_irq = irq;
757 IRQF_ONESHOT, iommu_pmu->irq_name, iommu);
760 iommu->perf_irq = 0;
766 static void iommu_pmu_unset_interrupt(struct intel_iommu *iommu)
768 if (!iommu->perf_irq)
771 free_irq(iommu->perf_irq, iommu);
772 dmar_free_hwirq(iommu->perf_irq);
773 iommu->perf_irq = 0;
830 "driver/iommu/intel/perfmon:online",
859 void iommu_pmu_register(struct intel_iommu *iommu)
861 struct iommu_pmu *iommu_pmu = iommu->pmu;
866 if (__iommu_pmu_register(iommu))
873 if (iommu_pmu_set_interrupt(iommu))
883 pr_err("Failed to register PMU for iommu (seq_id = %d)\n", iommu->seq_id);
884 free_iommu_pmu(iommu);
887 void iommu_pmu_unregister(struct intel_iommu *iommu)
889 struct iommu_pmu *iommu_pmu = iommu->pmu;
894 iommu_pmu_unset_interrupt(iommu);