From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: [PATCH 1/3] KVM: Introduce a helper to check if gfn is in memslot Date: Tue, 19 Apr 2011 03:32:20 +0900 Message-ID: <20110419033220.e527bcae.takuya.yoshikawa@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, yoshikawa.takuya@oss.ntt.co.jp To: avi@redhat.com, mtosatti@redhat.com Return-path: Received: from mail-pz0-f46.google.com ([209.85.210.46]:49273 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752523Ab1DRSc1 (ORCPT ); Mon, 18 Apr 2011 14:32:27 -0400 Received: by pzk9 with SMTP id 9so2194987pzk.19 for ; Mon, 18 Apr 2011 11:32:27 -0700 (PDT) Sender: kvm-owner@vger.kernel.org List-ID: From: Takuya Yoshikawa This will be used later. Signed-off-by: Takuya Yoshikawa --- include/linux/kvm_host.h | 5 +++++ virt/kvm/kvm_main.c | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 0bc3d37..9101698 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -612,6 +612,11 @@ static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot, return slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE; } +static inline bool gfn_in_memslot(struct kvm_memory_slot *slot, gfn_t gfn) +{ + return (gfn >= slot->base_gfn) && (gfn < slot->base_gfn + slot->npages); +} + static inline gpa_t gfn_to_gpa(gfn_t gfn) { return (gpa_t)gfn << PAGE_SHIFT; diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 5814645..6df199d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -940,8 +940,7 @@ static struct kvm_memory_slot *__gfn_to_memslot(struct kvm_memslots *slots, for (i = 0; i < slots->nmemslots; ++i) { struct kvm_memory_slot *memslot = &slots->memslots[i]; - if (gfn >= memslot->base_gfn - && gfn < memslot->base_gfn + memslot->npages) + if (gfn_in_memslot(memslot, gfn)) return memslot; } return NULL; @@ -964,8 +963,7 @@ int kvm_is_visible_gfn(struct kvm *kvm, gfn_t gfn) if (memslot->flags & KVM_MEMSLOT_INVALID) continue; - if (gfn >= memslot->base_gfn - && gfn < memslot->base_gfn + memslot->npages) + if (gfn_in_memslot(memslot, gfn)) return 1; } return 0; -- 1.7.1