mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
KVM: PPC: Book3S HV: Add KVM stat largepages_[2M/1G]
This adds an entry to the kvm_stats_debugfs directory which provides the number of large (2M or 1G) pages which have been used to setup the guest mappings, for radix guests. Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
This commit is contained in:
parent
a67614cc05
commit
8f1f7b9bed
@ -99,6 +99,8 @@ struct kvm_nested_guest;
|
||||
|
||||
struct kvm_vm_stat {
|
||||
ulong remote_tlb_flush;
|
||||
ulong num_2M_pages;
|
||||
ulong num_1G_pages;
|
||||
};
|
||||
|
||||
struct kvm_vcpu_stat {
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include "book3s.h"
|
||||
#include "trace.h"
|
||||
|
||||
#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM
|
||||
#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU
|
||||
|
||||
/* #define EXIT_DEBUG */
|
||||
@ -71,6 +72,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
|
||||
{ "pthru_all", VCPU_STAT(pthru_all) },
|
||||
{ "pthru_host", VCPU_STAT(pthru_host) },
|
||||
{ "pthru_bad_aff", VCPU_STAT(pthru_bad_aff) },
|
||||
{ "largepages_2M", VM_STAT(num_2M_pages) },
|
||||
{ "largepages_1G", VM_STAT(num_1G_pages) },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
@ -403,8 +403,13 @@ void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa,
|
||||
if (!memslot)
|
||||
return;
|
||||
}
|
||||
if (shift)
|
||||
if (shift) { /* 1GB or 2MB page */
|
||||
page_size = 1ul << shift;
|
||||
if (shift == PMD_SHIFT)
|
||||
kvm->stat.num_2M_pages--;
|
||||
else if (shift == PUD_SHIFT)
|
||||
kvm->stat.num_1G_pages--;
|
||||
}
|
||||
|
||||
gpa &= ~(page_size - 1);
|
||||
hpa = old & PTE_RPN_MASK;
|
||||
@ -878,6 +883,14 @@ int kvmppc_book3s_instantiate_page(struct kvm_vcpu *vcpu,
|
||||
put_page(page);
|
||||
}
|
||||
|
||||
/* Increment number of large pages if we (successfully) inserted one */
|
||||
if (!ret) {
|
||||
if (level == 1)
|
||||
kvm->stat.num_2M_pages++;
|
||||
else if (level == 2)
|
||||
kvm->stat.num_1G_pages++;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user