From 859447ab7b281bcdb6011aae990077abb8800ecf Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 17 Jul 2020 17:49:29 +0200 Subject: [PATCH] VT-d: use clear_page() in alloc_pgtable_maddr() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit For full pages this is (meant to be) more efficient. Also change the type and reduce the scope of the involved local variable. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monné Reviewed-by: Kevin Tian --- xen/drivers/passthrough/vtd/iommu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index ef2fea0a0e..01dc444771 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -199,7 +199,6 @@ static void sync_cache(const void *addr, unsigned int size) uint64_t alloc_pgtable_maddr(unsigned long npages, nodeid_t node) { struct page_info *pg, *cur_pg; - u64 *vaddr; unsigned int i; pg = alloc_domheap_pages(NULL, get_order_from_pages(npages), @@ -210,8 +209,9 @@ uint64_t alloc_pgtable_maddr(unsigned long npages, nodeid_t node) cur_pg = pg; for ( i = 0; i < npages; i++ ) { - vaddr = __map_domain_page(cur_pg); - memset(vaddr, 0, PAGE_SIZE); + void *vaddr = __map_domain_page(cur_pg); + + clear_page(vaddr); if ( (iommu_ops.init ? &iommu_ops : &vtd_ops)->sync_cache ) sync_cache(vaddr, PAGE_SIZE); -- 2.39.5