All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: Matthew Auld <matthew.auld@intel.com>
Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [igt-dev] [PATCH i-g-t 2/3] tests/i915_query: extract query_garbage_items
Date: Mon, 26 Jul 2021 15:43:45 +0530	[thread overview]
Message-ID: <20210726101345.GB20437@intel.com> (raw)
In-Reply-To: <20210708122554.1874987-2-matthew.auld@intel.com>

On 2021-07-08 at 13:25:53 +0100, Matthew Auld wrote:
> We should be able to re-use this for other queries.

LGTM

Reviewed-by: Ramalingam C <ramalingam.c@intel.com>
> 
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
> ---
>  tests/i915/i915_query.c | 46 ++++++++++++++++++++++++-----------------
>  1 file changed, 27 insertions(+), 19 deletions(-)
> 
> diff --git a/tests/i915/i915_query.c b/tests/i915/i915_query.c
> index 29b938e9..34965841 100644
> --- a/tests/i915/i915_query.c
> +++ b/tests/i915/i915_query.c
> @@ -92,7 +92,8 @@ static void test_query_garbage(int fd)
>  	i915_query_items_err(fd, &item, 1, EINVAL);
>  }
>  
> -static void test_query_garbage_items(int fd)
> +static void test_query_garbage_items(int fd, int query_id, int min_item_size,
> +				     int sizeof_query_item)
>  {
>  	struct drm_i915_query_item items[2];
>  	struct drm_i915_query_item *items_ptr;
> @@ -103,7 +104,7 @@ static void test_query_garbage_items(int fd)
>  	 * Subject to change in the future.
>  	 */
>  	memset(items, 0, sizeof(items));
> -	items[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items[0].query_id = query_id;
>  	items[0].flags = 42;
>  	i915_query_items(fd, items, 1);
>  	igt_assert_eq(items[0].length, -EINVAL);
> @@ -113,10 +114,10 @@ static void test_query_garbage_items(int fd)
>  	 * one is properly processed.
>  	 */
>  	memset(items, 0, sizeof(items));
> -	items[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items[0].query_id = query_id;
>  	items[1].query_id = ULONG_MAX;
>  	i915_query_items(fd, items, 2);
> -	igt_assert_lte(MIN_TOPOLOGY_ITEM_SIZE, items[0].length);
> +	igt_assert_lte(min_item_size, items[0].length);
>  	igt_assert_eq(items[1].length, -EINVAL);
>  
>  	/*
> @@ -126,16 +127,16 @@ static void test_query_garbage_items(int fd)
>  	 */
>  	memset(items, 0, sizeof(items));
>  	items[0].query_id = ULONG_MAX;
> -	items[1].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items[1].query_id = query_id;
>  	i915_query_items(fd, items, 2);
>  	igt_assert_eq(items[0].length, -EINVAL);
> -	igt_assert_lte(MIN_TOPOLOGY_ITEM_SIZE, items[1].length);
> +	igt_assert_lte(min_item_size, items[1].length);
>  
>  	/* Test a couple of invalid data pointer in query item. */
>  	memset(items, 0, sizeof(items));
> -	items[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items[0].query_id = query_id;
>  	i915_query_items(fd, items, 1);
> -	igt_assert_lte(MIN_TOPOLOGY_ITEM_SIZE, items[0].length);
> +	igt_assert_lte(min_item_size, items[0].length);
>  
>  	items[0].data_ptr = 0;
>  	i915_query_items(fd, items, 1);
> @@ -145,14 +146,13 @@ static void test_query_garbage_items(int fd)
>  	i915_query_items(fd, items, 1);
>  	igt_assert_eq(items[0].length, -EFAULT);
>  
> -
>  	/* Test an invalid query item length. */
>  	memset(items, 0, sizeof(items));
> -	items[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> -	items[1].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> -	items[1].length = sizeof(struct drm_i915_query_topology_info) - 1;
> +	items[0].query_id = query_id;
> +	items[1].query_id = query_id;
> +	items[1].length = sizeof_query_item - 1;
>  	i915_query_items(fd, items, 2);
> -	igt_assert_lte(MIN_TOPOLOGY_ITEM_SIZE, items[0].length);
> +	igt_assert_lte(min_item_size, items[0].length);
>  	igt_assert_eq(items[1].length, -EINVAL);
>  
>  	/*
> @@ -162,9 +162,9 @@ static void test_query_garbage_items(int fd)
>  	 * has been removed from our address space.
>  	 */
>  	items_ptr = mmap(0, 4096, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
> -	items_ptr[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items_ptr[0].query_id = query_id;
>  	i915_query_items(fd, items_ptr, 1);
> -	igt_assert_lte(MIN_TOPOLOGY_ITEM_SIZE, items_ptr[0].length);
> +	igt_assert_lte(min_item_size, items_ptr[0].length);
>  	munmap(items_ptr, 4096);
>  	i915_query_items_err(fd, items_ptr, 1, EFAULT);
>  
> @@ -173,7 +173,7 @@ static void test_query_garbage_items(int fd)
>  	 * the kernel errors out with EFAULT.
>  	 */
>  	items_ptr = mmap(0, 4096, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
> -	items_ptr[0].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +	items_ptr[0].query_id = query_id;
>  	igt_assert_eq(0, mprotect(items_ptr, 4096, PROT_READ));
>  	i915_query_items_err(fd, items_ptr, 1, EFAULT);
>  	munmap(items_ptr, 4096);
> @@ -186,12 +186,20 @@ static void test_query_garbage_items(int fd)
>  	memset(items_ptr, 0, 8192);
>  	n_items = 8192 / sizeof(struct drm_i915_query_item);
>  	for (i = 0; i < n_items; i++)
> -		items_ptr[i].query_id = DRM_I915_QUERY_TOPOLOGY_INFO;
> +		items_ptr[i].query_id = query_id;
>  	mprotect(((uint8_t *)items_ptr) + 4096, 4096, PROT_READ);
>  	i915_query_items_err(fd, items_ptr, n_items, EFAULT);
>  	munmap(items_ptr, 8192);
>  }
>  
> +static void test_query_topology_garbage_items(int fd)
> +{
> +	test_query_garbage_items(fd,
> +				 DRM_I915_QUERY_TOPOLOGY_INFO,
> +				 MIN_TOPOLOGY_ITEM_SIZE,
> +				 sizeof(struct drm_i915_query_topology_info));
> +}
> +
>  /*
>   * Allocate more on both sides of where the kernel is going to write and verify
>   * that it writes only where it's supposed to.
> @@ -738,9 +746,9 @@ igt_main
>  	igt_subtest("query-garbage")
>  		test_query_garbage(fd);
>  
> -	igt_subtest("query-garbage-items") {
> +	igt_subtest("query-topology-garbage-items") {
>  		igt_require(query_topology_supported(fd));
> -		test_query_garbage_items(fd);
> +		test_query_topology_garbage_items(fd);
>  	}
>  
>  	igt_subtest("query-topology-kernel-writes") {
> -- 
> 2.26.3
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2021-07-26 10:13 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08 12:25 [Intel-gfx] [PATCH i-g-t 1/3] lib/intel_memory_region: verify item.length Matthew Auld
2021-07-08 12:25 ` [Intel-gfx] [PATCH i-g-t 2/3] tests/i915_query: extract query_garbage_items Matthew Auld
2021-07-26 10:13   ` Ramalingam C [this message]
2021-07-08 12:25 ` [igt-dev] [PATCH i-g-t 3/3] tests/i915_query: add some sanity checking around regions query Matthew Auld
2021-07-08 12:25   ` [Intel-gfx] " Matthew Auld
2021-07-26 11:48   ` [Intel-gfx] [igt-dev] " Ramalingam C
2021-07-08 16:27 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] lib/intel_memory_region: verify item.length Patchwork
2021-07-09  0:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2021-07-26  9:32 ` [igt-dev] [Intel-gfx] [PATCH i-g-t 1/3] " Ramalingam C
2021-07-26  9:32   ` Ramalingam C

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210726101345.GB20437@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.auld@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.