[PATCH i-g-t] tests/intel/xe: Remove xe_uevent for now
Aravind Iddamsetty
aravind.iddamsetty at linux.intel.com
Fri Dec 15 10:12:16 UTC 2023
On 12/15/23 15:20, Francois Dugast wrote:
> From: Rodrigo Vivi <rodrigo.vivi at intel.com>
>
> This kernel uevent is getting removed for now. It will come
> back later with a better future proof name.
>
> v2: Align with kernel commit ("drm/xe/uapi: Remove reset uevent \
> for now") (Francois Dugast)
with the test being dropped we should drop the corresponding debugfs
interface introduced to test this feature.
14a663d83da2 drm/xe: Introduce fault injection for gt reset.
Thanks,
Aravind.
>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
> Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> Cc: Francois Dugast <francois.dugast at intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty at linux.intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Signed-off-by: Francois Dugast <francois.dugast at intel.com>
> ---
> include/drm-uapi/xe_drm.h | 11 ----
> tests/intel/xe_uevent.c | 129 --------------------------------------
> tests/meson.build | 1 -
> 3 files changed, 141 deletions(-)
> delete mode 100644 tests/intel/xe_uevent.c
>
> diff --git a/include/drm-uapi/xe_drm.h b/include/drm-uapi/xe_drm.h
> index ccf577bc0..9e29bbd70 100644
> --- a/include/drm-uapi/xe_drm.h
> +++ b/include/drm-uapi/xe_drm.h
> @@ -20,7 +20,6 @@ extern "C" {
> * 2. Extension definition and helper structs
> * 3. IOCTL's Query structs in the order of the Query's entries.
> * 4. The rest of IOCTL structs in the order of IOCTL declaration.
> - * 5. uEvents
> */
>
> /**
> @@ -1341,16 +1340,6 @@ struct drm_xe_wait_user_fence {
> __u64 reserved[2];
> };
>
> -/**
> - * DOC: uevent generated by xe on it's pci node.
> - *
> - * DRM_XE_RESET_FAILED_UEVENT - Event is generated when attempt to reset gt
> - * fails. The value supplied with the event is always "NEEDS_RESET".
> - * Additional information supplied is tile id and gt id of the gt unit for
> - * which reset has failed.
> - */
> -#define DRM_XE_RESET_FAILED_UEVENT "DEVICE_STATUS"
> -
> #if defined(__cplusplus)
> }
> #endif
> diff --git a/tests/intel/xe_uevent.c b/tests/intel/xe_uevent.c
> deleted file mode 100644
> index d30931714..000000000
> --- a/tests/intel/xe_uevent.c
> +++ /dev/null
> @@ -1,129 +0,0 @@
> -// SPDX-License-Identifier: MIT
> -/*
> - * Copyright © 2023 Intel Corporation
> - */
> -
> -/**
> - * TEST: cause fake gt reset failure and listen uevent from KMD
> - * Category: Software building block
> - * SUBTEST:fake_reset_uevent_listener
> - * Functionality: uevent
> - * Sub-category: GT reset failure uevent
> - * Test category: functionality test
> - * Description:
> - * Test creates uevent listener and causes fake reset failure for gt0
> - * and returns success if uevent is sent by driver and listened by listener.
> - */
> -
> -#include <libudev.h>
> -#include <string.h>
> -#include <sys/stat.h>
> -
> -#include "igt.h"
> -
> -#include "xe_drm.h"
> -#include "xe/xe_ioctl.h"
> -#include "xe/xe_query.h"
> -
> -static void xe_fail_gt_reset(int fd, int gt)
> -{
> - igt_debugfs_write(fd, "fail_gt_reset/probability", "100");
> - igt_debugfs_write(fd, "fail_gt_reset/times", "2");
> -
> - xe_force_gt_reset(fd, gt);
> -}
> -
> -static bool listen_reset_fail_uevent(struct udev_device *device, const char *source, int gt_id)
> -{
> - struct udev_list_entry *list_entry;
> - bool dev_needs_reset = false;
> - bool tile_id_passed = false;
> - bool gt_id_matches = false;
> - const char *name, *val;
> -
> - udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(device))
> - {
> - name = udev_list_entry_get_name(list_entry);
> - val = udev_list_entry_get_value(list_entry);
> -
> - if (!strcmp(name, "DEVICE_STATUS") && !strcmp(val, "NEEDS_RESET")) {
> - igt_debug("%s = %s\n", name, val);
> - dev_needs_reset = true;
> - continue;
> - }
> -
> - if (!strcmp(name, "TILE_ID")) {
> - igt_debug("%s = %s\n", name, val);
> - tile_id_passed = true;
> - continue;
> - }
> -
> - if (!strcmp(name, "GT_ID") && (atoi(val) == gt_id)) {
> - igt_debug("%s = %s\n", name, val);
> - gt_id_matches = true;
> - continue;
> - }
> - }
> -
> - return (dev_needs_reset && tile_id_passed && gt_id_matches);
> -}
> -
> -static void fake_reset_uevent_listener(int fd, int gt_id)
> -{
> - struct udev *udev;
> - struct udev_device *dev;
> - struct udev_monitor *mon;
> - bool event_received = false;
> - bool event_sent = false;
> - const u32 listener_timeout = 5;
> -
> - /* create udev object */
> - udev = udev_new();
> - if (!udev)
> - igt_assert_f(false, "New udev object creation failed");
> -
> - mon = udev_monitor_new_from_netlink(udev, "kernel");
> - udev_monitor_filter_add_match_subsystem_devtype(mon, "pci", NULL);
> - udev_monitor_enable_receiving(mon);
> - igt_until_timeout(listener_timeout) {
> - if (event_sent) {
> - dev = udev_monitor_receive_device(mon);
> - if (dev) {
> - event_received = listen_reset_fail_uevent(dev, "kernel", gt_id);
> - udev_device_unref(dev);
> - }
> - } else {
> - event_sent = true;
> - xe_fail_gt_reset(fd, gt_id);
> - }
> -
> - if (event_received)
> - break;
> - }
> -
> - udev_unref(udev);
> - igt_assert_f(event_received, "Event not received");
> -}
> -
> -igt_main
> -{
> - int fd;
> - int gt;
> - const u32 settle_xe_load_uevents = 50000;
> -
> - igt_fixture
> - fd = drm_open_driver(DRIVER_XE);
> -
> - /* Ensures uevents triggered in case of driver
> - * load are settled down.
> - */
> - usleep(settle_xe_load_uevents);
> -
> - igt_subtest("fake_reset_uevent_listener")
> - xe_for_each_gt(fd, gt) {
> - fake_reset_uevent_listener(fd, gt);
> - }
> -
> - igt_fixture
> - drm_close_driver(fd);
> -}
> diff --git a/tests/meson.build b/tests/meson.build
> index a5f5c143c..6dbe45e93 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -307,7 +307,6 @@ intel_xe_progs = [
> 'xe_pm_residency',
> 'xe_prime_self_import',
> 'xe_query',
> - 'xe_uevent',
> 'xe_vm',
> 'xe_waitfence',
> 'xe_spin_batch',
More information about the igt-dev
mailing list