KVM: selftests: List all hugetlb src types specified with page sizes

With VM_MEM_SRC_ANONYMOUS_HUGETLB, we currently can only use system
default hugetlb pages to back the testing guest memory. In order to
add flexibility, now list all the known hugetlb backing src types with
different page sizes, so that we can specify use of hugetlb pages of the
exact granularity that we want. And as all the known hugetlb page sizes
are listed, it's appropriate for all architectures.

Besides, the helper get_backing_src_pagesz() is added to get the
granularity of different backing src types(anonumous, thp, hugetlb).

Suggested-by: Ben Gardon <bgardon@google.com>
Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Message-Id: <20210330080856.14940-9-wangyanan55@huawei.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Yanan Wang
2021-03-30 16:08:54 +08:00
committed by Paolo Bonzini
parent 5579fa682a
commit 623653b7d4
3 changed files with 118 additions and 13 deletions

View File

@@ -71,16 +71,32 @@ enum vm_mem_backing_src_type {
VM_MEM_SRC_ANONYMOUS,
VM_MEM_SRC_ANONYMOUS_THP,
VM_MEM_SRC_ANONYMOUS_HUGETLB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_16KB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_64KB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_512KB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_1MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_2MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_8MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_16MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_32MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_256MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_512MB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_1GB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_2GB,
VM_MEM_SRC_ANONYMOUS_HUGETLB_16GB,
NUM_SRC_TYPES,
};
struct vm_mem_backing_src_alias {
const char *name;
enum vm_mem_backing_src_type type;
uint32_t flag;
};
bool thp_configured(void);
size_t get_trans_hugepagesz(void);
size_t get_def_hugetlb_pagesz(void);
const struct vm_mem_backing_src_alias *vm_mem_backing_src_alias(uint32_t i);
size_t get_backing_src_pagesz(uint32_t i);
void backing_src_help(void);
enum vm_mem_backing_src_type parse_backing_src_type(const char *type_name);