amd iommu: Clean up amd_iommu_reserve_domain_unity_map
PATCH 2/3 amd iommu: Clean up amd_iommu_reserve_domain_unity_map
Signed-off-by Wei Wang <[email protected]>
--
Advanced Micro Devices GmbH
Sitz: Dornach, Gemeinde Aschheim, Landkreis München Registergericht München, HRB Nr. 43632
WEEE-Reg-Nr: DE 12919551 Geschäftsführer:
Alberto Bozzo, Andrew Bowd
xen/drivers/passthrough/amd/iommu_map.c +17 -29
@@ -518,38 +518,26 @@ int amd_iommu_unmap_page(struct domain *return 0 ; } -int amd_iommu_reserve_domain_unity_map ( -struct domain *domain, -unsigned long phys_addr, -unsigned long size,int iw,int ir) -{ -u64 iommu_l2e; +int amd_iommu_reserve_domain_unity_map (struct domain *domain, +u64 phys_addr, +unsigned long size,int iw,int ir) +{unsigned long npages, i; -struct hvm_iommu *hd =domain_hvm_iommu (domain); +unsigned long gfn; +unsigned int flags = !!ir; +int rt =0 ; + +if ( iw ) + flags |= IOMMUF_writable; npages =region_to_pages (phys_addr, size); - -spin_lock (&hd->mapping_lock); -for ( i =0 ; i < npages; ++i ) - { - iommu_l2e =iommu_l2e_from_pfn ( - hd->root_table, hd->paging_mode, phys_addr >>PAGE_SHIFT ); - -if ( iommu_l2e ==0 ) - { -spin_unlock (&hd->mapping_lock); -AMD_IOMMU_DEBUG ("Invalid IO pagetable entry phys_addr = %lx\n" , - phys_addr); -domain_crash (domain); -return -EFAULT ; - } - -set_iommu_l1e_present (iommu_l2e, - (phys_addr >>PAGE_SHIFT ), phys_addr, iw, ir); - - phys_addr +=PAGE_SIZE ; - } -spin_unlock (&hd->mapping_lock); + gfn = phys_addr >>PAGE_SHIFT ; +for ( i =0 ; i < npages; i++ ) + { + rt =amd_iommu_map_page (domain, gfn +i, gfn +i, flags); +if ( rt !=0 ) +return rt; + }return 0 ; }
_______________________________________________
Xen-devel mailing list [email protected]
http://lists.xensource.com/xen-devel
Wei Wang2 writes ("[Xen-devel] [PATCH 2/3] amd iommu: Clean up amd_iommu_reserve_domain_unity_map"):
Quoted 1 line
Signed-off-by Wei Wang <[email protected]>
Are these intended for 4.1 ? If so I think they probably need more explanation at the very least ...
Ian.