diff options
| -rw-r--r-- | tools/testing/selftests/kvm/dirty_log_test.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c index 85c5d07dd243..b1f8731721b9 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -183,6 +183,7 @@ static enum log_mode_t host_log_mode_option = LOG_MODE_ALL;  /* Logging mode for current run */  static enum log_mode_t host_log_mode;  static pthread_t vcpu_thread; +static uint32_t test_dirty_ring_count = TEST_DIRTY_RING_COUNT;  static void vcpu_kick(void)  { @@ -257,7 +258,7 @@ static void dirty_ring_create_vm_done(struct kvm_vm *vm)  	 * Switch to dirty ring mode after VM creation but before any  	 * of the vcpu creation.  	 */ -	vm_enable_dirty_ring(vm, TEST_DIRTY_RING_COUNT * +	vm_enable_dirty_ring(vm, test_dirty_ring_count *  			     sizeof(struct kvm_dirty_gfn));  } @@ -279,7 +280,7 @@ static uint32_t dirty_ring_collect_one(struct kvm_dirty_gfn *dirty_gfns,  	uint32_t count = 0;  	while (true) { -		cur = &dirty_gfns[*fetch_index % TEST_DIRTY_RING_COUNT]; +		cur = &dirty_gfns[*fetch_index % test_dirty_ring_count];  		if (!dirty_gfn_is_dirtied(cur))  			break;  		TEST_ASSERT(cur->slot == slot, "Slot number didn't match: " @@ -803,6 +804,9 @@ static void help(char *name)  	printf("usage: %s [-h] [-i iterations] [-I interval] "  	       "[-p offset] [-m mode]\n", name);  	puts(""); +	printf(" -c: specify dirty ring size, in number of entries\n"); +	printf("     (only useful for dirty-ring test; default: %"PRIu32")\n", +	       TEST_DIRTY_RING_COUNT);  	printf(" -i: specify iteration counts (default: %"PRIu64")\n",  	       TEST_HOST_LOOP_N);  	printf(" -I: specify interval in ms (default: %"PRIu64" ms)\n", @@ -858,8 +862,11 @@ int main(int argc, char *argv[])  	guest_mode_init(VM_MODE_P40V48_4K, true, true);  #endif -	while ((opt = getopt(argc, argv, "hi:I:p:m:M:")) != -1) { +	while ((opt = getopt(argc, argv, "c:hi:I:p:m:M:")) != -1) {  		switch (opt) { +		case 'c': +			test_dirty_ring_count = strtol(optarg, NULL, 10); +			break;  		case 'i':  			iterations = strtol(optarg, NULL, 10);  			break;  | 
