iommu/amd: Clear memory encryption mask from physical address
[linux-2.6-microblaze.git] / drivers / iommu / amd_iommu.c
index 4e04fff..bee0dfb 100644 (file)
@@ -246,7 +246,13 @@ static u16 get_alias(struct device *dev)
 
        /* The callers make sure that get_device_id() does not fail here */
        devid = get_device_id(dev);
+
+       /* For ACPI HID devices, we simply return the devid as such */
+       if (!dev_is_pci(dev))
+               return devid;
+
        ivrs_alias = amd_iommu_alias_table[devid];
+
        pci_for_each_dma_alias(pdev, __last_alias, &pci_alias);
 
        if (ivrs_alias == pci_alias)
@@ -3063,7 +3069,7 @@ static phys_addr_t amd_iommu_iova_to_phys(struct iommu_domain *dom,
                return 0;
 
        offset_mask = pte_pgsize - 1;
-       __pte       = *pte & PM_ADDR_MASK;
+       __pte       = __sme_clr(*pte & PM_ADDR_MASK);
 
        return (__pte & ~offset_mask) | (iova & offset_mask);
 }