mbox series

[v2,00/12] KVM: selftests: Hugepage fixes and cleanups

Message ID 20211111000310.1435032-1-dmatlack@google.com (mailing list archive)
Headers show
Series KVM: selftests: Hugepage fixes and cleanups | expand

Message

David Matlack Nov. 11, 2021, 12:02 a.m. UTC
Fix hugepage bugs in the KVM selftests that specifically affect dirty
logging and demand paging tests.  Found while attempting to verify KVM
changes/fixes related to hugepages and dirty logging (patches incoming in
a separate series).

Clean up the perf_test_args util on top of the hugepage fixes to clarify
what "page size" means, and to improve confidence in the code doing what
it thinks it's doing.  In a few cases, users of perf_test_args were
duplicating (approximating?) calculations made by perf_test_args, and it
wasn't obvious that both pieces of code were guaranteed to end up with the
same result.

v2:
- Add separate align up/down helpers and use the throughout the series
  rather than openly coding the bitwise math [Ben, Paolo]
- Do no pad HugeTLB mmaps [Yanan]
- Drop "[PATCH 04/15] KVM: selftests: Force stronger HVA alignment (1gb)
  for hugepages" since HugeTLB does not require manual HVA alignment
  [David]
- Drop "[PATCH 15/15] KVM: selftests: Get rid of gorilla math in memslots
  modification test" since the gorilla math no longer exists [David]
- Drop "[PATCH 14/15] KVM: selftests: Track size of per-VM memslot in
  perf_test_args" since it was just a prep patch for [PATCH 15/15]
  [David]
- Update the series to kvm/next [David]

v1: https://lore.kernel.org/kvm/20210210230625.550939-1-seanjc@google.com/.

Sean Christopherson (12):
  KVM: selftests: Explicitly state indicies for vm_guest_mode_params
    array
  KVM: selftests: Expose align() helpers to tests
  KVM: selftests: Assert mmap HVA is aligned when using HugeTLB
  KVM: selftests: Require GPA to be aligned when backed by hugepages
  KVM: selftests: Use shorthand local var to access struct
    perf_tests_args
  KVM: selftests: Capture per-vCPU GPA in perf_test_vcpu_args
  KVM: selftests: Use perf util's per-vCPU GPA/pages in demand paging
    test
  KVM: selftests: Move per-VM GPA into perf_test_args
  KVM: selftests: Remove perf_test_args.host_page_size
  KVM: selftests: Create VM with adjusted number of guest pages for perf
    tests
  KVM: selftests: Fill per-vCPU struct during "perf_test" VM creation
  KVM: selftests: Sync perf_test_args to guest during VM creation

 .../selftests/kvm/access_tracking_perf_test.c |   8 +-
 .../selftests/kvm/demand_paging_test.c        |  31 +----
 .../selftests/kvm/dirty_log_perf_test.c       |  10 +-
 tools/testing/selftests/kvm/dirty_log_test.c  |   6 +-
 .../selftests/kvm/include/perf_test_util.h    |  18 +--
 .../testing/selftests/kvm/include/test_util.h |  26 ++++
 .../selftests/kvm/kvm_page_table_test.c       |   2 +-
 tools/testing/selftests/kvm/lib/elf.c         |   3 +-
 tools/testing/selftests/kvm/lib/kvm_util.c    |  44 +++---
 .../selftests/kvm/lib/perf_test_util.c        | 126 ++++++++++--------
 tools/testing/selftests/kvm/lib/test_util.c   |   5 +
 .../kvm/memslot_modification_stress_test.c    |  13 +-
 12 files changed, 153 insertions(+), 139 deletions(-)

Comments

Paolo Bonzini Nov. 16, 2021, 11:12 a.m. UTC | #1
On 11/11/21 01:02, David Matlack wrote:
> Fix hugepage bugs in the KVM selftests that specifically affect dirty
> logging and demand paging tests.  Found while attempting to verify KVM
> changes/fixes related to hugepages and dirty logging (patches incoming in
> a separate series).
> 
> Clean up the perf_test_args util on top of the hugepage fixes to clarify
> what "page size" means, and to improve confidence in the code doing what
> it thinks it's doing.  In a few cases, users of perf_test_args were
> duplicating (approximating?) calculations made by perf_test_args, and it
> wasn't obvious that both pieces of code were guaranteed to end up with the
> same result.

Queued, thanks.

Paolo

> v2:
> - Add separate align up/down helpers and use the throughout the series
>    rather than openly coding the bitwise math [Ben, Paolo]
> - Do no pad HugeTLB mmaps [Yanan]
> - Drop "[PATCH 04/15] KVM: selftests: Force stronger HVA alignment (1gb)
>    for hugepages" since HugeTLB does not require manual HVA alignment
>    [David]
> - Drop "[PATCH 15/15] KVM: selftests: Get rid of gorilla math in memslots
>    modification test" since the gorilla math no longer exists [David]
> - Drop "[PATCH 14/15] KVM: selftests: Track size of per-VM memslot in
>    perf_test_args" since it was just a prep patch for [PATCH 15/15]
>    [David]
> - Update the series to kvm/next [David]
> 
> v1: https://lore.kernel.org/kvm/20210210230625.550939-1-seanjc@google.com/.
> 
> Sean Christopherson (12):
>    KVM: selftests: Explicitly state indicies for vm_guest_mode_params
>      array
>    KVM: selftests: Expose align() helpers to tests
>    KVM: selftests: Assert mmap HVA is aligned when using HugeTLB
>    KVM: selftests: Require GPA to be aligned when backed by hugepages
>    KVM: selftests: Use shorthand local var to access struct
>      perf_tests_args
>    KVM: selftests: Capture per-vCPU GPA in perf_test_vcpu_args
>    KVM: selftests: Use perf util's per-vCPU GPA/pages in demand paging
>      test
>    KVM: selftests: Move per-VM GPA into perf_test_args
>    KVM: selftests: Remove perf_test_args.host_page_size
>    KVM: selftests: Create VM with adjusted number of guest pages for perf
>      tests
>    KVM: selftests: Fill per-vCPU struct during "perf_test" VM creation
>    KVM: selftests: Sync perf_test_args to guest during VM creation
> 
>   .../selftests/kvm/access_tracking_perf_test.c |   8 +-
>   .../selftests/kvm/demand_paging_test.c        |  31 +----
>   .../selftests/kvm/dirty_log_perf_test.c       |  10 +-
>   tools/testing/selftests/kvm/dirty_log_test.c  |   6 +-
>   .../selftests/kvm/include/perf_test_util.h    |  18 +--
>   .../testing/selftests/kvm/include/test_util.h |  26 ++++
>   .../selftests/kvm/kvm_page_table_test.c       |   2 +-
>   tools/testing/selftests/kvm/lib/elf.c         |   3 +-
>   tools/testing/selftests/kvm/lib/kvm_util.c    |  44 +++---
>   .../selftests/kvm/lib/perf_test_util.c        | 126 ++++++++++--------
>   tools/testing/selftests/kvm/lib/test_util.c   |   5 +
>   .../kvm/memslot_modification_stress_test.c    |  13 +-
>   12 files changed, 153 insertions(+), 139 deletions(-)
>