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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx