KVM: Introduce gfn_to_index() which returns the index for a given level
This patch cleans up the code and removes the "(void)level;" warning suppressor. Note that we can also use this for PT_PAGE_TABLE_LEVEL to treat every level uniformly later. Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
9eed0735ca
commit
fb03cb6f44
|
@ -688,8 +688,7 @@ static struct kvm_lpage_info *lpage_info_slot(gfn_t gfn,
|
||||||
{
|
{
|
||||||
unsigned long idx;
|
unsigned long idx;
|
||||||
|
|
||||||
idx = (gfn >> KVM_HPAGE_GFN_SHIFT(level)) -
|
idx = gfn_to_index(gfn, slot->base_gfn, level);
|
||||||
(slot->base_gfn >> KVM_HPAGE_GFN_SHIFT(level));
|
|
||||||
return &slot->lpage_info[level - 2][idx];
|
return &slot->lpage_info[level - 2][idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -681,6 +681,13 @@ static inline int memslot_id(struct kvm *kvm, gfn_t gfn)
|
||||||
return gfn_to_memslot(kvm, gfn)->id;
|
return gfn_to_memslot(kvm, gfn)->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline gfn_t gfn_to_index(gfn_t gfn, gfn_t base_gfn, int level)
|
||||||
|
{
|
||||||
|
/* KVM_HPAGE_GFN_SHIFT(PT_PAGE_TABLE_LEVEL) must be 0. */
|
||||||
|
return (gfn >> KVM_HPAGE_GFN_SHIFT(level)) -
|
||||||
|
(base_gfn >> KVM_HPAGE_GFN_SHIFT(level));
|
||||||
|
}
|
||||||
|
|
||||||
static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot,
|
static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot,
|
||||||
gfn_t gfn)
|
gfn_t gfn)
|
||||||
{
|
{
|
||||||
|
|
|
@ -784,15 +784,10 @@ int __kvm_set_memory_region(struct kvm *kvm,
|
||||||
int lpages;
|
int lpages;
|
||||||
int level = i + 2;
|
int level = i + 2;
|
||||||
|
|
||||||
/* Avoid unused variable warning if no large pages */
|
|
||||||
(void)level;
|
|
||||||
|
|
||||||
if (new.lpage_info[i])
|
if (new.lpage_info[i])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
lpages = 1 + ((base_gfn + npages - 1)
|
lpages = gfn_to_index(base_gfn + npages - 1, base_gfn, level) + 1;
|
||||||
>> KVM_HPAGE_GFN_SHIFT(level));
|
|
||||||
lpages -= base_gfn >> KVM_HPAGE_GFN_SHIFT(level);
|
|
||||||
|
|
||||||
new.lpage_info[i] = vzalloc(lpages * sizeof(*new.lpage_info[i]));
|
new.lpage_info[i] = vzalloc(lpages * sizeof(*new.lpage_info[i]));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue