[PATCH] tests/intel/xe_vm_create: Check negative cases for vm_create ioctl
Pravalika Gurram
pravalika.gurram at intel.com
Fri Dec 13 07:57:24 UTC 2024
Negative test to check vm_create ioctl returns expected error when
invalid flags, extensions, reserved param is used.
Signed-off-by: Pravalika Gurram <pravalika.gurram at intel.com>
---
tests/intel/xe_vm_create.c | 104 +++++++++++++++++++++++++++++++++++++
tests/meson.build | 1 +
2 files changed, 105 insertions(+)
create mode 100644 tests/intel/xe_vm_create.c
diff --git a/tests/intel/xe_vm_create.c b/tests/intel/xe_vm_create.c
new file mode 100644
index 000000000..2430e6739
--- /dev/null
+++ b/tests/intel/xe_vm_create.c
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include "igt.h"
+#include "xe_drm.h"
+
+/**
+ * TEST: Negative test for vm create ioctl
+ * Category: Core
+ * Mega feature: General Core features
+ * Sub-category: Synchronization
+ * Functionality: vm create
+ * Test category: negative test
+ */
+
+/**
+ * SUBTEST: invalid-flag-%s
+ * Description: function %arg[1] used in vm create IOCTL to make it fail
+ * Functionality: fault
+ *
+ * arg[1]:
+ * @xe_vm_create_fault: xe_vm_create_fault
+ * @xe_vm_create_scrach_fault: xe_vm_create_scrach_fault
+ * @xe_vm_create_scrach_fault_lr: xe_vm_create_scrach_fault_lr
+ */
+
+static void invalid_flag(int fd, __u32 flags)
+{
+ struct drm_xe_vm_create create = {
+ .flags = flags,
+ };
+
+ do_ioctl_err(fd, DRM_IOCTL_XE_VM_CREATE, &create, EINVAL);
+
+}
+
+/**
+ * SUBTEST: invalid-extensions
+ * Description: Check query with invalid extensions returns expected error code
+ *
+ * SUBTEST: invalid-reserved
+ * Description: Check query with invalid reserved value returns expected error code
+ */
+
+static void inavlid_extensions(int fd)
+{
+ struct drm_xe_vm_create create = {
+ .extensions = -1,
+ };
+
+ do_ioctl_err(fd, DRM_IOCTL_XE_VM_CREATE, &create, EINVAL);
+
+}
+
+static void inavlid_reserved(int fd)
+{
+ struct drm_xe_vm_create create = {
+ .reserved[0] = 0xffff,
+ };
+
+ do_ioctl_err(fd, DRM_IOCTL_XE_VM_CREATE, &create, EINVAL);
+
+}
+
+igt_main
+{
+ int fd;
+
+ const struct section {
+ const char *name;
+ __u32 flags;
+ } vm_create_flags_fail_functions[] = {
+ { "xe_vm_create_fault", DRM_XE_VM_CREATE_FLAG_FAULT_MODE },
+ { "xe_vm_create_scrach_fault",
+ DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE |
+ DRM_XE_VM_CREATE_FLAG_FAULT_MODE },
+ { "xe_vm_create_scrach_fault_lr",
+ ~(DRM_XE_VM_CREATE_FLAG_LR_MODE |
+ DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE |
+ DRM_XE_VM_CREATE_FLAG_FAULT_MODE) },
+ { }
+ };
+
+ igt_fixture
+ fd = drm_open_driver(DRIVER_XE);
+
+ for (const struct section *s = vm_create_flags_fail_functions; s->name; s++) {
+ igt_subtest_f("invalid-flag-%s", s->name)
+ invalid_flag(fd, s->flags);
+ }
+
+ igt_subtest("invalid-extensions")
+ inavlid_extensions(fd);
+
+ igt_subtest("invalid-reserved")
+ inavlid_reserved(fd);
+
+ igt_fixture {
+ drm_close_driver(fd);
+ }
+
+}
diff --git a/tests/meson.build b/tests/meson.build
index 2724c7a9a..fb9fc75d8 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -321,6 +321,7 @@ intel_xe_progs = [
'xe_sysfs_scheduler',
'xe_sysfs_timeslice_duration',
'xe_tlb',
+ 'xe_vm_create',
]
intel_xe_eudebug_progs = [
--
2.34.1
More information about the igt-dev
mailing list