mirror of https://gitee.com/openkylin/linux.git
iommu/arm-smmu-v3: Use pci_ats_supported()
The new pci_ats_supported() function checks if a device supports ATS and is allowed to use it. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Acked-by: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20200520152201.3309416-4-jean-philippe@linaro.org Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
7a441b2110
commit
0b2527a654
|
@ -2652,26 +2652,20 @@ static void arm_smmu_install_ste_for_dev(struct arm_smmu_master *master)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI_ATS
|
||||
static bool arm_smmu_ats_supported(struct arm_smmu_master *master)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
struct device *dev = master->dev;
|
||||
struct arm_smmu_device *smmu = master->smmu;
|
||||
struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(master->dev);
|
||||
struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
|
||||
|
||||
if (!(smmu->features & ARM_SMMU_FEAT_ATS) || !dev_is_pci(master->dev) ||
|
||||
!(fwspec->flags & IOMMU_FWSPEC_PCI_RC_ATS) || pci_ats_disabled())
|
||||
if (!(smmu->features & ARM_SMMU_FEAT_ATS))
|
||||
return false;
|
||||
|
||||
pdev = to_pci_dev(master->dev);
|
||||
return !pdev->untrusted && pdev->ats_cap;
|
||||
if (!(fwspec->flags & IOMMU_FWSPEC_PCI_RC_ATS))
|
||||
return false;
|
||||
|
||||
return dev_is_pci(dev) && pci_ats_supported(to_pci_dev(dev));
|
||||
}
|
||||
#else
|
||||
static bool arm_smmu_ats_supported(struct arm_smmu_master *master)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void arm_smmu_enable_ats(struct arm_smmu_master *master)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue