Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Liviu Dudau <liviu.dudau@arm.com>
To: Deborah Brouwer <deborah.brouwer@collabora.com>
Cc: igt-dev@lists.freedesktop.org, boris.brezillon@collabora.com,
	adrian.larumbe@collabora.com, steven.price@arm.com,
	daniel.almeida@collabora.com, kamil.konieczny@linux.intel.com
Subject: Re: [PATCH i-g-t 2/2] panthor: test dev_query buffer size variations
Date: Fri, 16 Oct 2026 10:06:54 +0100	[thread overview]
Message-ID: <atHpLtAzeOw8042v@e142607> (raw)
In-Reply-To: <20261015-b4-dev_query-v1-2-70ffafa4131e@collabora.com>

On Thu, Oct 15, 2026 at 04:44:58PM -0700, Deborah Brouwer wrote:
> Add tests to check that the kernel driver will gracefully handle userspace
> buffers that are smaller or larger than the kernel driver expected.
> 
> Also, add a test to ensure that the kernel driver is enforcing the
> minimum buffer size and that the kernel driver will provide the size
> when the userpointer is null.
> 
> This ensures UAPI compliance for DRM_IOCTL_PANTHOR_DEV_QUERY.
> 
> Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com>
> ---
>  tests/panthor/panthor_query.c | 64 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
> 
> diff --git a/tests/panthor/panthor_query.c b/tests/panthor/panthor_query.c
> index afd58a5bd..8ff2e9652 100644
> --- a/tests/panthor/panthor_query.c
> +++ b/tests/panthor/panthor_query.c
> @@ -7,6 +7,10 @@
>  #include "panthor_drm.h"
>  #include <stdint.h>
>  
> +#define GPU_INFO_MIN_SIZE \
> +	(offsetof(struct drm_panthor_gpu_info, tiler_present) + \
> +	 sizeof(((struct drm_panthor_gpu_info *)0)->tiler_present))
> +
>  int igt_main() {
>  	int fd = -1;
>  
> @@ -20,10 +24,70 @@ int igt_main() {
>  		struct drm_panthor_gpu_info gpu = {};
>  
>  		igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO, &gpu, sizeof(gpu), 0);
> +		igt_assert_neq(gpu.gpu_id, 0);
> +	}
> +
> +	igt_describe("Ensure kernel returns a GPU_INFO size.");
> +	igt_subtest("query-size-null-pointer") {
> +		uint32_t size;
> +
> +		size = igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO, NULL, 0, 0);
> +
> +		/*
> +		 * The kernel returns its output structure size, which may be out
> +		 * of sync with the header used to build these tests, so don't expect
> +		 * that the sizes will match necessarily.
> +		 */
> +		igt_assert(size >= GPU_INFO_MIN_SIZE);
> +	}
> +
> +	igt_describe("Ensure kernel enforces GPU_INFO minimum size.");
> +	igt_subtest("query-size-too-small") {
> +		struct drm_panthor_gpu_info gpu = {};
> +
> +		igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO,
> +				  &gpu, GPU_INFO_MIN_SIZE - 1, EINVAL);
> +	}
> +
> +	igt_describe("Ensure kernel accepts GPU_INFO minimum size.");
> +	igt_subtest("query-min-size") {
> +		struct drm_panthor_gpu_info gpu = {};
> +
> +		igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO,
> +				  &gpu, GPU_INFO_MIN_SIZE, 0);

This last test feels redundant. We've checked that the kernel expects a struct of
at least GPU_INFO_MIN_SIZE and we've checked that smaller sizes are rejected. If
GPU_INFO_MIN_SIZE is rejected that means we are no longer supporting that size
and user space should be upgraded, not necessarily that the kernel has a bug.


Best regards,
Liviu

>  
>  		igt_assert_neq(gpu.gpu_id, 0);
>  	}
>  
> +	igt_describe("Ensure kernel zeros out unused part of buffer.");
> +	igt_subtest("query-too-big") {
> +		uint32_t size;
> +		size_t buf_size;
> +		uint8_t *buf;
> +
> +		/*
> +		 * Create a buffer that is larger than necessary.
> +		 * Start with the size returned by the kernel in case it is out of
> +		 * sync with these tests. Then add an extra 16 bytes and initialize
> +		 * the entire buffer to non-zero values.
> +		 */
> +		size = igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO,
> +					 NULL, 0, 0);
> +		buf_size = (size_t)size + 16;
> +		buf = malloc(buf_size);
> +		igt_assert(buf);
> +		memset(buf, 0xff, buf_size);
> +
> +		igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO,
> +				  buf, buf_size, 0);
> +
> +		/* Check that the extra bytes were zeroed. */
> +		for (size_t i = size; i < buf_size; i++)
> +			igt_assert_eq(buf[i], 0);
> +
> +		free(buf);
> +	}
> +
>  	igt_fixture() {
>  		drm_close_driver(fd);
>  	}
> 
> -- 
> 2.56.0
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

  reply	other threads:[~2026-10-16  9:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15 23:44 [PATCH i-g-t 0/2] panthor: add dev_query tests for userspace buffer Deborah Brouwer
2026-10-15 23:44 ` [PATCH i-g-t 1/2] panthor: Return size from PANTHOR_DEV_QUERY Deborah Brouwer
2026-10-16  9:00   ` Liviu Dudau
2026-10-15 23:44 ` [PATCH i-g-t 2/2] panthor: test dev_query buffer size variations Deborah Brouwer
2026-10-16  9:06   ` Liviu Dudau [this message]
2026-10-16  0:25 ` ✗ Xe.CI.BAT: failure for panthor: add dev_query tests for userspace buffer Patchwork
2026-10-16  0:37 ` ✓ i915.CI.BAT: success " Patchwork
2026-10-16 10:56 ` ✗ Xe.CI.FULL: failure " Patchwork

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=atHpLtAzeOw8042v@e142607 \
    --to=liviu.dudau@arm.com \
    --cc=adrian.larumbe@collabora.com \
    --cc=boris.brezillon@collabora.com \
    --cc=daniel.almeida@collabora.com \
    --cc=deborah.brouwer@collabora.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=kamil.konieczny@linux.intel.com \
    --cc=steven.price@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox