All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test
@ 2021-09-17 17:36 David Matlack
  2021-09-17 17:36 ` [PATCH v2 1/3] KVM: selftests: Change backing_src flag to -s in demand_paging_test David Matlack
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: David Matlack @ 2021-09-17 17:36 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: kvm, Andrew Jones, Ben Gardon, Axel Rasmussen, Yanan Wang, David Matlack

This series fixes 2 bugs in dirty_log_perf_test:
 - Incorrect interleaving of help messages for -s and -x (patch 2)
 - Buffer overflow when using multiple slots (patch 3)

Both bugs were introduced by commit 609e6202ea5f ("KVM: selftests:
Support multiple slots in dirty_log_perf_test").

Patch 1 is a small tangentially related cleanup to use a consistent
flag for the backing source across all selftests.

v2:
 - Add Ben and Andrew's SOB to patches 1 and 2
 - Delete stray newline in patch 2 [Andrew]
 - Make print_available_backing_src_types static [Andrew]
 - Create a separate dirty bitmap per slot [Andrew, Ben]

v1: https://lore.kernel.org/kvm/20210915213034.1613552-1-dmatlack@google.com/

David Matlack (3):
  KVM: selftests: Change backing_src flag to -s in demand_paging_test
  KVM: selftests: Refactor help message for -s backing_src
  KVM: selftests: Create a separate dirty bitmap per slot

 .../selftests/kvm/access_tracking_perf_test.c |  6 +-
 .../selftests/kvm/demand_paging_test.c        | 13 ++--
 .../selftests/kvm/dirty_log_perf_test.c       | 63 +++++++++++++------
 .../testing/selftests/kvm/include/test_util.h |  4 +-
 .../selftests/kvm/kvm_page_table_test.c       |  7 +--
 tools/testing/selftests/kvm/lib/test_util.c   | 17 +++--
 6 files changed, 69 insertions(+), 41 deletions(-)

-- 
2.33.0.464.g1972c5931b-goog


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] KVM: selftests: Change backing_src flag to -s in demand_paging_test
  2021-09-17 17:36 [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test David Matlack
@ 2021-09-17 17:36 ` David Matlack
  2021-09-17 17:36 ` [PATCH v2 2/3] KVM: selftests: Refactor help message for -s backing_src David Matlack
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: David Matlack @ 2021-09-17 17:36 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: kvm, Andrew Jones, Ben Gardon, Axel Rasmussen, Yanan Wang, David Matlack

Every other KVM selftest uses -s for the backing_src, so switch
demand_paging_test to match.

Reviewed-by: Ben Gardon <bgardon@google.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: David Matlack <dmatlack@google.com>
---
 tools/testing/selftests/kvm/demand_paging_test.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testing/selftests/kvm/demand_paging_test.c
index e79c1b64977f..735c081e774e 100644
--- a/tools/testing/selftests/kvm/demand_paging_test.c
+++ b/tools/testing/selftests/kvm/demand_paging_test.c
@@ -416,7 +416,7 @@ static void help(char *name)
 {
 	puts("");
 	printf("usage: %s [-h] [-m vm_mode] [-u uffd_mode] [-d uffd_delay_usec]\n"
-	       "          [-b memory] [-t type] [-v vcpus] [-o]\n", name);
+	       "          [-b memory] [-s type] [-v vcpus] [-o]\n", name);
 	guest_modes_help();
 	printf(" -u: use userfaultfd to handle vCPU page faults. Mode is a\n"
 	       "     UFFD registration mode: 'MISSING' or 'MINOR'.\n");
@@ -426,7 +426,7 @@ static void help(char *name)
 	printf(" -b: specify the size of the memory region which should be\n"
 	       "     demand paged by each vCPU. e.g. 10M or 3G.\n"
 	       "     Default: 1G\n");
-	printf(" -t: The type of backing memory to use. Default: anonymous\n");
+	printf(" -s: The type of backing memory to use. Default: anonymous\n");
 	backing_src_help();
 	printf(" -v: specify the number of vCPUs to run.\n");
 	printf(" -o: Overlap guest memory accesses instead of partitioning\n"
@@ -446,7 +446,7 @@ int main(int argc, char *argv[])
 
 	guest_modes_append_default();
 
-	while ((opt = getopt(argc, argv, "hm:u:d:b:t:v:o")) != -1) {
+	while ((opt = getopt(argc, argv, "hm:u:d:b:s:v:o")) != -1) {
 		switch (opt) {
 		case 'm':
 			guest_modes_cmdline(optarg);
@@ -465,7 +465,7 @@ int main(int argc, char *argv[])
 		case 'b':
 			guest_percpu_mem_size = parse_size(optarg);
 			break;
-		case 't':
+		case 's':
 			p.src_type = parse_backing_src_type(optarg);
 			break;
 		case 'v':
@@ -485,7 +485,7 @@ int main(int argc, char *argv[])
 
 	if (p.uffd_mode == UFFDIO_REGISTER_MODE_MINOR &&
 	    !backing_src_is_shared(p.src_type)) {
-		TEST_FAIL("userfaultfd MINOR mode requires shared memory; pick a different -t");
+		TEST_FAIL("userfaultfd MINOR mode requires shared memory; pick a different -s");
 	}
 
 	for_each_guest_mode(run_test, &p);
-- 
2.33.0.464.g1972c5931b-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] KVM: selftests: Refactor help message for -s backing_src
  2021-09-17 17:36 [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test David Matlack
  2021-09-17 17:36 ` [PATCH v2 1/3] KVM: selftests: Change backing_src flag to -s in demand_paging_test David Matlack
@ 2021-09-17 17:36 ` David Matlack
  2021-09-17 17:36 ` [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot David Matlack
  2021-09-22 13:10 ` [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test Paolo Bonzini
  3 siblings, 0 replies; 6+ messages in thread
From: David Matlack @ 2021-09-17 17:36 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: kvm, Andrew Jones, Ben Gardon, Axel Rasmussen, Yanan Wang, David Matlack

All selftests that support the backing_src option were printing their
own description of the flag and then calling backing_src_help() to dump
the list of available backing sources. Consolidate the flag printing in
backing_src_help() to align indentation, reduce duplicated strings, and
improve consistency across tests.

Note: Passing "-s" to backing_src_help is unnecessary since every test
uses the same flag. However I decided to keep it for code readability
at the call sites.

While here this opportunistically fixes the incorrectly interleaved
printing -x help message and list of backing source types in
dirty_log_perf_test.

Fixes: 609e6202ea5f ("KVM: selftests: Support multiple slots in dirty_log_perf_test")
Reviewed-by: Ben Gardon <bgardon@google.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: David Matlack <dmatlack@google.com>
---
 .../selftests/kvm/access_tracking_perf_test.c   |  6 ++----
 .../testing/selftests/kvm/demand_paging_test.c  |  5 ++---
 .../testing/selftests/kvm/dirty_log_perf_test.c |  8 +++-----
 tools/testing/selftests/kvm/include/test_util.h |  4 +++-
 .../testing/selftests/kvm/kvm_page_table_test.c |  7 ++-----
 tools/testing/selftests/kvm/lib/test_util.c     | 17 +++++++++++++----
 6 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/tools/testing/selftests/kvm/access_tracking_perf_test.c b/tools/testing/selftests/kvm/access_tracking_perf_test.c
index 71e277c7c3f3..5d95113c7b7c 100644
--- a/tools/testing/selftests/kvm/access_tracking_perf_test.c
+++ b/tools/testing/selftests/kvm/access_tracking_perf_test.c
@@ -371,9 +371,7 @@ static void help(char *name)
 	printf(" -v: specify the number of vCPUs to run.\n");
 	printf(" -o: Overlap guest memory accesses instead of partitioning\n"
 	       "     them into a separate region of memory for each vCPU.\n");
-	printf(" -s: specify the type of memory that should be used to\n"
-	       "     back the guest data region.\n\n");
-	backing_src_help();
+	backing_src_help("-s");
 	puts("");
 	exit(0);
 }
@@ -381,7 +379,7 @@ static void help(char *name)
 int main(int argc, char *argv[])
 {
 	struct test_params params = {
-		.backing_src = VM_MEM_SRC_ANONYMOUS,
+		.backing_src = DEFAULT_VM_MEM_SRC,
 		.vcpu_memory_bytes = DEFAULT_PER_VCPU_MEM_SIZE,
 		.vcpus = 1,
 	};
diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testing/selftests/kvm/demand_paging_test.c
index 735c081e774e..96cd3e0357f6 100644
--- a/tools/testing/selftests/kvm/demand_paging_test.c
+++ b/tools/testing/selftests/kvm/demand_paging_test.c
@@ -426,8 +426,7 @@ static void help(char *name)
 	printf(" -b: specify the size of the memory region which should be\n"
 	       "     demand paged by each vCPU. e.g. 10M or 3G.\n"
 	       "     Default: 1G\n");
-	printf(" -s: The type of backing memory to use. Default: anonymous\n");
-	backing_src_help();
+	backing_src_help("-s");
 	printf(" -v: specify the number of vCPUs to run.\n");
 	printf(" -o: Overlap guest memory accesses instead of partitioning\n"
 	       "     them into a separate region of memory for each vCPU.\n");
@@ -439,7 +438,7 @@ int main(int argc, char *argv[])
 {
 	int max_vcpus = kvm_check_cap(KVM_CAP_MAX_VCPUS);
 	struct test_params p = {
-		.src_type = VM_MEM_SRC_ANONYMOUS,
+		.src_type = DEFAULT_VM_MEM_SRC,
 		.partition_vcpu_memory_access = true,
 	};
 	int opt;
diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/testing/selftests/kvm/dirty_log_perf_test.c
index 3c30d0045d8d..5ad9f2bc7369 100644
--- a/tools/testing/selftests/kvm/dirty_log_perf_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c
@@ -308,11 +308,9 @@ static void help(char *name)
 	printf(" -v: specify the number of vCPUs to run.\n");
 	printf(" -o: Overlap guest memory accesses instead of partitioning\n"
 	       "     them into a separate region of memory for each vCPU.\n");
-	printf(" -s: specify the type of memory that should be used to\n"
-	       "     back the guest data region.\n\n");
+	backing_src_help("-s");
 	printf(" -x: Split the memory region into this number of memslots.\n"
-	       "     (default: 1)");
-	backing_src_help();
+	       "     (default: 1)\n");
 	puts("");
 	exit(0);
 }
@@ -324,7 +322,7 @@ int main(int argc, char *argv[])
 		.iterations = TEST_HOST_LOOP_N,
 		.wr_fract = 1,
 		.partition_vcpu_memory_access = true,
-		.backing_src = VM_MEM_SRC_ANONYMOUS,
+		.backing_src = DEFAULT_VM_MEM_SRC,
 		.slots = 1,
 	};
 	int opt;
diff --git a/tools/testing/selftests/kvm/include/test_util.h b/tools/testing/selftests/kvm/include/test_util.h
index d79be15dd3d2..4fa1db32c05e 100644
--- a/tools/testing/selftests/kvm/include/test_util.h
+++ b/tools/testing/selftests/kvm/include/test_util.h
@@ -90,6 +90,8 @@ enum vm_mem_backing_src_type {
 	NUM_SRC_TYPES,
 };
 
+#define DEFAULT_VM_MEM_SRC VM_MEM_SRC_ANONYMOUS
+
 struct vm_mem_backing_src_alias {
 	const char *name;
 	uint32_t flag;
@@ -100,7 +102,7 @@ size_t get_trans_hugepagesz(void);
 size_t get_def_hugetlb_pagesz(void);
 const struct vm_mem_backing_src_alias *vm_mem_backing_src_alias(uint32_t i);
 size_t get_backing_src_pagesz(uint32_t i);
-void backing_src_help(void);
+void backing_src_help(const char *flag);
 enum vm_mem_backing_src_type parse_backing_src_type(const char *type_name);
 
 /*
diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/testing/selftests/kvm/kvm_page_table_test.c
index 0d04a7db7f24..36407cb0ec85 100644
--- a/tools/testing/selftests/kvm/kvm_page_table_test.c
+++ b/tools/testing/selftests/kvm/kvm_page_table_test.c
@@ -456,10 +456,7 @@ static void help(char *name)
 	       "     (default: 1G)\n");
 	printf(" -v: specify the number of vCPUs to run\n"
 	       "     (default: 1)\n");
-	printf(" -s: specify the type of memory that should be used to\n"
-	       "     back the guest data region.\n"
-	       "     (default: anonymous)\n\n");
-	backing_src_help();
+	backing_src_help("-s");
 	puts("");
 }
 
@@ -468,7 +465,7 @@ int main(int argc, char *argv[])
 	int max_vcpus = kvm_check_cap(KVM_CAP_MAX_VCPUS);
 	struct test_params p = {
 		.test_mem_size = DEFAULT_TEST_MEM_SIZE,
-		.src_type = VM_MEM_SRC_ANONYMOUS,
+		.src_type = DEFAULT_VM_MEM_SRC,
 	};
 	int opt;
 
diff --git a/tools/testing/selftests/kvm/lib/test_util.c b/tools/testing/selftests/kvm/lib/test_util.c
index af1031fed97f..e487f798e095 100644
--- a/tools/testing/selftests/kvm/lib/test_util.c
+++ b/tools/testing/selftests/kvm/lib/test_util.c
@@ -279,13 +279,22 @@ size_t get_backing_src_pagesz(uint32_t i)
 	}
 }
 
-void backing_src_help(void)
+static void print_available_backing_src_types(const char *prefix)
 {
 	int i;
 
-	printf("Available backing src types:\n");
+	printf("%sAvailable backing src types:\n", prefix);
+
 	for (i = 0; i < NUM_SRC_TYPES; i++)
-		printf("\t%s\n", vm_mem_backing_src_alias(i)->name);
+		printf("%s    %s\n", prefix, vm_mem_backing_src_alias(i)->name);
+}
+
+void backing_src_help(const char *flag)
+{
+	printf(" %s: specify the type of memory that should be used to\n"
+	       "     back the guest data region. (default: %s)\n",
+	       flag, vm_mem_backing_src_alias(DEFAULT_VM_MEM_SRC)->name);
+	print_available_backing_src_types("     ");
 }
 
 enum vm_mem_backing_src_type parse_backing_src_type(const char *type_name)
@@ -296,7 +305,7 @@ enum vm_mem_backing_src_type parse_backing_src_type(const char *type_name)
 		if (!strcmp(type_name, vm_mem_backing_src_alias(i)->name))
 			return i;
 
-	backing_src_help();
+	print_available_backing_src_types("");
 	TEST_FAIL("Unknown backing src type: %s", type_name);
 	return -1;
 }
-- 
2.33.0.464.g1972c5931b-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot
  2021-09-17 17:36 [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test David Matlack
  2021-09-17 17:36 ` [PATCH v2 1/3] KVM: selftests: Change backing_src flag to -s in demand_paging_test David Matlack
  2021-09-17 17:36 ` [PATCH v2 2/3] KVM: selftests: Refactor help message for -s backing_src David Matlack
@ 2021-09-17 17:36 ` David Matlack
  2021-09-20 12:05   ` Andrew Jones
  2021-09-22 13:10 ` [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test Paolo Bonzini
  3 siblings, 1 reply; 6+ messages in thread
From: David Matlack @ 2021-09-17 17:36 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: kvm, Andrew Jones, Ben Gardon, Axel Rasmussen, Yanan Wang, David Matlack

The calculation to get the per-slot dirty bitmap was incorrect leading
to a buffer overrun. Fix it by splitting out the dirty bitmap into a
separate bitmap per slot.

Fixes: 609e6202ea5f ("KVM: selftests: Support multiple slots in dirty_log_perf_test")
Signed-off-by: David Matlack <dmatlack@google.com>
---
 .../selftests/kvm/dirty_log_perf_test.c       | 54 +++++++++++++------
 1 file changed, 39 insertions(+), 15 deletions(-)

diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/testing/selftests/kvm/dirty_log_perf_test.c
index 5ad9f2bc7369..c981f93e2043 100644
--- a/tools/testing/selftests/kvm/dirty_log_perf_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c
@@ -118,42 +118,64 @@ static inline void disable_dirty_logging(struct kvm_vm *vm, int slots)
 	toggle_dirty_logging(vm, slots, false);
 }
 
-static void get_dirty_log(struct kvm_vm *vm, int slots, unsigned long *bitmap,
-			  uint64_t nr_pages)
+static void get_dirty_log(struct kvm_vm *vm, unsigned long *bitmaps[], int slots)
 {
-	uint64_t slot_pages = nr_pages / slots;
 	int i;
 
 	for (i = 0; i < slots; i++) {
 		int slot = PERF_TEST_MEM_SLOT_INDEX + i;
-		unsigned long *slot_bitmap = bitmap + i * slot_pages;
 
-		kvm_vm_get_dirty_log(vm, slot, slot_bitmap);
+		kvm_vm_get_dirty_log(vm, slot, bitmaps[i]);
 	}
 }
 
-static void clear_dirty_log(struct kvm_vm *vm, int slots, unsigned long *bitmap,
-			    uint64_t nr_pages)
+static void clear_dirty_log(struct kvm_vm *vm, unsigned long *bitmaps[],
+			    int slots, uint64_t pages_per_slot)
 {
-	uint64_t slot_pages = nr_pages / slots;
 	int i;
 
 	for (i = 0; i < slots; i++) {
 		int slot = PERF_TEST_MEM_SLOT_INDEX + i;
-		unsigned long *slot_bitmap = bitmap + i * slot_pages;
 
-		kvm_vm_clear_dirty_log(vm, slot, slot_bitmap, 0, slot_pages);
+		kvm_vm_clear_dirty_log(vm, slot, bitmaps[i], 0, pages_per_slot);
 	}
 }
 
+static unsigned long **alloc_bitmaps(int slots, uint64_t pages_per_slot)
+{
+	unsigned long **bitmaps;
+	int i;
+
+	bitmaps = malloc(slots * sizeof(bitmaps[0]));
+	TEST_ASSERT(bitmaps, "Failed to allocate bitmaps array.");
+
+	for (i = 0; i < slots; i++) {
+		bitmaps[i] = bitmap_alloc(pages_per_slot);
+		TEST_ASSERT(bitmaps[i], "Failed to allocate slot bitmap.");
+	}
+
+	return bitmaps;
+}
+
+static void free_bitmaps(unsigned long *bitmaps[], int slots)
+{
+	int i;
+
+	for (i = 0; i < slots; i++)
+		free(bitmaps[i]);
+
+	free(bitmaps);
+}
+
 static void run_test(enum vm_guest_mode mode, void *arg)
 {
 	struct test_params *p = arg;
 	pthread_t *vcpu_threads;
 	struct kvm_vm *vm;
-	unsigned long *bmap;
+	unsigned long **bitmaps;
 	uint64_t guest_num_pages;
 	uint64_t host_num_pages;
+	uint64_t pages_per_slot;
 	int vcpu_id;
 	struct timespec start;
 	struct timespec ts_diff;
@@ -171,7 +193,9 @@ static void run_test(enum vm_guest_mode mode, void *arg)
 	guest_num_pages = (nr_vcpus * guest_percpu_mem_size) >> vm_get_page_shift(vm);
 	guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
 	host_num_pages = vm_num_host_pages(mode, guest_num_pages);
-	bmap = bitmap_alloc(host_num_pages);
+	pages_per_slot = host_num_pages / p->slots;
+
+	bitmaps = alloc_bitmaps(p->slots, pages_per_slot);
 
 	if (dirty_log_manual_caps) {
 		cap.cap = KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2;
@@ -239,7 +263,7 @@ static void run_test(enum vm_guest_mode mode, void *arg)
 			iteration, ts_diff.tv_sec, ts_diff.tv_nsec);
 
 		clock_gettime(CLOCK_MONOTONIC, &start);
-		get_dirty_log(vm, p->slots, bmap, host_num_pages);
+		get_dirty_log(vm, bitmaps, p->slots);
 		ts_diff = timespec_elapsed(start);
 		get_dirty_log_total = timespec_add(get_dirty_log_total,
 						   ts_diff);
@@ -248,7 +272,7 @@ static void run_test(enum vm_guest_mode mode, void *arg)
 
 		if (dirty_log_manual_caps) {
 			clock_gettime(CLOCK_MONOTONIC, &start);
-			clear_dirty_log(vm, p->slots, bmap, host_num_pages);
+			clear_dirty_log(vm, bitmaps, p->slots, pages_per_slot);
 			ts_diff = timespec_elapsed(start);
 			clear_dirty_log_total = timespec_add(clear_dirty_log_total,
 							     ts_diff);
@@ -281,7 +305,7 @@ static void run_test(enum vm_guest_mode mode, void *arg)
 			clear_dirty_log_total.tv_nsec, avg.tv_sec, avg.tv_nsec);
 	}
 
-	free(bmap);
+	free_bitmaps(bitmaps, p->slots);
 	free(vcpu_threads);
 	perf_test_destroy_vm(vm);
 }
-- 
2.33.0.464.g1972c5931b-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot
  2021-09-17 17:36 ` [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot David Matlack
@ 2021-09-20 12:05   ` Andrew Jones
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2021-09-20 12:05 UTC (permalink / raw)
  To: David Matlack; +Cc: Paolo Bonzini, kvm, Ben Gardon, Axel Rasmussen, Yanan Wang

On Fri, Sep 17, 2021 at 05:36:57PM +0000, David Matlack wrote:
> The calculation to get the per-slot dirty bitmap was incorrect leading
> to a buffer overrun. Fix it by splitting out the dirty bitmap into a
> separate bitmap per slot.
> 
> Fixes: 609e6202ea5f ("KVM: selftests: Support multiple slots in dirty_log_perf_test")
> Signed-off-by: David Matlack <dmatlack@google.com>
> ---
>  .../selftests/kvm/dirty_log_perf_test.c       | 54 +++++++++++++------
>  1 file changed, 39 insertions(+), 15 deletions(-)
>

Reviewed-by: Andrew Jones <drjones@redhat.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test
  2021-09-17 17:36 [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test David Matlack
                   ` (2 preceding siblings ...)
  2021-09-17 17:36 ` [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot David Matlack
@ 2021-09-22 13:10 ` Paolo Bonzini
  3 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2021-09-22 13:10 UTC (permalink / raw)
  To: David Matlack; +Cc: kvm, Andrew Jones, Ben Gardon, Axel Rasmussen, Yanan Wang

On 17/09/21 19:36, David Matlack wrote:
> This series fixes 2 bugs in dirty_log_perf_test:
>   - Incorrect interleaving of help messages for -s and -x (patch 2)
>   - Buffer overflow when using multiple slots (patch 3)
> 
> Both bugs were introduced by commit 609e6202ea5f ("KVM: selftests:
> Support multiple slots in dirty_log_perf_test").
> 
> Patch 1 is a small tangentially related cleanup to use a consistent
> flag for the backing source across all selftests.
> 
> v2:
>   - Add Ben and Andrew's SOB to patches 1 and 2
>   - Delete stray newline in patch 2 [Andrew]
>   - Make print_available_backing_src_types static [Andrew]
>   - Create a separate dirty bitmap per slot [Andrew, Ben]
> 
> v1: https://lore.kernel.org/kvm/20210915213034.1613552-1-dmatlack@google.com/
> 
> David Matlack (3):
>    KVM: selftests: Change backing_src flag to -s in demand_paging_test
>    KVM: selftests: Refactor help message for -s backing_src
>    KVM: selftests: Create a separate dirty bitmap per slot
> 
>   .../selftests/kvm/access_tracking_perf_test.c |  6 +-
>   .../selftests/kvm/demand_paging_test.c        | 13 ++--
>   .../selftests/kvm/dirty_log_perf_test.c       | 63 +++++++++++++------
>   .../testing/selftests/kvm/include/test_util.h |  4 +-
>   .../selftests/kvm/kvm_page_table_test.c       |  7 +--
>   tools/testing/selftests/kvm/lib/test_util.c   | 17 +++--
>   6 files changed, 69 insertions(+), 41 deletions(-)
> 

Queued these now, thanks.

Paolo


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-09-22 13:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-17 17:36 [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test David Matlack
2021-09-17 17:36 ` [PATCH v2 1/3] KVM: selftests: Change backing_src flag to -s in demand_paging_test David Matlack
2021-09-17 17:36 ` [PATCH v2 2/3] KVM: selftests: Refactor help message for -s backing_src David Matlack
2021-09-17 17:36 ` [PATCH v2 3/3] KVM: selftests: Create a separate dirty bitmap per slot David Matlack
2021-09-20 12:05   ` Andrew Jones
2021-09-22 13:10 ` [PATCH v2 0/3] KVM: selftests: Small fixes for dirty_log_perf_test Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.