[igt-dev] [Intel-gfx] [PATCH i-g-t 3/5] i915: Exercise preemption timeout controls in sysfs

Andi Shyti andi at etezian.org
Fri Feb 28 23:27:04 UTC 2020


Hi Chris,

> +static int create_ext_ioctl(int i915,
> +			    struct drm_i915_gem_context_create_ext *arg)
> +{
> +	int err;
> +
> +	err = 0;
> +	if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, arg)) {
> +		err = -errno;
> +		igt_assume(err);
> +	}
> +
> +	errno = 0;
> +	return err;
> +}
> +
>  /**
>   * gem_has_contexts:
>   * @fd: open i915 drm file descriptor
> @@ -324,17 +339,14 @@ __gem_context_clone(int i915,
>  		.flags = flags | I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS,
>  		.extensions = to_user_pointer(&clone),
>  	};
> -	int err = 0;
> +	int err;
>  
> -	if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &arg)) {
> -		err = -errno;
> -		igt_assume(err);
> -	}
> +	err = create_ext_ioctl(i915, &arg);
> +	if (err)
> +		return err;
>  
>  	*out = arg.ctx_id;
> -
> -	errno = 0;
> -	return err;
> +	return 0;
>  }
>  
>  static bool __gem_context_has(int i915, uint32_t share, unsigned int flags)
> @@ -382,16 +394,8 @@ bool gem_has_context_clone(int i915)
>  		.flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS,
>  		.extensions = to_user_pointer(&ext),
>  	};
> -	int err;
> -
> -	err = 0;
> -	if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &create)) {
> -		err = -errno;
> -		igt_assume(err);
> -	}
> -	errno = 0;
>  
> -	return err == -ENOENT;
> +	return create_ext_ioctl(i915, &create) == -ENOENT;
>  }

I'd like to see the above in a separate patch.

> +void dyn_sysfs_engines(int i915, int engines, const char *file,
> +		       void (*test)(int, int))
> +{
> +	char buf[512];
> +	int len;
> +
> +	lseek(engines, 0, SEEK_SET);
> +	while ((len = syscall(SYS_getdents64, engines, buf, sizeof(buf))) > 0) {
> +		void *ptr = buf;
> +
> +		while (len) {
> +			struct linux_dirent64 {
> +				ino64_t        d_ino;
> +				off64_t        d_off;
> +				unsigned short d_reclen;
> +				unsigned char  d_type;
> +				char           d_name[];
> +			} *de = ptr;

what is the need for having your own linux_dirent64?

All the rest look good.

Andi


More information about the igt-dev mailing list