[igt-dev] [PATCH i-g-t 2/8] lib/vm_bind: Add vm_bind/unbind and execbuf3 ioctls

Niranjana Vishwanathapura niranjana.vishwanathapura at intel.com
Fri Sep 30 16:49:53 UTC 2022


On Fri, Sep 30, 2022 at 10:05:37AM +0100, Matthew Auld wrote:
>On 28/09/2022 07:21, Niranjana Vishwanathapura wrote:
>>From: Adam Miszczak <adam.miszczak at linux.intel.com>
>>
>>Add required library interfaces for new vm_bind/unbind
>>and execbuf3 ioctls.
>>
>>Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
>
>Missing sob from Adam.

The author name was wrong here, will fix it.

>
>>---
>>  lib/intel_chipset.h  |  2 ++
>>  lib/ioctl_wrappers.c | 78 ++++++++++++++++++++++++++++++++++++++++++++
>>  lib/ioctl_wrappers.h |  6 ++++
>>  3 files changed, 86 insertions(+)
>>
>>diff --git a/lib/intel_chipset.h b/lib/intel_chipset.h
>>index d7a6ff190f..7cf8259157 100644
>>--- a/lib/intel_chipset.h
>>+++ b/lib/intel_chipset.h
>>@@ -225,4 +225,6 @@ void intel_check_pch(void);
>>  #define HAS_FLATCCS(devid)	(intel_get_device_info(devid)->has_flatccs)
>>+#define HAS_64K_PAGES(devid)	(IS_DG2(devid))
>
>Unrelated change?

I was asked to move it from test patch to a library patch.
Hence move it here. Ok, will move it to patch #1 as it is
now will defines uapi in a library header file and this is
an implicit uapi.

Regards,
Niranjana

>
>Otherwise,
>Acked-by: Matthew Auld <matthew.auld at intel.com>
>
>>+
>>  #endif /* _INTEL_CHIPSET_H */
>>diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
>>index 09eb3ce7b5..ac37b6bb43 100644
>>--- a/lib/ioctl_wrappers.c
>>+++ b/lib/ioctl_wrappers.c
>>@@ -706,6 +706,38 @@ void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
>>  	igt_assert_eq(__gem_execbuf_wr(fd, execbuf), 0);
>>  }
>>+/**
>>+ * __gem_execbuf3:
>>+ * @fd: open i915 drm file descriptor
>>+ * @execbuf: execbuffer data structure
>>+ *
>>+ * This wraps the EXECBUFFER3 ioctl, which submits a batchbuffer for the gpu to
>>+ * run. This is allowed to fail, with -errno returned.
>>+ */
>>+int __gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf)
>>+{
>>+	int err = 0;
>>+	if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER3, execbuf)) {
>>+		err = -errno;
>>+		igt_assume(err != 0);
>>+	}
>>+	errno = 0;
>>+	return err;
>>+}
>>+
>>+/**
>>+ * gem_execbuf3:
>>+ * @fd: open i915 drm file descriptor
>>+ * @execbuf: execbuffer data structure
>>+ *
>>+ * This wraps the EXECBUFFER3 ioctl, which submits a batchbuffer for the gpu to
>>+ * run.
>>+ */
>>+void gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf)
>>+{
>>+	igt_assert_eq(__gem_execbuf3(fd, execbuf), 0);
>>+}
>>+
>>  /**
>>   * gem_madvise:
>>   * @fd: open i915 drm file descriptor
>>@@ -1328,3 +1360,49 @@ bool igt_has_drm_cap(int fd, uint64_t capability)
>>  	igt_assert(drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap) == 0);
>>  	return cap.value;
>>  }
>>+
>>+/* VM_BIND */
>>+
>>+int __gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind)
>>+{
>>+	int err = 0;
>>+
>>+	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_VM_BIND, bind))
>>+		err = -errno;
>>+	return err;
>>+}
>>+
>>+/**
>>+ * gem_vm_bind:
>>+ * @fd: open i915 drm file descriptor
>>+ * @bind: vm_bind data structure
>>+ *
>>+ * This wraps the VM_BIND ioctl to bind an address range to
>>+ * the specified address space.
>>+ */
>>+void gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind)
>>+{
>>+	igt_assert_eq(__gem_vm_bind(fd, bind), 0);
>>+}
>>+
>>+int __gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind)
>>+{
>>+	int err = 0;
>>+
>>+	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_VM_UNBIND, unbind))
>>+		err = -errno;
>>+	return err;
>>+}
>>+
>>+/**
>>+ * gem_vm_unbind:
>>+ * @fd: open i915 drm file descriptor
>>+ * @unbind: vm_unbind data structure
>>+ *
>>+ * This wraps the VM_UNBIND ioctl to unbind an address range from
>>+ * the specified address space.
>>+ */
>>+void gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind)
>>+{
>>+	igt_assert_eq(__gem_vm_unbind(fd, unbind), 0);
>>+}
>>diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
>>index 9a897fec23..223cd9160c 100644
>>--- a/lib/ioctl_wrappers.h
>>+++ b/lib/ioctl_wrappers.h
>>@@ -84,6 +84,12 @@ void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>>  int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>>  void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>>  int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>>+void gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf);
>>+int __gem_execbuf3(int fd, struct drm_i915_gem_execbuffer3 *execbuf);
>>+int __gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind);
>>+void gem_vm_bind(int fd, struct drm_i915_gem_vm_bind *bind);
>>+int __gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind);
>>+void gem_vm_unbind(int fd, struct drm_i915_gem_vm_unbind *unbind);
>>  #ifndef I915_GEM_DOMAIN_WC
>>  #define I915_GEM_DOMAIN_WC 0x80


More information about the igt-dev mailing list