[PATCH i-g-t 3/4] tests/intel/xe_fault_injection: Add helper functions to inject fault with specific budget parameter.
Satyanarayana K V P
satyanarayana.k.v.p at intel.com
Fri Feb 7 07:29:01 UTC 2025
As per the current implementation, the fault is injected on the first call
of the error injection function. Introduce an environment variable
IGT_FAULT_INJECT_ITERATION using which, an error can be injected at
specific function call. If the environment is not exported, an error will
be injected in every possible function call starting from first up to the
max number of iteration defined by INJECT_ITERATIONS, currently hardcoded
as 100.
Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
Cc: Michał Wajdeczko <michal.wajdeczko at intel.com>
Cc: Francois Dugast <francois.dugast at intel.com>
---
tests/intel/xe_fault_injection.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/tests/intel/xe_fault_injection.c b/tests/intel/xe_fault_injection.c
index a4252d028..9432828c2 100644
--- a/tests/intel/xe_fault_injection.c
+++ b/tests/intel/xe_fault_injection.c
@@ -25,6 +25,7 @@
#define INJECT_ERRNO -ENOMEM
#define BO_ADDR 0x1a0000
#define BO_SIZE (1024*1024)
+#define INJECT_ITERATIONS 100
enum injection_list_action {
INJECTION_LIST_ADD,
@@ -42,6 +43,21 @@ struct fault_injection_params {
unsigned int space;
};
+static int get_fault_inject_iter(void)
+{
+ /**
+ * Introduce a new env variable IGT_FAULT_INJECT_ITERATION.
+ * When unset test will run for INJECT_ITERATIONS iterations.
+ * When set to <=0 or malformed - same as unset.
+ * When set to >0 it will run single n-th iteration only.
+ */
+
+ const char *env = getenv("IGT_FAULT_INJECT_ITERATION");
+
+ /* Return 0 if not exported / -ve value */
+ return env ? (atoi(env) > 0 ? atoi(env) : 0) : 0;
+}
+
static int fail_function_open(void)
{
int debugfs_fail_function_dir_fd;
@@ -211,8 +227,8 @@ inject_fault_probe(int fd, char pci_slot[], const char function_name[])
injection_list_do(INJECTION_LIST_ADD, function_name);
set_retval(function_name, INJECT_ERRNO);
xe_sysfs_driver_do(fd, pci_slot, XE_SYSFS_DRIVER_TRY_BIND);
- igt_assert_eq(-errno, INJECT_ERRNO);
injection_list_do(INJECTION_LIST_REMOVE, function_name);
+ xe_sysfs_driver_do(fd, pci_slot, XE_SYSFS_DRIVER_TRY_UNBIND);
}
static int
--
2.35.3
More information about the igt-dev
mailing list