summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSai Gowtham Ch <sai.gowtham.ch@intel.com>2024-04-18 12:29:47 +0530
committerSai Gowtham Ch <sai.gowtham.ch@intel.com>2024-04-18 12:29:47 +0530
commit30b362edd01b271cc81855a1488dd56e5ceebc67 (patch)
treeb984f245a3bb6391df524b989474a2844cf7ee57
parenta7148777ec695ac8a8eaac2b28bf0bf76bffb832 (diff)
tests/intel/xe_pm: Validate vm-bind prefetch flag with suspend and resume
Test functionality of vm_bind prefetch with S&R. Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Sai Gowtham Ch <sai.gowtham.ch@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
-rw-r--r--tests/intel/xe_pm.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 6e5efc4fa..7ef0c0001 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -34,6 +34,7 @@
#define MAGIC_2 0xdeadbeef
#define USERPTR (0x1 << 0)
+#define PREFETCH (0x1 << 1)
typedef struct {
int fd_xe;
@@ -289,6 +290,7 @@ static void close_fw_handle(int sig)
* arg[2]:
*
* @userptr: userptr
+ * @prefetch: prefetch
*/
static void
test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
@@ -341,9 +343,15 @@ test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
data = aligned_alloc(xe_get_default_alignment(device.fd_xe), bo_size);
memset(data, 0, bo_size);
} else {
- bo = xe_bo_create(device.fd_xe, vm, bo_size,
- vram_if_possible(device.fd_xe, eci->gt_id),
- DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+ if (flags & PREFETCH)
+ bo = xe_bo_create(device.fd_xe, 0, bo_size,
+ all_memory_regions(device.fd_xe) |
+ vram_if_possible(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+ else
+ bo = xe_bo_create(device.fd_xe, vm, bo_size,
+ vram_if_possible(device.fd_xe, eci->gt_id),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
data = xe_bo_map(device.fd_xe, bo, bo_size);
}
@@ -361,6 +369,9 @@ test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
else
xe_vm_bind_userptr_async(device.fd_xe, vm, bind_exec_queues[0],
to_user_pointer(data), addr, bo_size, sync, 1);
+ if (flags & PREFETCH)
+ xe_vm_prefetch_async(device.fd_xe, vm, bind_exec_queues[0], 0, addr,
+ bo_size, sync, 1, 0);
if (check_rpm && runtime_usage_available(device.pci_xe))
igt_assert(igt_pm_get_runtime_usage(device.pci_xe) > rpm_usage);
@@ -617,6 +628,7 @@ igt_main
unsigned int flags;
} vm_op[] = {
{ "userptr", USERPTR },
+ { "prefetch", PREFETCH },
{ NULL },
};