On Thu, 2022-03-24 at 05:30 +0000, Manali Shukla wrote: > 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 > Yesterday I was prototyping something similar for my use case. I would like to have mini SVM library which can be called from any test, and in particular from a test which is mostly not SVM, but sometimes one of its vCPU enters a nested guest. (The test in question sends lots of IPIs between vCPUs, and sometimes, it likes a vCPU to be running a nested guest to test that this works. I'll see if I can finish this. Meanwhile these patches do look good to me. Best regards, Maxim Levitsky