If __setup_vm() is changed to setup_vm(), KUT will build tests with PT_USER_MASK set on all PTEs. It is a better idea to move nNPT tests to their own file so that tests don't need to fiddle with page tables midway. The quick approach to do this would be to turn the current main into a small helper, without calling __setup_vm() from helper. Current implementation of nested page table does the page table build up statistically with 2048 PTEs and one pml4 entry. With newly implemented routine, nested page table can be implemented dynamically based on the RAM size of VM which enables us to have separate memory ranges to test various npt test cases. Based on this implementation, minimal changes were required to be done in below mentioned existing APIs: npt_get_pde(), npt_get_pte(), npt_get_pdpe(). v1 -> v2 Added new patch for building up a nested page table dynamically and did minimal changes required to make it adaptable with old test cases. There are four patches in this patch series 1) Turned current main into helper function minus setup_vm(). 2) Moved all nNPT test cases from svm_tests.c to svm_npt.c. 3) Enabled PT_USER_MASK for all nSVM test cases other than nNPT tests. 4) Implemented routine to build up nested page table dynamically. *** BLURB HERE *** Manali Shukla (4): x86: nSVM: Move common functionality of the main() to helper run_svm_tests x86: nSVM: Move all nNPT test cases from svm_tests.c to a separate file. x86: nSVM: Allow nSVM tests run with PT_USER_MASK enabled x86: nSVM: Build up the nested page table dynamically x86/Makefile.common | 2 + x86/Makefile.x86_64 | 2 + x86/svm.c | 169 ++++++++++++------- x86/svm.h | 18 ++- x86/svm_npt.c | 386 ++++++++++++++++++++++++++++++++++++++++++++ x86/svm_tests.c | 369 +----------------------------------------- 6 files changed, 526 insertions(+), 420 deletions(-) create mode 100644 x86/svm_npt.c -- 2.30.2