|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] amd iommu: remove unnecessary map/unmap for l1 page tables
# HG changeset patch
# User Wei Wang <wei.wang2@xxxxxxx>
# Date 1347364992 -7200
# Node ID 90533f3b6babfda56edbbefda47c46b391204132
# Parent ae59ecd8a52f3016ef5444446bfd77b780dafc87
amd iommu: remove unnecessary map/unmap for l1 page tables
Signed-off-by: Wei Wang <wei.wang2@xxxxxxx>
Committed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
diff -r ae59ecd8a52f -r 90533f3b6bab xen/drivers/passthrough/amd/pci_amd_iommu.c
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c Tue Sep 11 14:01:52
2012 +0200
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c Tue Sep 11 14:03:12
2012 +0200
@@ -395,25 +395,27 @@ static void deallocate_next_page_table(s
u64 next_table_maddr;
int index, next_level;
+ if ( level <= 1 )
+ {
+ free_amd_iommu_pgtable(pg);
+ return;
+ }
+
table_vaddr = __map_domain_page(pg);
- if ( level > 1 )
+ for ( index = 0; index < PTE_PER_TABLE_SIZE; index++ )
{
- for ( index = 0; index < PTE_PER_TABLE_SIZE; index++ )
+ pde = table_vaddr + (index * IOMMU_PAGE_TABLE_ENTRY_SIZE);
+ next_table_maddr = amd_iommu_get_next_table_from_pte(pde);
+ next_level = iommu_next_level((u32*)pde);
+
+ if ( (next_table_maddr != 0) && (next_level != 0) &&
+ iommu_is_pte_present((u32*)pde) )
{
- pde = table_vaddr + (index * IOMMU_PAGE_TABLE_ENTRY_SIZE);
- next_table_maddr = amd_iommu_get_next_table_from_pte(pde);
-
- next_level = iommu_next_level((u32*)pde);
-
- if ( (next_table_maddr != 0) && (next_level != 0)
- && iommu_is_pte_present((u32*)pde) )
- {
- /* We do not support skip level yet */
- ASSERT(next_level == level - 1);
- deallocate_next_page_table(
- maddr_to_page(next_table_maddr), next_level);
- }
+ /* We do not support skip levels yet */
+ ASSERT(next_level == level - 1);
+ deallocate_next_page_table(maddr_to_page(next_table_maddr),
+ next_level);
}
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |