KVM: s390: Introduce kvm_s390_get_gfn_end()
And use it where s390 code would just access the memslot with the highest gfn directly. No functional change intended. Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-Id: <42496041d6af1c23b1cbba2636b344ca8d5fc3af.1638817641.git.maciej.szmigiero@oracle.com>
This commit is contained in:
Родитель
ed922739c9
Коммит
6a656832aa
|
@ -2014,7 +2014,7 @@ static int kvm_s390_get_cmma(struct kvm *kvm, struct kvm_s390_cmma_log *args,
|
|||
if (!ms)
|
||||
return 0;
|
||||
next_gfn = kvm_s390_next_dirty_cmma(slots, cur_gfn + 1);
|
||||
mem_end = slots->memslots[0].base_gfn + slots->memslots[0].npages;
|
||||
mem_end = kvm_s390_get_gfn_end(slots);
|
||||
|
||||
while (args->count < bufsize) {
|
||||
hva = gfn_to_hva(kvm, cur_gfn);
|
||||
|
|
|
@ -217,6 +217,18 @@ static inline void kvm_s390_set_user_cpu_state_ctrl(struct kvm *kvm)
|
|||
kvm->arch.user_cpu_state_ctrl = 1;
|
||||
}
|
||||
|
||||
/* get the end gfn of the last (highest gfn) memslot */
|
||||
static inline unsigned long kvm_s390_get_gfn_end(struct kvm_memslots *slots)
|
||||
{
|
||||
struct kvm_memory_slot *ms;
|
||||
|
||||
if (WARN_ON(!slots->used_slots))
|
||||
return 0;
|
||||
|
||||
ms = slots->memslots;
|
||||
return ms->base_gfn + ms->npages;
|
||||
}
|
||||
|
||||
/* implemented in pv.c */
|
||||
int kvm_s390_pv_destroy_cpu(struct kvm_vcpu *vcpu, u16 *rc, u16 *rrc);
|
||||
int kvm_s390_pv_create_cpu(struct kvm_vcpu *vcpu, u16 *rc, u16 *rrc);
|
||||
|
|
|
@ -116,7 +116,6 @@ static int kvm_s390_pv_alloc_vm(struct kvm *kvm)
|
|||
unsigned long base = uv_info.guest_base_stor_len;
|
||||
unsigned long virt = uv_info.guest_virt_var_stor_len;
|
||||
unsigned long npages = 0, vlen = 0;
|
||||
struct kvm_memory_slot *memslot;
|
||||
|
||||
kvm->arch.pv.stor_var = NULL;
|
||||
kvm->arch.pv.stor_base = __get_free_pages(GFP_KERNEL_ACCOUNT, get_order(base));
|
||||
|
@ -130,8 +129,7 @@ static int kvm_s390_pv_alloc_vm(struct kvm *kvm)
|
|||
* Slots are sorted by GFN
|
||||
*/
|
||||
mutex_lock(&kvm->slots_lock);
|
||||
memslot = kvm_memslots(kvm)->memslots;
|
||||
npages = memslot->base_gfn + memslot->npages;
|
||||
npages = kvm_s390_get_gfn_end(kvm_memslots(kvm));
|
||||
mutex_unlock(&kvm->slots_lock);
|
||||
|
||||
kvm->arch.pv.guest_len = npages * PAGE_SIZE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче