From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: [PATCH 3/4] KVM: Simplify ifndef conditional usage in __kvm_set_memory_region() Date: Sun, 29 Jan 2012 21:30:07 +0900 Message-ID: <20120129213007.5ef934bf771bf73bb3355264@gmail.com> References: <20120129212630.3986589f898100bbbd312c63@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: avi@redhat.com, mtosatti@redhat.com Return-path: Received: from mail-pz0-f46.google.com ([209.85.210.46]:61106 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752495Ab2A2MaL (ORCPT ); Sun, 29 Jan 2012 07:30:11 -0500 Received: by dadi2 with SMTP id i2so2784335dad.19 for ; Sun, 29 Jan 2012 04:30:11 -0800 (PST) In-Reply-To: <20120129212630.3986589f898100bbbd312c63@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: From: Takuya Yoshikawa Narrow down the controlled text inside the conditional so that it will include lpage_info and rmap stuff only. For this we change the way we check whether the slot is being created from "if (npages && !new.rmap)" to "if (npages && !old.npages)". Signed-off-by: Takuya Yoshikawa --- virt/kvm/kvm_main.c | 34 +++++++++++++--------------------- 1 files changed, 13 insertions(+), 21 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 2ef9f2d..ee233ce 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -616,7 +616,6 @@ static int kvm_vm_release(struct inode *inode, struct file *filp) return 0; } -#ifndef CONFIG_S390 /* * Allocation size is twice as large as the actual dirty bitmap size. * This makes it possible to do double buffering: see x86's @@ -624,6 +623,7 @@ static int kvm_vm_release(struct inode *inode, struct file *filp) */ static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot) { +#ifndef CONFIG_S390 unsigned long dirty_bytes = 2 * kvm_dirty_bitmap_bytes(memslot); if (dirty_bytes > PAGE_SIZE) @@ -636,9 +636,9 @@ static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot) memslot->dirty_bitmap_head = memslot->dirty_bitmap; memslot->nr_dirty_pages = 0; +#endif /* !CONFIG_S390 */ return 0; } -#endif /* !CONFIG_S390 */ static struct kvm_memory_slot * search_memslots(struct kvm_memslots *slots, gfn_t gfn) @@ -828,23 +828,20 @@ int __kvm_set_memory_region(struct kvm *kvm, r = -ENOMEM; /* Allocate if a slot is being created */ + if (npages && !old.npages) { + new.user_alloc = user_alloc; + if (user_alloc) + new.userspace_addr = mem->userspace_addr; #ifndef CONFIG_S390 - if (npages && !new.rmap) { - new.rmap = vzalloc(npages * sizeof(*new.rmap)); - - if (!new.rmap) + if (!new.rmap) { + new.rmap = vzalloc(npages * sizeof(*new.rmap)); + if (!new.rmap) + goto out_free; + } + if (create_lpage_info(&new, npages)) goto out_free; - - new.user_alloc = user_alloc; - new.userspace_addr = mem->userspace_addr; +#endif /* not defined CONFIG_S390 */ } - if (!npages) - goto skip_lpage; - - if (create_lpage_info(&new, npages)) - goto out_free; - -skip_lpage: /* Allocate page dirty bitmap if needed */ if ((new.flags & KVM_MEM_LOG_DIRTY_PAGES) && !new.dirty_bitmap) { @@ -852,11 +849,6 @@ skip_lpage: goto out_free; /* destroy any largepage mappings for dirty tracking */ } -#else /* not defined CONFIG_S390 */ - new.user_alloc = user_alloc; - if (user_alloc) - new.userspace_addr = mem->userspace_addr; -#endif /* not defined CONFIG_S390 */ if (!npages) { struct kvm_memory_slot *slot; -- 1.7.5.4