| From 00f034a12fdd81210d58116326d92780aac5c238 Mon Sep 17 00:00:00 2001 |
| From: Paolo Bonzini <pbonzini@redhat.com> |
| Date: Wed, 20 Aug 2014 14:29:21 +0200 |
| Subject: KVM: do not bias the generation number in kvm_current_mmio_generation |
| |
| From: Paolo Bonzini <pbonzini@redhat.com> |
| |
| commit 00f034a12fdd81210d58116326d92780aac5c238 upstream. |
| |
| The next patch will give a meaning (a la seqcount) to the low bit of the |
| generation number. Ensure that it matches between kvm->memslots->generation |
| and kvm_current_mmio_generation(). |
| |
| Reviewed-by: David Matlack <dmatlack@google.com> |
| Reviewed-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/x86/kvm/mmu.c | 7 +------ |
| virt/kvm/kvm_main.c | 7 +++++++ |
| 2 files changed, 8 insertions(+), 6 deletions(-) |
| |
| --- a/arch/x86/kvm/mmu.c |
| +++ b/arch/x86/kvm/mmu.c |
| @@ -240,12 +240,7 @@ static unsigned int get_mmio_spte_genera |
| |
| static unsigned int kvm_current_mmio_generation(struct kvm *kvm) |
| { |
| - /* |
| - * Init kvm generation close to MMIO_MAX_GEN to easily test the |
| - * code of handling generation number wrap-around. |
| - */ |
| - return (kvm_memslots(kvm)->generation + |
| - MMIO_MAX_GEN - 150) & MMIO_GEN_MASK; |
| + return kvm_memslots(kvm)->generation & MMIO_GEN_MASK; |
| } |
| |
| static void mark_mmio_spte(struct kvm *kvm, u64 *sptep, u64 gfn, |
| --- a/virt/kvm/kvm_main.c |
| +++ b/virt/kvm/kvm_main.c |
| @@ -474,6 +474,13 @@ static struct kvm *kvm_create_vm(unsigne |
| kvm->memslots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL); |
| if (!kvm->memslots) |
| goto out_err_no_srcu; |
| + |
| + /* |
| + * Init kvm generation close to the maximum to easily test the |
| + * code of handling generation number wrap-around. |
| + */ |
| + kvm->memslots->generation = -150; |
| + |
| kvm_init_memslots_id(kvm); |
| if (init_srcu_struct(&kvm->srcu)) |
| goto out_err_no_srcu; |