diff options
-rw-r--r-- | arch/x86/kernel/amd_iommu.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 5e5279899994..4a54366d422d 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
@@ -2140,21 +2140,9 @@ static phys_addr_t amd_iommu_iova_to_phys(struct iommu_domain *dom, | |||
2140 | phys_addr_t paddr; | 2140 | phys_addr_t paddr; |
2141 | u64 *pte; | 2141 | u64 *pte; |
2142 | 2142 | ||
2143 | pte = &domain->pt_root[IOMMU_PTE_L2_INDEX(iova)]; | 2143 | pte = fetch_pte(domain, iova); |
2144 | 2144 | ||
2145 | if (!IOMMU_PTE_PRESENT(*pte)) | 2145 | if (!pte || !IOMMU_PTE_PRESENT(*pte)) |
2146 | return 0; | ||
2147 | |||
2148 | pte = IOMMU_PTE_PAGE(*pte); | ||
2149 | pte = &pte[IOMMU_PTE_L1_INDEX(iova)]; | ||
2150 | |||
2151 | if (!IOMMU_PTE_PRESENT(*pte)) | ||
2152 | return 0; | ||
2153 | |||
2154 | pte = IOMMU_PTE_PAGE(*pte); | ||
2155 | pte = &pte[IOMMU_PTE_L0_INDEX(iova)]; | ||
2156 | |||
2157 | if (!IOMMU_PTE_PRESENT(*pte)) | ||
2158 | return 0; | 2146 | return 0; |
2159 | 2147 | ||
2160 | paddr = *pte & IOMMU_PAGE_MASK; | 2148 | paddr = *pte & IOMMU_PAGE_MASK; |