[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