mbox series

[kvm-unit-tests,v4,0/8] Move npt test cases and NPT code improvements

Message ID 20220428070851.21985-1-manali.shukla@amd.com (mailing list archive)
Headers show
Series Move npt test cases and NPT code improvements | expand

Message

Manali Shukla April 28, 2022, 7:08 a.m. UTC
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.

setup_mmu_range() function in vm.c was modified to allocate new user pages to 
implement nested page table.

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.

v2 -> v3
Added new patch to change setup_mmu_range to use it in implementation of nested
page table.
Added new patches to correct indentation errors in svm.c, svm_npt.c and 
svm_tests.c.
Used scripts/Lindent from linux source code to fix indentation errors.

v3 -> v4
Lindent script was not working as expected. So corrected indentation errors in
svm.c and svm_tests.c without using Lindent

Manali Shukla (8):
  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: Improve set_mmu_range() to implement npt
  x86: nSVM: Build up the nested page table dynamically
  x86: nSVM: Correct indentation for svm.c
  x86: nSVM: Correct indentation for svm_tests.c part-1
  x86: nSVM: Correct indentation for svm_tests.c part-2

 lib/x86/vm.c        |   37 +-
 lib/x86/vm.h        |    3 +
 x86/Makefile.common |    2 +
 x86/Makefile.x86_64 |    2 +
 x86/svm.c           |  227 ++-
 x86/svm.h           |    5 +-
 x86/svm_npt.c       |  391 +++++
 x86/svm_tests.c     | 3365 +++++++++++++++++++------------------------
 x86/unittests.cfg   |    6 +
 9 files changed, 2035 insertions(+), 2003 deletions(-)
 create mode 100644 x86/svm_npt.c

Comments

Shukla, Manali May 9, 2022, 4:12 a.m. UTC | #1
On 4/28/2022 12:38 PM, 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.
> 
> setup_mmu_range() function in vm.c was modified to allocate new user pages to 
> implement nested page table.
> 
> 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.
> 
> v2 -> v3
> Added new patch to change setup_mmu_range to use it in implementation of nested
> page table.
> Added new patches to correct indentation errors in svm.c, svm_npt.c and 
> svm_tests.c.
> Used scripts/Lindent from linux source code to fix indentation errors.
> 
> v3 -> v4
> Lindent script was not working as expected. So corrected indentation errors in
> svm.c and svm_tests.c without using Lindent
> 
> Manali Shukla (8):
>   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: Improve set_mmu_range() to implement npt
>   x86: nSVM: Build up the nested page table dynamically
>   x86: nSVM: Correct indentation for svm.c
>   x86: nSVM: Correct indentation for svm_tests.c part-1
>   x86: nSVM: Correct indentation for svm_tests.c part-2
> 
>  lib/x86/vm.c        |   37 +-
>  lib/x86/vm.h        |    3 +
>  x86/Makefile.common |    2 +
>  x86/Makefile.x86_64 |    2 +
>  x86/svm.c           |  227 ++-
>  x86/svm.h           |    5 +-
>  x86/svm_npt.c       |  391 +++++
>  x86/svm_tests.c     | 3365 +++++++++++++++++++------------------------
>  x86/unittests.cfg   |    6 +
>  9 files changed, 2035 insertions(+), 2003 deletions(-)
>  create mode 100644 x86/svm_npt.c
> 

A gentle remainder 

Thank you 
Manali
Shukla, Manali May 16, 2022, 4:45 a.m. UTC | #2
On 5/9/2022 9:42 AM, Shukla, Manali wrote:
> 
> 
> On 4/28/2022 12:38 PM, 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.
>>
>> setup_mmu_range() function in vm.c was modified to allocate new user pages to 
>> implement nested page table.
>>
>> 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.
>>
>> v2 -> v3
>> Added new patch to change setup_mmu_range to use it in implementation of nested
>> page table.
>> Added new patches to correct indentation errors in svm.c, svm_npt.c and 
>> svm_tests.c.
>> Used scripts/Lindent from linux source code to fix indentation errors.
>>
>> v3 -> v4
>> Lindent script was not working as expected. So corrected indentation errors in
>> svm.c and svm_tests.c without using Lindent
>>
>> Manali Shukla (8):
>>   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: Improve set_mmu_range() to implement npt
>>   x86: nSVM: Build up the nested page table dynamically
>>   x86: nSVM: Correct indentation for svm.c
>>   x86: nSVM: Correct indentation for svm_tests.c part-1
>>   x86: nSVM: Correct indentation for svm_tests.c part-2
>>
>>  lib/x86/vm.c        |   37 +-
>>  lib/x86/vm.h        |    3 +
>>  x86/Makefile.common |    2 +
>>  x86/Makefile.x86_64 |    2 +
>>  x86/svm.c           |  227 ++-
>>  x86/svm.h           |    5 +-
>>  x86/svm_npt.c       |  391 +++++
>>  x86/svm_tests.c     | 3365 +++++++++++++++++++------------------------
>>  x86/unittests.cfg   |    6 +
>>  9 files changed, 2035 insertions(+), 2003 deletions(-)
>>  create mode 100644 x86/svm_npt.c
>>
> 
> A gentle remainder 
> 
> Thank you 
> Manali

A gentle reminder for the review.

Thank you,
Manali
Shukla, Manali June 9, 2022, 7:29 a.m. UTC | #3
On 5/16/2022 10:15 AM, Shukla, Manali wrote:
> 
> 
> On 5/9/2022 9:42 AM, Shukla, Manali wrote:
>>
>>
>> On 4/28/2022 12:38 PM, 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.
>>>
>>> setup_mmu_range() function in vm.c was modified to allocate new user pages to 
>>> implement nested page table.
>>>
>>> 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.
>>>
>>> v2 -> v3
>>> Added new patch to change setup_mmu_range to use it in implementation of nested
>>> page table.
>>> Added new patches to correct indentation errors in svm.c, svm_npt.c and 
>>> svm_tests.c.
>>> Used scripts/Lindent from linux source code to fix indentation errors.
>>>
>>> v3 -> v4
>>> Lindent script was not working as expected. So corrected indentation errors in
>>> svm.c and svm_tests.c without using Lindent
>>>
>>> Manali Shukla (8):
>>>   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: Improve set_mmu_range() to implement npt
>>>   x86: nSVM: Build up the nested page table dynamically
>>>   x86: nSVM: Correct indentation for svm.c
>>>   x86: nSVM: Correct indentation for svm_tests.c part-1
>>>   x86: nSVM: Correct indentation for svm_tests.c part-2
>>>
>>>  lib/x86/vm.c        |   37 +-
>>>  lib/x86/vm.h        |    3 +
>>>  x86/Makefile.common |    2 +
>>>  x86/Makefile.x86_64 |    2 +
>>>  x86/svm.c           |  227 ++-
>>>  x86/svm.h           |    5 +-
>>>  x86/svm_npt.c       |  391 +++++
>>>  x86/svm_tests.c     | 3365 +++++++++++++++++++------------------------
>>>  x86/unittests.cfg   |    6 +
>>>  9 files changed, 2035 insertions(+), 2003 deletions(-)
>>>  create mode 100644 x86/svm_npt.c
>>>
>>
>> A gentle remainder 
>>
>> Thank you 
>> Manali
> 
> A gentle reminder for the review.
> 
> Thank you,
> Manali

A gentle reminder for the review.

Hi Paolo, Sean,

Shall I rebase and resend this series?

Thank you,
Manali
Sean Christopherson June 14, 2022, 12:56 a.m. UTC | #4
On Thu, Jun 09, 2022, Shukla, Manali wrote:
> Shall I rebase and resend this series?

If you have spare bandwidth and/or it's a trivial rebase, sure.  I'm hoping to get
to this in the next few days; waiting for that may or may not save you time in the
long run (truly don't know at this point).