mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
iommu/amd: Update sanity check when enable PRI/ATS for IOMMU v1 table
Currently, PPR/ATS can be enabled only if the domain is type identity mapping. However, when allowing the IOMMU v2 page table to be used for DMA-API, the check is no longer valid. Update the sanity check to only apply for when using AMD_IOMMU_V1 page table mode. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com> Link: https://lore.kernel.org/r/20220825063939.8360-6-vasant.hegde@amd.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
43312b710b
commit
be1af02b27
@ -1694,7 +1694,7 @@ static void pdev_iommuv2_disable(struct pci_dev *pdev)
|
||||
pci_disable_pasid(pdev);
|
||||
}
|
||||
|
||||
static int pdev_iommuv2_enable(struct pci_dev *pdev)
|
||||
static int pdev_pri_ats_enable(struct pci_dev *pdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1757,11 +1757,19 @@ static int attach_device(struct device *dev,
|
||||
struct iommu_domain *def_domain = iommu_get_dma_domain(dev);
|
||||
|
||||
ret = -EINVAL;
|
||||
if (def_domain->type != IOMMU_DOMAIN_IDENTITY)
|
||||
|
||||
/*
|
||||
* In case of using AMD_IOMMU_V1 page table mode and the device
|
||||
* is enabling for PPR/ATS support (using v2 table),
|
||||
* we need to make sure that the domain type is identity map.
|
||||
*/
|
||||
if ((amd_iommu_pgtable == AMD_IOMMU_V1) &&
|
||||
def_domain->type != IOMMU_DOMAIN_IDENTITY) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dev_data->iommu_v2) {
|
||||
if (pdev_iommuv2_enable(pdev) != 0)
|
||||
if (pdev_pri_ats_enable(pdev) != 0)
|
||||
goto out;
|
||||
|
||||
dev_data->ats.enabled = true;
|
||||
|
Loading…
Reference in New Issue
Block a user