diff mbox series

[i-g-t] i915/gem_mmap_gtt: Trim object size for ptracing

Message ID 20201022150943.3041180-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [i-g-t] i915/gem_mmap_gtt: Trim object size for ptracing | expand

Commit Message

Chris Wilson Oct. 22, 2020, 3:09 p.m. UTC
For verifying vm_ops.access we only need a page or two to check we both
advance across a page boundary and find the right offset within a page.
16MiB is overkill for the slow uncached reads through the slow ptrace
interface, so reduce the object size by a couple of orders of magnitude.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 tests/i915/gem_mmap_gtt.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

Comments

Mika Kuoppala Oct. 23, 2020, 10:21 a.m. UTC | #1
Chris Wilson <chris@chris-wilson.co.uk> writes:

> For verifying vm_ops.access we only need a page or two to check we both
> advance across a page boundary and find the right offset within a page.
> 16MiB is overkill for the slow uncached reads through the slow ptrace
> interface, so reduce the object size by a couple of orders of magnitude.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

> ---
>  tests/i915/gem_mmap_gtt.c | 23 ++++++++++++-----------
>  1 file changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index 6637bba06..3cce19e9a 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -525,6 +525,7 @@ static void *memchr_inv(const void *s, int c, size_t n)
>  static void
>  test_ptrace(int fd)
>  {
> +	unsigned long sz = 16 * 4096;
>  	unsigned long AA, CC;
>  	unsigned long *gtt, *cpy;
>  	uint32_t bo;
> @@ -533,16 +534,16 @@ test_ptrace(int fd)
>  	memset(&AA, 0xaa, sizeof(AA));
>  	memset(&CC, 0x55, sizeof(CC));
>  
> -	cpy = malloc(OBJECT_SIZE);
> -	memset(cpy, AA, OBJECT_SIZE);
> +	cpy = malloc(sz);
> +	memset(cpy, AA, sz);
>  
> -	bo = gem_create(fd, OBJECT_SIZE);
> -	gtt = mmap_bo(fd, bo, OBJECT_SIZE);
> -	memset(gtt, CC, OBJECT_SIZE);
> +	bo = gem_create(fd, sz);
> +	gtt = mmap_bo(fd, bo, sz);
> +	memset(gtt, CC, sz);
>  	gem_close(fd, bo);
>  
> -	igt_assert(!memchr_inv(gtt, CC, OBJECT_SIZE));
> -	igt_assert(!memchr_inv(cpy, AA, OBJECT_SIZE));
> +	igt_assert(!memchr_inv(gtt, CC, sz));
> +	igt_assert(!memchr_inv(cpy, AA, sz));
>  
>  	igt_fork(child, 1) {
>  		ptrace(PTRACE_TRACEME, 0, NULL, NULL);
> @@ -553,7 +554,7 @@ test_ptrace(int fd)
>  	pid = wait(NULL);
>  
>  	ptrace(PTRACE_ATTACH, pid, NULL, NULL);
> -	for (int i = 0; i < OBJECT_SIZE / sizeof(long); i++) {
> +	for (int i = 0; i < sz / sizeof(long); i++) {
>  		long ret;
>  
>  		ret = ptrace(PTRACE_PEEKDATA, pid, gtt + i);
> @@ -570,10 +571,10 @@ test_ptrace(int fd)
>  	igt_waitchildren();
>  
>  	/* The contents of the two buffers should now be swapped */
> -	igt_assert(!memchr_inv(gtt, AA, OBJECT_SIZE));
> -	igt_assert(!memchr_inv(cpy, CC, OBJECT_SIZE));
> +	igt_assert(!memchr_inv(gtt, AA, sz));
> +	igt_assert(!memchr_inv(cpy, CC, sz));
>  
> -	munmap(gtt, OBJECT_SIZE);
> +	munmap(gtt, sz);
>  	free(cpy);
>  }
>  
> -- 
> 2.28.0
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
diff mbox series

Patch

diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
index 6637bba06..3cce19e9a 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -525,6 +525,7 @@  static void *memchr_inv(const void *s, int c, size_t n)
 static void
 test_ptrace(int fd)
 {
+	unsigned long sz = 16 * 4096;
 	unsigned long AA, CC;
 	unsigned long *gtt, *cpy;
 	uint32_t bo;
@@ -533,16 +534,16 @@  test_ptrace(int fd)
 	memset(&AA, 0xaa, sizeof(AA));
 	memset(&CC, 0x55, sizeof(CC));
 
-	cpy = malloc(OBJECT_SIZE);
-	memset(cpy, AA, OBJECT_SIZE);
+	cpy = malloc(sz);
+	memset(cpy, AA, sz);
 
-	bo = gem_create(fd, OBJECT_SIZE);
-	gtt = mmap_bo(fd, bo, OBJECT_SIZE);
-	memset(gtt, CC, OBJECT_SIZE);
+	bo = gem_create(fd, sz);
+	gtt = mmap_bo(fd, bo, sz);
+	memset(gtt, CC, sz);
 	gem_close(fd, bo);
 
-	igt_assert(!memchr_inv(gtt, CC, OBJECT_SIZE));
-	igt_assert(!memchr_inv(cpy, AA, OBJECT_SIZE));
+	igt_assert(!memchr_inv(gtt, CC, sz));
+	igt_assert(!memchr_inv(cpy, AA, sz));
 
 	igt_fork(child, 1) {
 		ptrace(PTRACE_TRACEME, 0, NULL, NULL);
@@ -553,7 +554,7 @@  test_ptrace(int fd)
 	pid = wait(NULL);
 
 	ptrace(PTRACE_ATTACH, pid, NULL, NULL);
-	for (int i = 0; i < OBJECT_SIZE / sizeof(long); i++) {
+	for (int i = 0; i < sz / sizeof(long); i++) {
 		long ret;
 
 		ret = ptrace(PTRACE_PEEKDATA, pid, gtt + i);
@@ -570,10 +571,10 @@  test_ptrace(int fd)
 	igt_waitchildren();
 
 	/* The contents of the two buffers should now be swapped */
-	igt_assert(!memchr_inv(gtt, AA, OBJECT_SIZE));
-	igt_assert(!memchr_inv(cpy, CC, OBJECT_SIZE));
+	igt_assert(!memchr_inv(gtt, AA, sz));
+	igt_assert(!memchr_inv(cpy, CC, sz));
 
-	munmap(gtt, OBJECT_SIZE);
+	munmap(gtt, sz);
 	free(cpy);
 }