[PATCH i-g-t] drm-uapi/xe: Remove unused flags
Rodrigo Vivi
rodrigo.vivi at intel.com
Tue Feb 20 21:34:52 UTC 2024
On Fri, Feb 16, 2024 at 02:18:47PM +0000, Francois Dugast wrote:
> This aligns with kernel commit ("drm/xe/uapi: Remove unused flags"). As
> a consequence, some tests which dependend on the removed flags are also
> removed. Also, ensure that the removed flag values are no longer
> accepted to prevent mismatch.
>
> Signed-off-by: Francois Dugast <francois.dugast at intel.com>
> ---
> include/drm-uapi/xe_drm.h | 20 -----
> tests/intel/xe_access_counter.c | 81 --------------------
> tests/intel/xe_exec_fault_mode.c | 60 ++-------------
> tests/intel/xe_exec_queue_property.c | 55 +++++++++++---
> tests/intel/xe_exec_reset.c | 110 +++------------------------
> tests/intel/xe_exec_threads.c | 13 +---
> tests/intel/xe_vm.c | 69 +++++++++++++++++
> tests/meson.build | 1 -
> 8 files changed, 132 insertions(+), 277 deletions(-)
> delete mode 100644 tests/intel/xe_access_counter.c
>
> diff --git a/include/drm-uapi/xe_drm.h b/include/drm-uapi/xe_drm.h
> index bacdca787..7394aae92 100644
> --- a/include/drm-uapi/xe_drm.h
> +++ b/include/drm-uapi/xe_drm.h
> @@ -831,11 +831,6 @@ struct drm_xe_vm_destroy {
> * - %DRM_XE_VM_BIND_OP_PREFETCH
> *
> * and the @flags can be:
> - * - %DRM_XE_VM_BIND_FLAG_READONLY
> - * - %DRM_XE_VM_BIND_FLAG_ASYNC
> - * - %DRM_XE_VM_BIND_FLAG_IMMEDIATE - Valid on a faulting VM only, do the
> - * MAP operation immediately rather than deferring the MAP to the page
> - * fault handler.
> * - %DRM_XE_VM_BIND_FLAG_NULL - When the NULL flag is set, the page
> * tables are setup with a special bit which indicates writes are
> * dropped and all reads return zero. In the future, the NULL flags
> @@ -928,8 +923,6 @@ struct drm_xe_vm_bind_op {
> /** @op: Bind operation to perform */
> __u32 op;
>
> -#define DRM_XE_VM_BIND_FLAG_READONLY (1 << 0)
> -#define DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1)
> #define DRM_XE_VM_BIND_FLAG_NULL (1 << 2)
> /** @flags: Bind flags */
> __u32 flags;
> @@ -1045,20 +1038,7 @@ struct drm_xe_exec_queue_create {
> #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0
> #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0
> #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1
> -#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT 2
> #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PERSISTENCE 3
> -#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_JOB_TIMEOUT 4
> -#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_ACC_TRIGGER 5
> -#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_ACC_NOTIFY 6
> -#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_ACC_GRANULARITY 7
> -/* Monitor 128KB contiguous region with 4K sub-granularity */
> -#define DRM_XE_ACC_GRANULARITY_128K 0
> -/* Monitor 2MB contiguous region with 64KB sub-granularity */
> -#define DRM_XE_ACC_GRANULARITY_2M 1
> -/* Monitor 16MB contiguous region with 512KB sub-granularity */
> -#define DRM_XE_ACC_GRANULARITY_16M 2
> -/* Monitor 64MB contiguous region with 2M sub-granularity */
> -#define DRM_XE_ACC_GRANULARITY_64M 3
>
> /** @extensions: Pointer to the first extension struct, if any */
> __u64 extensions;
> diff --git a/tests/intel/xe_access_counter.c b/tests/intel/xe_access_counter.c
> deleted file mode 100644
> index 91367f560..000000000
> --- a/tests/intel/xe_access_counter.c
> +++ /dev/null
> @@ -1,81 +0,0 @@
> -// SPDX-License-Identifier: MIT
> -/*
> - * Copyright © 2023 Intel Corporation
> - */
> -
> -/**
> - * TEST: Basic tests for access counter functionality
> - * Category: Software building block
> - * Run type: FULL
> - * Sub-category: access counter
> - * Functionality: access counter
> - * Test category: functionality test
> - * SUBTEST: invalid-param
> - * Description: Giving invalid granularity size parameter and checks for invalid error.
> - */
> -
> -#include "igt.h"
> -#include "lib/igt_syncobj.h"
> -#include "lib/intel_reg.h"
> -#include "xe_drm.h"
> -
> -#include "xe/xe_ioctl.h"
> -#include "xe/xe_query.h"
> -#include <string.h>
> -
> -#define SIZE_64M 3
> -igt_main
> -{
> - int fd;
> -
> - igt_fixture {
> - uint16_t devid;
> -
> - fd = drm_open_driver(DRIVER_XE);
> - devid = intel_get_drm_devid(fd);
> - igt_require(xe_supports_faults(fd));
> - igt_require(IS_PONTEVECCHIO(devid));
> - }
> -
> - igt_subtest("invalid-param") {
> - struct drm_xe_engine_class_instance instance = {
> - .engine_class = DRM_XE_ENGINE_CLASS_VM_BIND,
> - };
> -
> - int ret;
> - const int expected = -EINVAL;
> -
> - struct drm_xe_ext_set_property ext = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_ACC_GRANULARITY,
> - .value = SIZE_64M + 1,
> - };
> -
> - struct drm_xe_exec_queue_create create = {
> - .extensions = to_user_pointer(&ext),
> - .vm_id = xe_vm_create(fd, 0, 0),
> - .width = 1,
> - .num_placements = 1,
> - .instances = to_user_pointer(&instance),
> - };
> -
> - if (igt_ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &create)) {
> - ret = -errno;
> - errno = 0;
> - }
> -
> - igt_assert_eq(ret, expected);
> - ext.value = -1;
> -
> - if (igt_ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &create)) {
> - ret = -errno;
> - errno = 0;
> - }
> -
> - igt_assert_eq(ret, expected);
> - }
> -
> - igt_fixture
> - drm_close_driver(fd);
> -}
> diff --git a/tests/intel/xe_exec_fault_mode.c b/tests/intel/xe_exec_fault_mode.c
> index dae0e8ac3..20a7cf8fe 100644
> --- a/tests/intel/xe_exec_fault_mode.c
> +++ b/tests/intel/xe_exec_fault_mode.c
> @@ -29,9 +29,8 @@
> #define INVALIDATE (0x1 << 2)
> #define RACE (0x1 << 3)
> #define BIND_EXEC_QUEUE (0x1 << 4)
> -#define IMMEDIATE (0x1 << 5)
> -#define PREFETCH (0x1 << 6)
> -#define INVALID_FAULT (0x1 << 7)
> +#define PREFETCH (0x1 << 5)
> +#define INVALID_FAULT (0x1 << 6)
>
> /**
> * SUBTEST: once-%s
> @@ -66,21 +65,6 @@
> * bindexecqueue userptr invalidate
> * @bindexecqueue-userptr-invalidate-race:
> * bindexecqueue userptr invalidate race
> - * @basic-imm: basic imm
> - * @userptr-imm: userptr imm
> - * @rebind-imm: rebind imm
> - * @userptr-rebind-imm: userptr rebind imm
> - * @userptr-invalidate-imm: userptr invalidate imm
> - * @userptr-invalidate-race-imm: userptr invalidate race imm
> - * @bindexecqueue-imm: bindexecqueue imm
> - * @bindexecqueue-userptr-imm: bindexecqueue userptr imm
> - * @bindexecqueue-rebind-imm: bindexecqueue rebind imm
> - * @bindexecqueue-userptr-rebind-imm:
> - * bindexecqueue userptr rebind imm
> - * @bindexecqueue-userptr-invalidate-imm:
> - * bindexecqueue userptr invalidate imm
> - * @bindexecqueue-userptr-invalidate-race-imm:
> - * bindexecqueue userptr invalidate race imm
Please update ./tests/intel-ci/xe-fast-feedback.testlist to remove the tests that
are now gone.
> * @basic-prefetch: basic prefetch
> * @userptr-prefetch: userptr prefetch
> * @rebind-prefetch: rebind prefetch
> @@ -172,25 +156,13 @@ test_exec(int fd, struct drm_xe_engine_class_instance *eci,
> };
>
> sync[0].addr = to_user_pointer(&data[0].vm_sync);
> - if (flags & IMMEDIATE) {
> - if (bo)
> - xe_vm_bind_async_flags(fd, vm, bind_exec_queues[0], bo, 0,
> - addr, bo_size, sync, 1,
> - DRM_XE_VM_BIND_FLAG_IMMEDIATE);
> - else
> - xe_vm_bind_userptr_async_flags(fd, vm, bind_exec_queues[0],
> - to_user_pointer(data),
> - addr, bo_size, sync, 1,
> - DRM_XE_VM_BIND_FLAG_IMMEDIATE);
> - } else {
> - if (bo)
> - xe_vm_bind_async(fd, vm, bind_exec_queues[0], bo, 0, addr,
> + if (bo)
> + xe_vm_bind_async(fd, vm, bind_exec_queues[0], bo, 0, addr,
> + bo_size, sync, 1);
> + else
> + xe_vm_bind_userptr_async(fd, vm, bind_exec_queues[0],
> + to_user_pointer(data), addr,
> bo_size, sync, 1);
> - else
> - xe_vm_bind_userptr_async(fd, vm, bind_exec_queues[0],
> - to_user_pointer(data), addr,
> - bo_size, sync, 1);
> - }
>
> #define ONE_SEC MS_TO_NS(1000)
> xe_wait_ufence(fd, &data[0].vm_sync, USER_FENCE_VALUE,
> @@ -343,22 +315,6 @@ igt_main
> INVALIDATE },
> { "bindexecqueue-userptr-invalidate-race", BIND_EXEC_QUEUE | USERPTR |
> INVALIDATE | RACE },
> - { "basic-imm", IMMEDIATE },
> - { "userptr-imm", IMMEDIATE | USERPTR },
> - { "rebind-imm", IMMEDIATE | REBIND },
> - { "userptr-rebind-imm", IMMEDIATE | USERPTR | REBIND },
> - { "userptr-invalidate-imm", IMMEDIATE | USERPTR | INVALIDATE },
> - { "userptr-invalidate-race-imm", IMMEDIATE | USERPTR |
> - INVALIDATE | RACE },
> - { "bindexecqueue-imm", IMMEDIATE | BIND_EXEC_QUEUE },
> - { "bindexecqueue-userptr-imm", IMMEDIATE | BIND_EXEC_QUEUE | USERPTR },
> - { "bindexecqueue-rebind-imm", IMMEDIATE | BIND_EXEC_QUEUE | REBIND },
> - { "bindexecqueue-userptr-rebind-imm", IMMEDIATE | BIND_EXEC_QUEUE |
> - USERPTR | REBIND },
> - { "bindexecqueue-userptr-invalidate-imm", IMMEDIATE | BIND_EXEC_QUEUE |
> - USERPTR | INVALIDATE },
> - { "bindexecqueue-userptr-invalidate-race-imm", IMMEDIATE |
> - BIND_EXEC_QUEUE | USERPTR | INVALIDATE | RACE },
> { "basic-prefetch", PREFETCH },
> { "userptr-prefetch", PREFETCH | USERPTR },
> { "rebind-prefetch", PREFETCH | REBIND },
> diff --git a/tests/intel/xe_exec_queue_property.c b/tests/intel/xe_exec_queue_property.c
> index 53e08fb0e..bc30e8803 100644
> --- a/tests/intel/xe_exec_queue_property.c
> +++ b/tests/intel/xe_exec_queue_property.c
> @@ -18,9 +18,7 @@
> *
> * arg[1]:
> *
> - * @preempt_timeout_us: preempt timeout us
> * @timeslice_duration_us: timeslice duration us
> - * @job_timeout_ms: job timeout ms
> */
>
> #include <dirent.h>
> @@ -42,11 +40,7 @@
>
> static int get_property_name(const char *property)
> {
> - if (strstr(property, "preempt"))
> - return DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT;
> - else if (strstr(property, "job_timeout"))
> - return DRM_XE_EXEC_QUEUE_SET_PROPERTY_JOB_TIMEOUT;
> - else if (strstr(property, "timeslice"))
> + if (strstr(property, "timeslice"))
> return DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE;
> else
> return -1;
> @@ -174,6 +168,46 @@ static void basic_get_property(int xe)
> xe_vm_destroy(xe, vm);
> }
>
> +/**
> + * SUBTEST: invalid-property
> + * Description: Ensure only valid values for property are accepted.
> + * Test category: functionality test
> + */
> +static void invalid_property(int xe)
> +{
> + uint32_t valid_property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY;
> + struct drm_xe_engine_class_instance instance = {
> + .engine_class = DRM_XE_ENGINE_CLASS_VM_BIND,
> + };
> + struct drm_xe_ext_set_property ext = {
> + .base.next_extension = 0,
> + .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> + .property = valid_property,
> + .value = 1,
> + };
> +
> + struct drm_xe_exec_queue_create create = {
> + .extensions = to_user_pointer(&ext),
> + .width = 1,
> + .num_placements = 1,
> + .instances = to_user_pointer(&instance),
> + .vm_id = xe_vm_create(xe, 0, 0),
> + };
> + /* Correct value should pass */
> + igt_assert_eq(igt_ioctl(xe, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &create), 0);
> +
> + for (int i = 2; i < 16; i++ ) {
> + if (i == 3)
hmm... this is tricky because it will break on the first property we re-introduce.
what about making this test part of
./tests/intel-ci/xe-fast-feedback.testlist as well so we can catch this soon.
Probably also good a comment about this around here or in the doc above.
With the modifications to the fast-feedback, feel free to use
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> + continue;
> + ext.property = i;
> + do_ioctl_err(xe, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &create, EINVAL);
> + }
> +
> + /* Correct value should still pass */
> + ext.property = valid_property;
> + igt_assert_eq(igt_ioctl(xe, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &create), 0);
> +}
> +
> igt_main
> {
> static const struct {
> @@ -181,9 +215,7 @@ igt_main
> void (*fn)(int, int, const char **);
> } tests[] = {{"property-min-max", test_property_min_max}, {} };
>
> - const char *property[][3] = { {"preempt_timeout_us", "preempt_timeout_min", "preempt_timeout_max"},
> - {"timeslice_duration_us", "timeslice_duration_min", "timeslice_duration_max"},
> - {"job_timeout_ms", "job_timeout_min", "job_timeout_max"},
> + const char *property[][3] = { {"timeslice_duration_us", "timeslice_duration_min", "timeslice_duration_max"},
> };
> int count = sizeof(property) / sizeof(property[0]);
> int sys_fd;
> @@ -257,6 +289,9 @@ igt_main
> igt_subtest("basic-get-property")
> basic_get_property(xe);
>
> + igt_subtest("invalid-property")
> + invalid_property(xe);
> +
> igt_fixture {
> xe_device_put(xe);
> drm_close_driver(xe);
> diff --git a/tests/intel/xe_exec_reset.c b/tests/intel/xe_exec_reset.c
> index a9206d7d2..a39e5860e 100644
> --- a/tests/intel/xe_exec_reset.c
> +++ b/tests/intel/xe_exec_reset.c
> @@ -93,22 +93,14 @@ static void test_spin(int fd, struct drm_xe_engine_class_instance *eci)
>
> #define MAX_N_EXECQUEUES 16
> #define MAX_INSTANCE 9
> -#define CANCEL (0x1 << 0)
> -#define EXEC_QUEUE_RESET (0x1 << 1)
> -#define GT_RESET (0x1 << 2)
> -#define CLOSE_FD (0x1 << 3)
> -#define CLOSE_EXEC_QUEUES (0x1 << 4)
> -#define VIRTUAL (0x1 << 5)
> -#define PARALLEL (0x1 << 6)
> -#define CAT_ERROR (0x1 << 7)
> +#define GT_RESET (0x1 << 0)
> +#define CLOSE_FD (0x1 << 1)
> +#define CLOSE_EXEC_QUEUES (0x1 << 2)
> +#define VIRTUAL (0x1 << 3)
> +#define PARALLEL (0x1 << 4)
> +#define CAT_ERROR (0x1 << 5)
>
> /**
> - * SUBTEST: %s-cancel
> - * Description: Test %arg[1] cancel
> - *
> - * SUBTEST: %s-execqueue-reset
> - * Description: Test %arg[1] exec_queue reset
> - *
> * SUBTEST: %s-cat-error
> * Description: Test %arg[1] cat error
> *
> @@ -185,18 +177,6 @@ test_balancer(int fd, int gt, int class, int n_exec_queues, int n_execs,
> data = xe_bo_map(fd, bo, bo_size);
>
> for (i = 0; i < n_exec_queues; i++) {
> - struct drm_xe_ext_set_property job_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_JOB_TIMEOUT,
> - .value = 50,
> - };
> - struct drm_xe_ext_set_property preempt_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT,
> - .value = 1000,
> - };
> struct drm_xe_exec_queue_create create = {
> .vm_id = vm,
> .width = flags & PARALLEL ? num_placements : 1,
> @@ -204,11 +184,6 @@ test_balancer(int fd, int gt, int class, int n_exec_queues, int n_execs,
> .instances = to_user_pointer(eci),
> };
>
> - if (flags & CANCEL)
> - create.extensions = to_user_pointer(&job_timeout);
> - else if (flags & EXEC_QUEUE_RESET)
> - create.extensions = to_user_pointer(&preempt_timeout);
> -
> igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE,
> &create), 0);
> exec_queues[i] = create.exec_queue_id;
> @@ -219,8 +194,7 @@ test_balancer(int fd, int gt, int class, int n_exec_queues, int n_execs,
> sync[0].handle = syncobj_create(fd, 0);
> xe_vm_bind_async(fd, vm, 0, bo, 0, addr, bo_size, sync, 1);
>
> - if (flags & VIRTUAL && (flags & CAT_ERROR || flags & EXEC_QUEUE_RESET ||
> - flags & GT_RESET))
> + if (flags & VIRTUAL && (flags & CAT_ERROR || flags & GT_RESET))
> bad_batches = num_placements;
>
> for (i = 0; i < n_execs; i++) {
> @@ -309,12 +283,6 @@ test_balancer(int fd, int gt, int class, int n_exec_queues, int n_execs,
> }
>
> /**
> - * SUBTEST: cancel
> - * Description: Test cancel
> - *
> - * SUBTEST: execqueue-reset
> - * Description: Test exec_queue reset
> - *
> * SUBTEST: cat-error
> * Description: Test cat error
> *
> @@ -374,26 +342,7 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
> data = xe_bo_map(fd, bo, bo_size);
>
> for (i = 0; i < n_exec_queues; i++) {
> - struct drm_xe_ext_set_property job_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_JOB_TIMEOUT,
> - .value = 50,
> - };
> - struct drm_xe_ext_set_property preempt_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT,
> - .value = 1000,
> - };
> - uint64_t ext = 0;
> -
> - if (flags & CANCEL)
> - ext = to_user_pointer(&job_timeout);
> - else if (flags & EXEC_QUEUE_RESET)
> - ext = to_user_pointer(&preempt_timeout);
> -
> - exec_queues[i] = xe_exec_queue_create(fd, vm, eci, ext);
> + exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> syncobjs[i] = syncobj_create(fd, 0);
> };
>
> @@ -478,9 +427,6 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
> }
>
> /**
> - * SUBTEST: cm-execqueue-reset
> - * Description: Test compute mode exec_queue reset
> - *
> * SUBTEST: cm-cat-error
> * Description: Test compute mode cat-error
> *
> @@ -543,20 +489,7 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
> memset(data, 0, bo_size);
>
> for (i = 0; i < n_exec_queues; i++) {
> - struct drm_xe_ext_set_property preempt_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT,
> - .value = 1000,
> - };
> - uint64_t ext = 0;
> -
> - if (flags & EXEC_QUEUE_RESET)
> - ext = to_user_pointer(&preempt_timeout);
> - else
> - ext = 0;
> -
> - exec_queues[i] = xe_exec_queue_create(fd, vm, eci, ext);
> + exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> };
>
> sync[0].addr = to_user_pointer(&data[0].vm_sync);
> @@ -803,14 +736,6 @@ igt_main
> xe_for_each_engine(fd, hwe)
> test_spin(fd, hwe);
>
> - igt_subtest("cancel")
> - xe_for_each_engine(fd, hwe)
> - test_legacy_mode(fd, hwe, 1, 1, CANCEL);
> -
> - igt_subtest("execqueue-reset")
> - xe_for_each_engine(fd, hwe)
> - test_legacy_mode(fd, hwe, 2, 2, EXEC_QUEUE_RESET);
> -
> igt_subtest("cat-error")
> xe_for_each_engine(fd, hwe)
> test_legacy_mode(fd, hwe, 2, 2, CAT_ERROR);
> @@ -832,10 +757,6 @@ igt_main
> test_legacy_mode(-1, hwe, 16, 256, CLOSE_FD |
> CLOSE_EXEC_QUEUES);
>
> - igt_subtest("cm-execqueue-reset")
> - xe_for_each_engine(fd, hwe)
> - test_compute_mode(fd, hwe, 2, 2, EXEC_QUEUE_RESET);
> -
> igt_subtest("cm-cat-error")
> xe_for_each_engine(fd, hwe)
> test_compute_mode(fd, hwe, 2, 2, CAT_ERROR);
> @@ -858,19 +779,6 @@ igt_main
> CLOSE_EXEC_QUEUES);
>
> for (const struct section *s = sections; s->name; s++) {
> - igt_subtest_f("%s-cancel", s->name)
> - xe_for_each_gt(fd, gt)
> - xe_for_each_engine_class(class)
> - test_balancer(fd, gt, class, 1, 1,
> - CANCEL | s->flags);
> -
> - igt_subtest_f("%s-execqueue-reset", s->name)
> - xe_for_each_gt(fd, gt)
> - xe_for_each_engine_class(class)
> - test_balancer(fd, gt, class, MAX_INSTANCE + 1,
> - MAX_INSTANCE + 1,
> - EXEC_QUEUE_RESET | s->flags);
> -
> igt_subtest_f("%s-cat-error", s->name)
> xe_for_each_gt(fd, gt)
> xe_for_each_engine_class(class)
> diff --git a/tests/intel/xe_exec_threads.c b/tests/intel/xe_exec_threads.c
> index 1b2623045..55907e2b3 100644
> --- a/tests/intel/xe_exec_threads.c
> +++ b/tests/intel/xe_exec_threads.c
> @@ -518,18 +518,7 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
>
> memset(sync_all, 0, sizeof(sync_all));
> for (i = 0; i < n_exec_queues; i++) {
> - struct drm_xe_ext_set_property preempt_timeout = {
> - .base.next_extension = 0,
> - .base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> - .property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_PREEMPTION_TIMEOUT,
> - .value = 1000,
> - };
> - uint64_t ext = to_user_pointer(&preempt_timeout);
> -
> - if (flags & HANG && i == hang_exec_queue)
> - exec_queues[i] = xe_exec_queue_create(fd, vm, eci, ext);
> - else
> - exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> + exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> if (flags & BIND_EXEC_QUEUE)
> bind_exec_queues[i] = xe_bind_exec_queue_create(fd, vm,
> 0);
> diff --git a/tests/intel/xe_vm.c b/tests/intel/xe_vm.c
> index fe667e64d..7c061c497 100644
> --- a/tests/intel/xe_vm.c
> +++ b/tests/intel/xe_vm.c
> @@ -1761,6 +1761,72 @@ test_mmap_style_bind(int fd, struct drm_xe_engine_class_instance *eci,
> xe_vm_destroy(fd, vm);
> }
>
> +/**
> + * SUBTEST: bind-flag-invalid
> + * Description:
> + * Ensure invalid bind flags are rejected.
> + * Functionality: bind
> + * Test category: negative test
> + */
> +static void bind_flag_invalid(int fd)
> +{
> + uint32_t bo, bo_size = xe_get_default_alignment(fd);
> + uint64_t addr = 0x1a0000;
> + uint32_t vm;
> + struct drm_xe_vm_bind bind;
> + struct drm_xe_sync sync[1] = {
> + { .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
> + };
> +
> + vm = xe_vm_create(fd, 0, 0);
> + bo = xe_bo_create(fd, vm, bo_size, vram_if_possible(fd, 0), 0);
> + sync[0].handle = syncobj_create(fd, 0);
> +
> + memset(&bind, 0, sizeof(bind));
> + bind.vm_id = vm;
> + bind.num_binds = 1;
> + bind.bind.obj = bo;
> + bind.bind.range = bo_size;
> + bind.bind.addr = addr;
> + bind.bind.op = DRM_XE_VM_BIND_OP_MAP;
> + bind.num_syncs = 1;
> + bind.syncs = (uintptr_t)sync;
> +
> + /* Using valid flags should work */
> + bind.bind.flags = 0;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
> + syncobj_reset(fd, &sync[0].handle, 1);
> +
> + bind.bind.flags = DRM_XE_VM_BIND_FLAG_NULL;
> + bind.bind.obj = 0;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
> + syncobj_reset(fd, &sync[0].handle, 1);
> + bind.bind.obj = bo;
> +
> + /* Using invalid flags should not work */
> + bind.bind.flags = 1 << 0;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + do_ioctl_err(fd, DRM_IOCTL_XE_VM_BIND, &bind, EINVAL);
> +
> + bind.bind.flags = 1 << 1;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + do_ioctl_err(fd, DRM_IOCTL_XE_VM_BIND, &bind, EINVAL);
> +
> + bind.bind.flags = 1 << 3;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + do_ioctl_err(fd, DRM_IOCTL_XE_VM_BIND, &bind, EINVAL);
> +
> + /* Using valid flags should still work */
> + bind.bind.flags = 0;
> + igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);
> + igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
> +
> + syncobj_destroy(fd, sync[0].handle);
> + xe_vm_destroy(fd, vm);
> +}
> +
> igt_main
> {
> struct drm_xe_engine_class_instance *hwe, *hwe_non_copy = NULL;
> @@ -1892,6 +1958,9 @@ igt_main
> igt_subtest("userptr-invalid")
> userptr_invalid(fd);
>
> + igt_subtest("bind-flag-invalid")
> + bind_flag_invalid(fd);
> +
> igt_subtest("shared-pte-page")
> xe_for_each_engine(fd, hwe)
> shared_pte_page(fd, hwe, 4,
> diff --git a/tests/meson.build b/tests/meson.build
> index d107d16fa..02cbc3780 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -274,7 +274,6 @@ intel_kms_progs = [
> ]
>
> intel_xe_progs = [
> - 'xe_access_counter',
> 'xe_ccs',
> 'xe_create',
> 'xe_compute',
> --
> 2.34.1
>
More information about the igt-dev
mailing list