aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm
diff options
context:
space:
mode:
authorAlex Williamson <alex.williamson@redhat.com>2013-01-24 17:04:09 -0500
committerGleb Natapov <gleb@redhat.com>2013-01-27 05:41:41 -0500
commitd47510e295c0f82699192a61d715351cf00f65de (patch)
tree77b842f1e1f04ac4650fc54e6a267747b30d2bd8 /virt/kvm
parent261874b0d5ebe2a5ccc544df7170d6559635e79a (diff)
kvm: Obey read-only mappings in iommu
We've been ignoring read-only mappings and programming everything into the iommu as read-write. Fix this to only include the write access flag when read-only is not set. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Gleb Natapov <gleb@redhat.com>
Diffstat (limited to 'virt/kvm')
-rw-r--r--virt/kvm/iommu.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
index 4a340cb23013..72a130bc448a 100644
--- a/virt/kvm/iommu.c
+++ b/virt/kvm/iommu.c
@@ -76,7 +76,9 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
76 gfn = slot->base_gfn; 76 gfn = slot->base_gfn;
77 end_gfn = gfn + slot->npages; 77 end_gfn = gfn + slot->npages;
78 78
79 flags = IOMMU_READ | IOMMU_WRITE; 79 flags = IOMMU_READ;
80 if (!(slot->flags & KVM_MEM_READONLY))
81 flags |= IOMMU_WRITE;
80 if (kvm->arch.iommu_flags & KVM_IOMMU_CACHE_COHERENCY) 82 if (kvm->arch.iommu_flags & KVM_IOMMU_CACHE_COHERENCY)
81 flags |= IOMMU_CACHE; 83 flags |= IOMMU_CACHE;
82 84