[igt-dev] [PATCH i-g-t 1/2] lib/i915/intel_memory_region: Provide system memory region stub

Petri Latvala petri.latvala at intel.com
Thu Dec 9 11:19:34 UTC 2021


On Wed, Dec 08, 2021 at 06:24:15PM +0100, Zbigniew Kempczyński wrote:
> For stable kernels we can currently get -ENODEV on integrated gens
> when no CONFIG_DRM_I915_UNSTABLE_FAKE_LMEM is set.
> 
> Provide system memory region stub to avoid failing on querying
> kernel for memory regions.
> 
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> Cc: Ashutosh Dixit <ashutosh.dixit at intel.com>
> ---
>  lib/i915/intel_memory_region.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c
> index 058b273dc..668e39439 100644
> --- a/lib/i915/intel_memory_region.c
> +++ b/lib/i915/intel_memory_region.c
> @@ -123,9 +123,18 @@ struct drm_i915_query_memory_regions *gem_get_query_memory_regions(int fd)
>  	 * Any DRM_I915_QUERY_MEMORY_REGIONS specific errors are encoded in the
>  	 * item.length, even though the ioctl might still return success.
>  	 */
> +
>  	if (item.length < 0) {
> -		igt_critical("DRM_I915_QUERY_MEMORY_REGIONS failed with %d\n",
> -			     item.length);
> +		/*
> +		 * If kernel supports query but not memory regions query
> +		 * just return predefined system memory region only.
> +		 */
> +		size_t sys_qi_size =
> +			(char *) &query_info->regions[1] - (char *) query_info;
> +
> +		query_info = calloc(1, sys_qi_size);
> +		query_info->num_regions = 1;
> +		query_info->regions[0].region.memory_class = I915_MEMORY_CLASS_SYSTEM;
>  		goto out;
>  	}
>  
> -- 
> 2.26.0
> 

Oh wow, I thought this was stubbed "properly" (for lack of a better
word) a long time ago...


Reviewed-by: Petri Latvala <petri.latvala at intel.com>


More information about the igt-dev mailing list