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

Kamil Konieczny kamil.konieczny at linux.intel.com
Tue Mar 1 12:38:26 UTC 2022


Dnia 2022-03-01 at 08:58:02 +0100, Zbigniew Kempczyński napisał(a):
> 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(-)

Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

> 
> 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);
>  	}
>  }
> -- 
> 2.32.0
> 


More information about the igt-dev mailing list