xref: /kvm-unit-tests/x86/access_test.c (revision 76ffc8010a2723dd73ec6bc2328c2139ed0c2a72)
10f10d9aeSAaron Lewis #include "libcflat.h"
20f10d9aeSAaron Lewis #include "processor.h"
30f10d9aeSAaron Lewis #include "x86/vm.h"
40f10d9aeSAaron Lewis #include "access.h"
50f10d9aeSAaron Lewis 
main(int argc,const char * argv[])6*76ffc801SMathias Krause int main(int argc, const char *argv[])
70f10d9aeSAaron Lewis {
8*76ffc801SMathias Krause 	bool force_emulation = argc >= 2 && !strcmp(argv[1], "force_emulation");
9*76ffc801SMathias Krause 
100f10d9aeSAaron Lewis 	printf("starting test\n\n");
11*76ffc801SMathias Krause 	ac_test_run(PT_LEVEL_PML4, force_emulation);
120f10d9aeSAaron Lewis 
13c98ce6e0SAlexandru Elisei #ifndef CONFIG_EFI
1492a6c9b9SPaolo Bonzini 	/*
1592a6c9b9SPaolo Bonzini 	* Not supported yet for UEFI, because setting up 5
1692a6c9b9SPaolo Bonzini 	* level page table requires entering real mode.
1792a6c9b9SPaolo Bonzini 	*/
180f10d9aeSAaron Lewis 	if (this_cpu_has(X86_FEATURE_LA57)) {
190f10d9aeSAaron Lewis 		printf("starting 5-level paging test.\n\n");
200f10d9aeSAaron Lewis 		setup_5level_page_table();
21*76ffc801SMathias Krause 		ac_test_run(PT_LEVEL_PML5, force_emulation);
220f10d9aeSAaron Lewis 	}
2392a6c9b9SPaolo Bonzini #endif
240f10d9aeSAaron Lewis 
2526a9b17eSSean Christopherson 	return report_summary();
260f10d9aeSAaron Lewis }
27