[igt-dev] [PATCH i-g-t v7 05/13] lib/vm_bind: Add vm_bind specific library functions
Niranjana Vishwanathapura
niranjana.vishwanathapura at intel.com
Sun Nov 13 07:53:01 UTC 2022
Add vm_bind specific library interfaces.
Reviewed-by: Matthew Auld <matthew.auld at intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
---
lib/i915/i915_vm_bind.c | 61 +++++++++++++++++++++++++++++++++++++++++
lib/i915/i915_vm_bind.h | 16 +++++++++++
lib/meson.build | 1 +
3 files changed, 78 insertions(+)
create mode 100644 lib/i915/i915_vm_bind.c
create mode 100644 lib/i915/i915_vm_bind.h
diff --git a/lib/i915/i915_vm_bind.c b/lib/i915/i915_vm_bind.c
new file mode 100644
index 000000000..5624f589b
--- /dev/null
+++ b/lib/i915/i915_vm_bind.c
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2022 Intel Corporation
+ */
+
+#include <errno.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#include "ioctl_wrappers.h"
+#include "i915_drm.h"
+#include "i915_drm_local.h"
+#include "i915_vm_bind.h"
+
+void i915_vm_bind(int i915, uint32_t vm_id, uint64_t va, uint32_t handle,
+ uint64_t offset, uint64_t length, uint32_t syncobj,
+ uint64_t fence_value)
+{
+ struct drm_i915_gem_vm_bind bind;
+
+ memset(&bind, 0, sizeof(bind));
+ bind.vm_id = vm_id;
+ bind.handle = handle;
+ bind.start = va;
+ bind.offset = offset;
+ bind.length = length;
+ if (syncobj) {
+ bind.fence.handle = syncobj;
+ bind.fence.value = fence_value;
+ bind.fence.flags = I915_TIMELINE_FENCE_SIGNAL;
+ }
+
+ gem_vm_bind(i915, &bind);
+}
+
+void i915_vm_unbind(int i915, uint32_t vm_id, uint64_t va, uint64_t length)
+{
+ struct drm_i915_gem_vm_unbind unbind;
+
+ memset(&unbind, 0, sizeof(unbind));
+ unbind.vm_id = vm_id;
+ unbind.start = va;
+ unbind.length = length;
+
+ gem_vm_unbind(i915, &unbind);
+}
+
+int i915_vm_bind_version(int i915)
+{
+ struct drm_i915_getparam gp;
+ int value = 0;
+
+ memset(&gp, 0, sizeof(gp));
+ gp.param = I915_PARAM_VM_BIND_VERSION;
+ gp.value = &value;
+
+ ioctl(i915, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp));
+ errno = 0;
+
+ return value;
+}
diff --git a/lib/i915/i915_vm_bind.h b/lib/i915/i915_vm_bind.h
new file mode 100644
index 000000000..46a382c03
--- /dev/null
+++ b/lib/i915/i915_vm_bind.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2022 Intel Corporation
+ */
+#ifndef _I915_VM_BIND_H_
+#define _I915_VM_BIND_H_
+
+#include <stdint.h>
+
+void i915_vm_bind(int i915, uint32_t vm_id, uint64_t va, uint32_t handle,
+ uint64_t offset, uint64_t length, uint32_t syncobj,
+ uint64_t fence_value);
+void i915_vm_unbind(int i915, uint32_t vm_id, uint64_t va, uint64_t length);
+int i915_vm_bind_version(int i915);
+
+#endif /* _I915_VM_BIND_ */
diff --git a/lib/meson.build b/lib/meson.build
index ac7126fbf..154f674cb 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -14,6 +14,7 @@ lib_sources = [
'i915/intel_mocs.c',
'i915/i915_blt.c',
'i915/i915_crc.c',
+ 'i915/i915_vm_bind.c',
'igt_collection.c',
'igt_color_encoding.c',
'igt_crc.c',
--
2.21.0.rc0.32.g243a4c7e27
More information about the igt-dev
mailing list