>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
