diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2013-01-24 17:04:09 -0500 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-01-27 05:41:41 -0500 |
commit | d47510e295c0f82699192a61d715351cf00f65de (patch) | |
tree | 77b842f1e1f04ac4650fc54e6a267747b30d2bd8 /virt | |
parent | 261874b0d5ebe2a5ccc544df7170d6559635e79a (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')
-rw-r--r-- | virt/kvm/iommu.c | 4 |
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 | ||