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 | /* |