• Sean Christopherson's avatar
    KVM: selftests: Ensure all migrations are performed when test is affined · 7b0035ea
    Sean Christopherson authored
    Rework the CPU selection in the migration worker to ensure the specified
    number of migrations are performed when the test iteslf is affined to a
    subset of CPUs.  The existing logic skips iterations if the target CPU is
    not in the original set of possible CPUs, which causes the test to fail
    if too many iterations are skipped.
    
      ==== Test Assertion Failure ====
      rseq_test.c:228: i > (NR_TASK_MIGRATIONS / 2)
      pid=10127 tid=10127 errno=4 - Interrupted system call
         1  0x00000000004018e5: main at rseq_test.c:227
         2  0x00007fcc8fc66bf6: ?? ??:0
         3  0x0000000000401959: _start at ??:?
      Only performed 4 KVM_RUNs, task stalled too much?
    
    Calculate the min/max possible CPUs as a cheap "best effort" to avoid
    high runtimes when the test is affined to a small percentage of CPUs.
    Alternatively, a list or xarray of the possible CPUs could be used, but
    even in a horrendously inefficient setup, such optimizations are not
    needed because the runtime is completely dominated by the cost of
    migrating the task, and the absolute runtime is well under a minute in
    even truly absurd setups, e.g. running on a subset of vCPUs in a VM that
    is heavily overcommited (16 vCPUs per pCPU).
    
    Fixes: 61e52f16 ("KVM: selftests: Add a test for KVM_RUN+rseq to detect task migration bugs")
    Reported-by: default avatarDongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210929234112.1862848-1-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    7b0035ea
rseq_test.c 8.26 KB