diff options
| author | Gleb Natapov <gleb@redhat.com> | 2013-11-04 03:20:57 -0500 |
|---|---|---|
| committer | Gleb Natapov <gleb@redhat.com> | 2013-11-04 03:20:57 -0500 |
| commit | 95f328d3ad1a8e4e3175a18546fb35c495e31130 (patch) | |
| tree | 2f6496ef8354e9a0a315f23faef744f93fee8265 /virt | |
| parent | daf727225b8abfdfe424716abac3d15a3ac5626a (diff) | |
| parent | a78b55d1c0218b6d91d504941d20e36435c276f5 (diff) | |
Merge branch 'kvm-ppc-queue' of git://github.com/agraf/linux-2.6 into queue
Conflicts:
arch/powerpc/include/asm/processor.h
Diffstat (limited to 'virt')
| -rw-r--r-- | virt/kvm/kvm_main.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 82c4047aa0e3..7a317a7f9025 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
| @@ -187,6 +187,7 @@ void kvm_flush_remote_tlbs(struct kvm *kvm) | |||
| 187 | ++kvm->stat.remote_tlb_flush; | 187 | ++kvm->stat.remote_tlb_flush; |
| 188 | cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); | 188 | cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); |
| 189 | } | 189 | } |
| 190 | EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs); | ||
| 190 | 191 | ||
| 191 | void kvm_reload_remote_mmus(struct kvm *kvm) | 192 | void kvm_reload_remote_mmus(struct kvm *kvm) |
| 192 | { | 193 | { |
| @@ -541,13 +542,13 @@ static void kvm_destroy_dirty_bitmap(struct kvm_memory_slot *memslot) | |||
| 541 | /* | 542 | /* |
| 542 | * Free any memory in @free but not in @dont. | 543 | * Free any memory in @free but not in @dont. |
| 543 | */ | 544 | */ |
| 544 | static void kvm_free_physmem_slot(struct kvm_memory_slot *free, | 545 | static void kvm_free_physmem_slot(struct kvm *kvm, struct kvm_memory_slot *free, |
| 545 | struct kvm_memory_slot *dont) | 546 | struct kvm_memory_slot *dont) |
| 546 | { | 547 | { |
| 547 | if (!dont || free->dirty_bitmap != dont->dirty_bitmap) | 548 | if (!dont || free->dirty_bitmap != dont->dirty_bitmap) |
| 548 | kvm_destroy_dirty_bitmap(free); | 549 | kvm_destroy_dirty_bitmap(free); |
| 549 | 550 | ||
| 550 | kvm_arch_free_memslot(free, dont); | 551 | kvm_arch_free_memslot(kvm, free, dont); |
| 551 | 552 | ||
| 552 | free->npages = 0; | 553 | free->npages = 0; |
| 553 | } | 554 | } |
| @@ -558,7 +559,7 @@ void kvm_free_physmem(struct kvm *kvm) | |||
| 558 | struct kvm_memory_slot *memslot; | 559 | struct kvm_memory_slot *memslot; |
| 559 | 560 | ||
| 560 | kvm_for_each_memslot(memslot, slots) | 561 | kvm_for_each_memslot(memslot, slots) |
| 561 | kvm_free_physmem_slot(memslot, NULL); | 562 | kvm_free_physmem_slot(kvm, memslot, NULL); |
| 562 | 563 | ||
| 563 | kfree(kvm->memslots); | 564 | kfree(kvm->memslots); |
| 564 | } | 565 | } |
| @@ -822,7 +823,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 822 | if (change == KVM_MR_CREATE) { | 823 | if (change == KVM_MR_CREATE) { |
| 823 | new.userspace_addr = mem->userspace_addr; | 824 | new.userspace_addr = mem->userspace_addr; |
| 824 | 825 | ||
| 825 | if (kvm_arch_create_memslot(&new, npages)) | 826 | if (kvm_arch_create_memslot(kvm, &new, npages)) |
| 826 | goto out_free; | 827 | goto out_free; |
| 827 | } | 828 | } |
| 828 | 829 | ||
| @@ -883,7 +884,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 883 | 884 | ||
| 884 | kvm_arch_commit_memory_region(kvm, mem, &old, change); | 885 | kvm_arch_commit_memory_region(kvm, mem, &old, change); |
| 885 | 886 | ||
| 886 | kvm_free_physmem_slot(&old, &new); | 887 | kvm_free_physmem_slot(kvm, &old, &new); |
| 887 | kfree(old_memslots); | 888 | kfree(old_memslots); |
| 888 | 889 | ||
| 889 | /* | 890 | /* |
| @@ -905,7 +906,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 905 | out_slots: | 906 | out_slots: |
| 906 | kfree(slots); | 907 | kfree(slots); |
| 907 | out_free: | 908 | out_free: |
| 908 | kvm_free_physmem_slot(&new, &old); | 909 | kvm_free_physmem_slot(kvm, &new, &old); |
| 909 | out: | 910 | out: |
| 910 | return r; | 911 | return r; |
| 911 | } | 912 | } |
| @@ -964,6 +965,7 @@ int kvm_get_dirty_log(struct kvm *kvm, | |||
| 964 | out: | 965 | out: |
| 965 | return r; | 966 | return r; |
| 966 | } | 967 | } |
| 968 | EXPORT_SYMBOL_GPL(kvm_get_dirty_log); | ||
| 967 | 969 | ||
| 968 | bool kvm_largepages_enabled(void) | 970 | bool kvm_largepages_enabled(void) |
| 969 | { | 971 | { |
| @@ -1654,6 +1656,7 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) | |||
| 1654 | memslot = gfn_to_memslot(kvm, gfn); | 1656 | memslot = gfn_to_memslot(kvm, gfn); |
| 1655 | mark_page_dirty_in_slot(kvm, memslot, gfn); | 1657 | mark_page_dirty_in_slot(kvm, memslot, gfn); |
| 1656 | } | 1658 | } |
| 1659 | EXPORT_SYMBOL_GPL(mark_page_dirty); | ||
| 1657 | 1660 | ||
| 1658 | /* | 1661 | /* |
| 1659 | * The vCPU has executed a HLT instruction with in-kernel mode enabled. | 1662 | * The vCPU has executed a HLT instruction with in-kernel mode enabled. |
| @@ -1679,6 +1682,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) | |||
| 1679 | 1682 | ||
| 1680 | finish_wait(&vcpu->wq, &wait); | 1683 | finish_wait(&vcpu->wq, &wait); |
| 1681 | } | 1684 | } |
| 1685 | EXPORT_SYMBOL_GPL(kvm_vcpu_block); | ||
| 1682 | 1686 | ||
| 1683 | #ifndef CONFIG_S390 | 1687 | #ifndef CONFIG_S390 |
| 1684 | /* | 1688 | /* |
