[PATCH i-g-t] tests/intel/xe: Remove xe_uevent for now

Ghimiray, Himal Prasad himal.prasad.ghimiray at intel.com
Fri Dec 15 14:35:56 UTC 2023



> -----Original Message-----
> From: Aravind Iddamsetty <aravind.iddamsetty at linux.intel.com>
> Sent: 15 December 2023 15:42
> To: Dugast, Francois <francois.dugast at intel.com>; igt-
> dev at lists.freedesktop.org
> Cc: Vivi, Rodrigo <rodrigo.vivi at intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray at intel.com>; De Marchi, Lucas
> <lucas.demarchi at intel.com>
> Subject: Re: [PATCH i-g-t] tests/intel/xe: Remove xe_uevent for now
> 
> 
> 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',
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>

> >  	'xe_vm',
> >  	'xe_waitfence',
> >  	'xe_spin_batch',


More information about the igt-dev mailing list