>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

Attachment: 0001-Fix-iommu-map-page-for-mmio-pages.patch
Description: 0001-Fix-iommu-map-page-for-mmio-pages.patch

Reply via email to