Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb03cb6f authored by Takuya Yoshikawa's avatar Takuya Yoshikawa Committed by Avi Kivity
Browse files

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: default avatarTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 9eed0735
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -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];
}
}


+7 −0
Original line number Original line Diff line number Diff line
@@ -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)
{
{
+1 −6
Original line number Original line Diff line number Diff line
@@ -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]));