aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>2012-08-03 03:37:54 -0400
committerAvi Kivity <avi@redhat.com>2012-08-06 09:04:50 -0400
commit6c8ee57be9350c5c2cafdd6a99d0462d528676e2 (patch)
treeb2ce398a6613895bc94b975ab00f787baf830b2d
parent16b854c889673d988285719bc020543a730f9ac6 (diff)
KVM: introduce KVM_PFN_ERR_FAULT
After that, the exported and un-inline function, get_fault_pfn, can be removed Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r--arch/x86/kvm/mmu.c2
-rw-r--r--include/linux/kvm_host.h3
-rw-r--r--virt/kvm/kvm_main.c12
3 files changed, 6 insertions, 11 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index aa9a987ddefb..9cf90c8d5843 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2512,7 +2512,7 @@ static pfn_t pte_prefetch_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn,
2512 2512
2513 slot = gfn_to_memslot_dirty_bitmap(vcpu, gfn, no_dirty_log); 2513 slot = gfn_to_memslot_dirty_bitmap(vcpu, gfn, no_dirty_log);
2514 if (!slot) 2514 if (!slot)
2515 return get_fault_pfn(); 2515 return KVM_PFN_ERR_FAULT;
2516 2516
2517 hva = gfn_to_hva_memslot(slot, gfn); 2517 hva = gfn_to_hva_memslot(slot, gfn);
2518 2518
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 3c16f0f1fe35..ef5554f47486 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -48,6 +48,8 @@
48#define KVM_MAX_MMIO_FRAGMENTS \ 48#define KVM_MAX_MMIO_FRAGMENTS \
49 (KVM_MMIO_SIZE / KVM_USER_MMIO_SIZE + KVM_EXTRA_MMIO_FRAGMENTS) 49 (KVM_MMIO_SIZE / KVM_USER_MMIO_SIZE + KVM_EXTRA_MMIO_FRAGMENTS)
50 50
51#define KVM_PFN_ERR_FAULT (-EFAULT)
52
51/* 53/*
52 * vcpu->requests bit members 54 * vcpu->requests bit members
53 */ 55 */
@@ -443,7 +445,6 @@ void kvm_release_pfn_clean(pfn_t pfn);
443void kvm_set_pfn_dirty(pfn_t pfn); 445void kvm_set_pfn_dirty(pfn_t pfn);
444void kvm_set_pfn_accessed(pfn_t pfn); 446void kvm_set_pfn_accessed(pfn_t pfn);
445void kvm_get_pfn(pfn_t pfn); 447void kvm_get_pfn(pfn_t pfn);
446pfn_t get_fault_pfn(void);
447 448
448int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset, 449int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset,
449 int len); 450 int len);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 14ec567816ab..ef0491645a10 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -939,12 +939,6 @@ static pfn_t get_bad_pfn(void)
939 return -ENOENT; 939 return -ENOENT;
940} 940}
941 941
942pfn_t get_fault_pfn(void)
943{
944 return -EFAULT;
945}
946EXPORT_SYMBOL_GPL(get_fault_pfn);
947
948static pfn_t get_hwpoison_pfn(void) 942static pfn_t get_hwpoison_pfn(void)
949{ 943{
950 return -EHWPOISON; 944 return -EHWPOISON;
@@ -1115,7 +1109,7 @@ static pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async,
1115 struct vm_area_struct *vma; 1109 struct vm_area_struct *vma;
1116 1110
1117 if (atomic) 1111 if (atomic)
1118 return get_fault_pfn(); 1112 return KVM_PFN_ERR_FAULT;
1119 1113
1120 down_read(&current->mm->mmap_sem); 1114 down_read(&current->mm->mmap_sem);
1121 if (npages == -EHWPOISON || 1115 if (npages == -EHWPOISON ||
@@ -1127,7 +1121,7 @@ static pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async,
1127 vma = find_vma_intersection(current->mm, addr, addr+1); 1121 vma = find_vma_intersection(current->mm, addr, addr+1);
1128 1122
1129 if (vma == NULL) 1123 if (vma == NULL)
1130 pfn = get_fault_pfn(); 1124 pfn = KVM_PFN_ERR_FAULT;
1131 else if ((vma->vm_flags & VM_PFNMAP)) { 1125 else if ((vma->vm_flags & VM_PFNMAP)) {
1132 pfn = ((addr - vma->vm_start) >> PAGE_SHIFT) + 1126 pfn = ((addr - vma->vm_start) >> PAGE_SHIFT) +
1133 vma->vm_pgoff; 1127 vma->vm_pgoff;
@@ -1135,7 +1129,7 @@ static pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async,
1135 } else { 1129 } else {
1136 if (async && (vma->vm_flags & VM_WRITE)) 1130 if (async && (vma->vm_flags & VM_WRITE))
1137 *async = true; 1131 *async = true;
1138 pfn = get_fault_pfn(); 1132 pfn = KVM_PFN_ERR_FAULT;
1139 } 1133 }
1140 up_read(&current->mm->mmap_sem); 1134 up_read(&current->mm->mmap_sem);
1141 } else 1135 } else