aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-04-02 05:20:48 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-19 14:52:45 -0400
commit3520469d65f26a1cd2f610f5d5de976f78db74fe (patch)
tree2b3ab1f42a0168b238662fd9252e94a269acc550 /virt
parent69a1220060c1523fd0515216eaa29e22f133b894 (diff)
KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async
gfn_to_pfn_async is used in just one place, and because of x86-specific treatment that place will need to look at the memory slot. Hence inline it into try_async_pf and export __gfn_to_pfn_memslot. The patch also switches the subsequent call to gfn_to_pfn_prot to use __gfn_to_pfn_memslot. This is a small optimization. Finally, remove the now-unused async argument of __gfn_to_pfn. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/kvm_main.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index f202c4035134..bd3c08a7c6c2 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1355,9 +1355,8 @@ exit:
1355 return pfn; 1355 return pfn;
1356} 1356}
1357 1357
1358static pfn_t 1358pfn_t __gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn, bool atomic,
1359__gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn, bool atomic, 1359 bool *async, bool write_fault, bool *writable)
1360 bool *async, bool write_fault, bool *writable)
1361{ 1360{
1362 unsigned long addr = __gfn_to_hva_many(slot, gfn, NULL, write_fault); 1361 unsigned long addr = __gfn_to_hva_many(slot, gfn, NULL, write_fault);
1363 1362
@@ -1376,44 +1375,35 @@ __gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn, bool atomic,
1376 return hva_to_pfn(addr, atomic, async, write_fault, 1375 return hva_to_pfn(addr, atomic, async, write_fault,
1377 writable); 1376 writable);
1378} 1377}
1378EXPORT_SYMBOL_GPL(__gfn_to_pfn_memslot);
1379 1379
1380static pfn_t __gfn_to_pfn(struct kvm *kvm, gfn_t gfn, bool atomic, bool *async, 1380static pfn_t __gfn_to_pfn(struct kvm *kvm, gfn_t gfn, bool atomic,
1381 bool write_fault, bool *writable) 1381 bool write_fault, bool *writable)
1382{ 1382{
1383 struct kvm_memory_slot *slot; 1383 struct kvm_memory_slot *slot;
1384 1384
1385 if (async)
1386 *async = false;
1387
1388 slot = gfn_to_memslot(kvm, gfn); 1385 slot = gfn_to_memslot(kvm, gfn);
1389 1386
1390 return __gfn_to_pfn_memslot(slot, gfn, atomic, async, write_fault, 1387 return __gfn_to_pfn_memslot(slot, gfn, atomic, NULL, write_fault,
1391 writable); 1388 writable);
1392} 1389}
1393 1390
1394pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn) 1391pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn)
1395{ 1392{
1396 return __gfn_to_pfn(kvm, gfn, true, NULL, true, NULL); 1393 return __gfn_to_pfn(kvm, gfn, true, true, NULL);
1397} 1394}
1398EXPORT_SYMBOL_GPL(gfn_to_pfn_atomic); 1395EXPORT_SYMBOL_GPL(gfn_to_pfn_atomic);
1399 1396
1400pfn_t gfn_to_pfn_async(struct kvm *kvm, gfn_t gfn, bool *async,
1401 bool write_fault, bool *writable)
1402{
1403 return __gfn_to_pfn(kvm, gfn, false, async, write_fault, writable);
1404}
1405EXPORT_SYMBOL_GPL(gfn_to_pfn_async);
1406
1407pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn) 1397pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn)
1408{ 1398{
1409 return __gfn_to_pfn(kvm, gfn, false, NULL, true, NULL); 1399 return __gfn_to_pfn(kvm, gfn, false, true, NULL);
1410} 1400}
1411EXPORT_SYMBOL_GPL(gfn_to_pfn); 1401EXPORT_SYMBOL_GPL(gfn_to_pfn);
1412 1402
1413pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault, 1403pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault,
1414 bool *writable) 1404 bool *writable)
1415{ 1405{
1416 return __gfn_to_pfn(kvm, gfn, false, NULL, write_fault, writable); 1406 return __gfn_to_pfn(kvm, gfn, false, write_fault, writable);
1417} 1407}
1418EXPORT_SYMBOL_GPL(gfn_to_pfn_prot); 1408EXPORT_SYMBOL_GPL(gfn_to_pfn_prot);
1419 1409