ANDROID: KVM: arm64: Fix missing KVM stats accounting

The KVM stat protected_hyp_mem give an insight into the hypervisor memory footprint. Sadly, some donations were omitted.

Bug: 357781595
Bug: 222044477
Bug: 337946560
Change-Id: I96f97781886b11845c6db798fc39f5389f96375c
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
This commit is contained in:
Vincent Donnefort
2024-05-01 11:48:46 +01:00
committed by Treehugger Robot
parent 0624b02f57
commit c32849c569
+11 -2
View File
@@ -373,12 +373,21 @@ static int handle_trap_exceptions(struct kvm_vcpu *vcpu)
static int handle_hyp_req_mem(struct kvm_vcpu *vcpu,
struct kvm_hyp_req *req)
{
struct kvm *kvm = vcpu->kvm;
unsigned long nr_pages;
int ret;
switch (req->mem.dest) {
case REQ_MEM_DEST_HYP_ALLOC:
return __pkvm_topup_hyp_alloc(req->mem.nr_pages);
case REQ_MEM_DEST_VCPU_MEMCACHE:
return topup_hyp_memcache(&vcpu->arch.stage2_mc,
req->mem.nr_pages, 0);
nr_pages = vcpu->arch.stage2_mc.nr_pages;
ret = topup_hyp_memcache(&vcpu->arch.stage2_mc,
req->mem.nr_pages, 0);
nr_pages = vcpu->arch.stage2_mc.nr_pages - nr_pages;
atomic64_add(nr_pages << PAGE_SHIFT, &kvm->stat.protected_hyp_mem);
return ret;
};
pr_warn("Unknown kvm_hyp_req mem dest: %d\n", req->mem.dest);