>From 9d8e927a937ff7c9fa2bcc3aa5359e73990658f0 Mon Sep 17 00:00:00 2001 From: Weidong Han <[EMAIL PROTECTED]> Date: Fri, 19 Sep 2008 14:04:52 +0800 Subject: [PATCH] Fix iommu map page for mmio pages
Don't need to map mmio pages for iommu. When find mmio pages in kvm_iommu_map_pages(), don't map them, and shouldn't return error due to it's not an error. If return error (such as -EINVAL), device assigment will fail. Signed-off-by: Weidong Han <[EMAIL PROTECTED]> --- arch/x86/kvm/vtd.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/vtd.c b/arch/x86/kvm/vtd.c index 667bf3f..b00cdbd 100644 --- a/arch/x86/kvm/vtd.c +++ b/arch/x86/kvm/vtd.c @@ -36,14 +36,13 @@ int kvm_iommu_map_pages(struct kvm *kvm, { gfn_t gfn = base_gfn; pfn_t pfn; - int i, r; + int i, r = 0; struct dmar_domain *domain = kvm->arch.intel_iommu_domain; /* check if iommu exists and in use */ if (!domain) return 0; - r = -EINVAL; for (i = 0; i < npages; i++) { /* check if already mapped */ pfn = (pfn_t)intel_iommu_iova_to_pfn(domain, @@ -60,13 +59,14 @@ int kvm_iommu_map_pages(struct kvm *kvm, DMA_PTE_READ | DMA_PTE_WRITE); if (r) { - printk(KERN_DEBUG "kvm_iommu_map_pages:" + printk(KERN_ERR "kvm_iommu_map_pages:" "iommu failed to map pfn=%lx\n", pfn); goto unmap_pages; } } else { - printk(KERN_DEBUG "kvm_iommu_map_page:" - "invalid pfn=%lx\n", pfn); + printk(KERN_DEBUG "kvm_iommu_map_pages:" + "invalid pfn=%lx, iommu needn't map " + "MMIO pages!\n", pfn); goto unmap_pages; } gfn++; -- 1.5.1
0001-Fix-iommu-map-page-for-mmio-pages.patch
Description: 0001-Fix-iommu-map-page-for-mmio-pages.patch