[igt-dev] [PATCH i-g-t 2/3] tests/prime_mmap: Iterate over dma-buf supported memory regions

Gwan-gyeong Mun gwan-gyeong.mun at intel.com
Wed Mar 2 12:24:13 UTC 2022


Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
Tested-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>

If the https://patchwork.freedesktop.org/series/100737/ patch (currently 
under review) is applied to the i915, you can see that the 
igt at prime_mmap test works normally in dg1.

On 3/2/22 10:06 AM, Zbigniew Kempczyński wrote:
> To avoid code duplication (prime_mmap_coherency uses similar code)
> use helper function which returns dma-buf set of supported regions.
> 
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> Cc: Ashutosh Dixit <ashutosh.dixit at intel.com>
> ---
>   tests/prime_mmap.c | 34 ++++++----------------------------
>   1 file changed, 6 insertions(+), 28 deletions(-)
> 
> diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
> index e0cb9a25b..d53185ff1 100644
> --- a/tests/prime_mmap.c
> +++ b/tests/prime_mmap.c
> @@ -483,31 +483,6 @@ test_aperture_limit(uint32_t region, int size)
>   	gem_close(fd, handle2);
>   }
>   
> -static int
> -check_for_dma_buf_mmap(struct igt_collection *set)
> -{
> -	struct igt_collection *region;
> -	uint32_t reg;
> -	int dma_buf_fd;
> -	char *ptr;
> -	uint32_t handle;
> -	int ret = 1;
> -
> -	for_each_combination(region, 1, set) {
> -		reg = igt_collection_get_value(region, 0);
> -		handle = gem_create_in_memory_regions(fd, BO_SIZE, reg);
> -
> -		dma_buf_fd = prime_handle_to_fd(fd, handle);
> -		ptr = mmap(NULL, BO_SIZE, PROT_READ, MAP_SHARED, dma_buf_fd, 0);
> -		if (ptr != MAP_FAILED)
> -			ret = 0;
> -		munmap(ptr, BO_SIZE);
> -		gem_close(fd, handle);
> -		close(dma_buf_fd);
> -	}
> -	return ret;
> -}
> -
>   #define SKIP_LMEM (1 << 0)
>   #define SKIP_USERPTR (1 << 1)
>   
> @@ -527,7 +502,7 @@ static bool check_skip(uint32_t skip, uint32_t region)
>   
>   igt_main
>   {
> -	struct igt_collection *set, *regions;
> +	struct igt_collection *set, *regions, *dma_buf_set;
>   	struct drm_i915_query_memory_regions *query_info;
>   	struct {
>   		const char *name;
> @@ -560,13 +535,15 @@ igt_main
>   
>   		set = get_memory_region_set(query_info, I915_SYSTEM_MEMORY,
>   					    I915_DEVICE_MEMORY);
> -		igt_assert(check_for_dma_buf_mmap(set) == 0);
> +
> +		dma_buf_set = get_dma_buf_mmap_supported_set(fd, set);
> +		igt_require_f(dma_buf_set, "No dma-buf region supported\n");
>   		errno = 0;
>   	}
>   
>   	for (i = 0; i < ARRAY_SIZE(tests); i++)
>   		igt_subtest_with_dynamic(tests[i].name) {
> -			for_each_combination(regions, 1, set) {
> +			for_each_combination(regions, 1, dma_buf_set) {
>   				region = igt_collection_get_value(regions, 0);
>   				size = gem_get_batch_size(fd, MEMORY_TYPE_FROM_REGION(region));
>   				size = max(size, BO_SIZE);
> @@ -582,6 +559,7 @@ igt_main
>   	igt_fixture {
>   		free(query_info);
>   		igt_collection_destroy(set);
> +		igt_collection_destroy(dma_buf_set);
>   		close(fd);
>   	}
>   }
> 


More information about the igt-dev mailing list