aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/kvm/dirty_log_test.c
diff options
context:
space:
mode:
authorAndrew Jones <drjones@redhat.com>2018-11-06 14:57:09 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2018-12-21 11:28:28 +0100
commitfd3f6f813976620553e951eb10d3a11b673a8131 (patch)
tree7b4fd0b6378cc66c8cf187ca372ec94e866043eb /tools/testing/selftests/kvm/dirty_log_test.c
parentkvm: selftests: dirty_log_test: always use -t (diff)
downloadlinux-dev-fd3f6f813976620553e951eb10d3a11b673a8131.tar.xz
linux-dev-fd3f6f813976620553e951eb10d3a11b673a8131.zip
kvm: selftests: dirty_log_test: reset guest test phys offset
We need to reset the offset for each mode as it will change depending on the number of guest physical address bits. Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Diffstat (limited to 'tools/testing/selftests/kvm/dirty_log_test.c')
-rw-r--r--tools/testing/selftests/kvm/dirty_log_test.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
index 9078b571c562..44c04f26b86b 100644
--- a/tools/testing/selftests/kvm/dirty_log_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_test.c
@@ -231,7 +231,7 @@ static struct kvm_vm *create_vm(enum vm_guest_mode mode, uint32_t vcpuid,
}
static void run_test(enum vm_guest_mode mode, unsigned long iterations,
- unsigned long interval)
+ unsigned long interval, uint64_t phys_offset)
{
unsigned int guest_pa_bits, guest_page_shift;
pthread_t vcpu_thread;
@@ -279,9 +279,11 @@ static void run_test(enum vm_guest_mode mode, unsigned long iterations,
host_num_pages = (guest_num_pages * guest_page_size) / host_page_size +
!!((guest_num_pages * guest_page_size) % host_page_size);
- if (!guest_test_phys_mem) {
+ if (!phys_offset) {
guest_test_phys_mem = (max_gfn - guest_num_pages) * guest_page_size;
guest_test_phys_mem &= ~(host_page_size - 1);
+ } else {
+ guest_test_phys_mem = phys_offset;
}
DEBUG("guest physical test memory offset: 0x%lx\n", guest_test_phys_mem);
@@ -414,6 +416,7 @@ int main(int argc, char *argv[])
unsigned long iterations = TEST_HOST_LOOP_N;
unsigned long interval = TEST_HOST_LOOP_INTERVAL;
bool mode_selected = false;
+ uint64_t phys_offset = 0;
unsigned int mode;
int opt, i;
@@ -433,7 +436,7 @@ int main(int argc, char *argv[])
interval = strtol(optarg, NULL, 10);
break;
case 'p':
- guest_test_phys_mem = strtoull(optarg, NULL, 0);
+ phys_offset = strtoull(optarg, NULL, 0);
break;
case 'm':
if (!mode_selected) {
@@ -468,7 +471,7 @@ int main(int argc, char *argv[])
"Guest mode ID %d (%s) not supported.",
vm_guest_modes[i].mode,
vm_guest_mode_string(vm_guest_modes[i].mode));
- run_test(vm_guest_modes[i].mode, iterations, interval);
+ run_test(vm_guest_modes[i].mode, iterations, interval, phys_offset);
}
return 0;