diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-08-07 05:49:42 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-09-10 03:46:31 -0400 |
commit | ea8e064fe22a132da1473d82a57751208e6b8bfd (patch) | |
tree | 4868982732c3e29966e2447f1942381509f3c3b9 /arch/x86/kvm | |
parent | 9738b2c97d19d87e5c204ae8c3f715a546bb6773 (diff) |
KVM: SVM: remove nested_svm_do and helper functions
This function is not longer required. So remove it.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r-- | arch/x86/kvm/svm.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 68b6d4cdd153..d458297d54c8 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -1421,66 +1421,6 @@ static void nested_svm_unmap(void *addr, enum km_type idx) | |||
1421 | kvm_release_page_dirty(page); | 1421 | kvm_release_page_dirty(page); |
1422 | } | 1422 | } |
1423 | 1423 | ||
1424 | static struct page *nested_svm_get_page(struct vcpu_svm *svm, u64 gpa) | ||
1425 | { | ||
1426 | struct page *page; | ||
1427 | |||
1428 | down_read(¤t->mm->mmap_sem); | ||
1429 | page = gfn_to_page(svm->vcpu.kvm, gpa >> PAGE_SHIFT); | ||
1430 | up_read(¤t->mm->mmap_sem); | ||
1431 | |||
1432 | if (is_error_page(page)) { | ||
1433 | printk(KERN_INFO "%s: could not find page at 0x%llx\n", | ||
1434 | __func__, gpa); | ||
1435 | kvm_release_page_clean(page); | ||
1436 | kvm_inject_gp(&svm->vcpu, 0); | ||
1437 | return NULL; | ||
1438 | } | ||
1439 | return page; | ||
1440 | } | ||
1441 | |||
1442 | static int nested_svm_do(struct vcpu_svm *svm, | ||
1443 | u64 arg1_gpa, u64 arg2_gpa, void *opaque, | ||
1444 | int (*handler)(struct vcpu_svm *svm, | ||
1445 | void *arg1, | ||
1446 | void *arg2, | ||
1447 | void *opaque)) | ||
1448 | { | ||
1449 | struct page *arg1_page; | ||
1450 | struct page *arg2_page = NULL; | ||
1451 | void *arg1; | ||
1452 | void *arg2 = NULL; | ||
1453 | int retval; | ||
1454 | |||
1455 | arg1_page = nested_svm_get_page(svm, arg1_gpa); | ||
1456 | if(arg1_page == NULL) | ||
1457 | return 1; | ||
1458 | |||
1459 | if (arg2_gpa) { | ||
1460 | arg2_page = nested_svm_get_page(svm, arg2_gpa); | ||
1461 | if(arg2_page == NULL) { | ||
1462 | kvm_release_page_clean(arg1_page); | ||
1463 | return 1; | ||
1464 | } | ||
1465 | } | ||
1466 | |||
1467 | arg1 = kmap_atomic(arg1_page, KM_USER0); | ||
1468 | if (arg2_gpa) | ||
1469 | arg2 = kmap_atomic(arg2_page, KM_USER1); | ||
1470 | |||
1471 | retval = handler(svm, arg1, arg2, opaque); | ||
1472 | |||
1473 | kunmap_atomic(arg1, KM_USER0); | ||
1474 | if (arg2_gpa) | ||
1475 | kunmap_atomic(arg2, KM_USER1); | ||
1476 | |||
1477 | kvm_release_page_dirty(arg1_page); | ||
1478 | if (arg2_gpa) | ||
1479 | kvm_release_page_dirty(arg2_page); | ||
1480 | |||
1481 | return retval; | ||
1482 | } | ||
1483 | |||
1484 | static bool nested_svm_exit_handled_msr(struct vcpu_svm *svm) | 1424 | static bool nested_svm_exit_handled_msr(struct vcpu_svm *svm) |
1485 | { | 1425 | { |
1486 | u32 param = svm->vmcb->control.exit_info_1 & 1; | 1426 | u32 param = svm->vmcb->control.exit_info_1 & 1; |