From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6107EC5B555 for ; Wed, 4 Jun 2025 17:06:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A45310E767; Wed, 4 Jun 2025 17:06:23 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ct0pc2Se"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id EAA9610E724 for ; Wed, 4 Jun 2025 17:06:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1749056782; x=1780592782; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=lejLNflD/Tnh+XEJBzX+B25CQxtTGys+30IISR/4hcY=; b=ct0pc2SeGRHxuQaM7O5r/mQaDNUZkys0/pa2OAMrg7CS+kQdwp4PCGUN /xJAWQGt34+8JFzAGotGcWshWXkmYPAbBRUiAcRXxhNIXxOCFHkbOpt8h 7KP1xlS1n9l6rtelQrirXtL4ekImEQ1NmISFn8OGo0PsgrMywAGCG3O2d 1XbtlUC4JrocLvfe7YGiFIxRGy8KHkBPbEksU3arXeNOLbBWinwySRs4q dfcj5uBh9xsI8CaxEub986jPB5qV3hF/GmWiANVVPjjoWQuENCGWw3a29 EAvoRodfyOElqEJRWkvQwwxBWs0h9C24l0H5j63/6qU/bYGXyzvPyMzr7 A==; X-CSE-ConnectionGUID: hGksMILLTq+90QUt9sRdmw== X-CSE-MsgGUID: 6LJCV0SIRvqU/L7B4QTAXg== X-IronPort-AV: E=McAfee;i="6800,10657,11454"; a="61417952" X-IronPort-AV: E=Sophos;i="6.16,209,1744095600"; d="scan'208";a="61417952" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2025 10:06:22 -0700 X-CSE-ConnectionGUID: Y5xEyXo8SceQdaXhyfORlQ== X-CSE-MsgGUID: KflIpiYtTpedDXk77Mm7Zg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,209,1744095600"; d="scan'208";a="182442376" Received: from dut4041ptlh.fm.intel.com ([10.105.10.101]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2025 10:06:21 -0700 From: Jonathan Cavitt To: igt-dev@lists.freedesktop.org Cc: jonathan.cavitt@intel.com, saurabhg.gupta@intel.com, alex.zuo@intel.com, satyanarayana.k.v.p@intel.com, michal.wajdeczko@intel.com, daniele.ceraolospurio@intel.com, lucas.demarchi@intel.com, francois.dugast@intel.com, rodrigo.vivi@intel.com, john.c.harrison@intel.com, kamil.konieczny@linux.intel.com Subject: [PATCH v3] tests/intel/xe_fault_injection: Ignore all errors while injecting fault Date: Wed, 4 Jun 2025 17:06:20 +0000 Message-ID: <20250604170621.83132-1-jonathan.cavitt@intel.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" From: Satyanarayana K V P Currently, numerous fault messages have been included in the dmesg ignore list, and this list continues to expand. Each time a new fault injection point is introduced or a new feature is activated, additional fault messages appear, making it cumbersome to manage the dmesg ignore list. However, we can safely assert that all dmesg reports that contain *ERROR* in their message can be ignored, so add them to the dmesg ignore list. This unfortunately does not include the device probe error itself, so that must be added separately. While we're here, we should also assert that any errors we see are only coming from the target PCI device. v2: - Only ignore error-level dmesg reports (or, at least, reports with *ERROR* in them), and device probe failues - Add PCI data to regex (Michal) v3: (Michal) - Revert name change - Add change log - Remove fixes tag from commit - Rename ignore_faults_in_dmesg to igt_ignore_dmesg_errors_from_dut, and move to lib/igt_core.c - Minor code fixes v4: - Return ignore_faults_in_dmesg to tests/intel/xe_fault_injection.c, but keep it renamed to ignore_dmesg_errors_from_dut (Kamil) Signed-off-by: Satyanarayana K V P Signed-off-by: Jonathan Cavitt Suggested-by: Michal Wajdeczko Suggested-by: Daniele Ceraolo Spurio Suggested-by: Lucas De Marchi Cc: Francois Dugast Cc: Rodrigo Vivi Cc: John Harrison Cc: Kamil Konieczny --- tests/intel/xe_fault_injection.c | 39 ++++++++++++-------------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/tests/intel/xe_fault_injection.c b/tests/intel/xe_fault_injection.c index 9fe6bfe351..14aaeebf5e 100644 --- a/tests/intel/xe_fault_injection.c +++ b/tests/intel/xe_fault_injection.c @@ -64,28 +64,19 @@ static int fail_function_open(void) return debugfs_fail_function_dir_fd; } -static bool function_is_part_of_guc(const char function_name[]) +static void ignore_dmesg_errors_from_dut(int fd) { - return strstr(function_name, "_guc_") != NULL || - strstr(function_name, "_uc_") != NULL || - strstr(function_name, "_wopcm_") != NULL; -} - -static void ignore_faults_in_dmesg(const char function_name[]) -{ - /* Driver probe is expected to fail in all cases, so ignore in igt_runner */ - char regex[1024] = "probe with driver xe failed with error -12"; - /* - * If GuC module fault is injected, GuC is expected to fail, - * so also ignore GuC init failures in igt_runner. + * Driver probe is expected to fail in all cases, so ignore in igt_runner. + * Additionally, all error-level reports are expected, so ignore those as well. */ - if (function_is_part_of_guc(function_name)) { - strcat(regex, "|GT[0-9a-fA-F]*: GuC init failed with -ENOMEM"); - strcat(regex, "|GT[0-9a-fA-F]*: Failed to initialize uC .-ENOMEM"); - strcat(regex, "|GT[0-9a-fA-F]*: Failed to enable GuC CT .-ENOMEM"); - strcat(regex, "|GT[0-9a-fA-F]*: GuC PC query task state failed: -ENOMEM"); - } + static const char *store = "probe with driver xe failed with error|\\*ERROR\\*"; + char pci_slot[NAME_MAX]; + char regex[1024]; + + /* Only block dmesg reports that target the pci slot of the given fd */ + igt_device_get_pci_slot_name(fd, pci_slot); + snprintf(regex, sizeof(regex), "%s:.*(%s)", pci_slot, store); igt_emit_ignore_dmesg_regex(regex); } @@ -234,7 +225,7 @@ inject_fault_probe(int fd, char pci_slot[], const char function_name[]) igt_info("Injecting error \"%s\" (%d) in function \"%s\"\n", strerror(-INJECT_ERRNO), INJECT_ERRNO, function_name); - ignore_faults_in_dmesg(function_name); + ignore_dmesg_errors_from_dut(fd); injection_list_add(function_name); set_retval(function_name, INJECT_ERRNO); @@ -299,7 +290,7 @@ exec_queue_create_fail(int fd, struct drm_xe_engine_class_instance *instance, igt_assert_eq(__xe_exec_queue_create(fd, vm, 1, 1, instance, 0, &exec_queue_id), 0); xe_exec_queue_destroy(fd, exec_queue_id); - ignore_faults_in_dmesg(function_name); + ignore_dmesg_errors_from_dut(fd); injection_list_add(function_name); set_retval(function_name, INJECT_ERRNO); igt_assert(__xe_exec_queue_create(fd, vm, 1, 1, instance, 0, &exec_queue_id) != 0); @@ -334,7 +325,7 @@ vm_create_fail(int fd, const char function_name[], unsigned int flags) { igt_assert_eq(simple_vm_create(fd, flags), 0); - ignore_faults_in_dmesg(function_name); + ignore_dmesg_errors_from_dut(fd); injection_list_add(function_name); set_retval(function_name, INJECT_ERRNO); igt_assert(simple_vm_create(fd, flags) != 0); @@ -397,7 +388,7 @@ vm_bind_fail(int fd, const char function_name[]) igt_assert_eq(simple_vm_bind(fd, vm), 0); - ignore_faults_in_dmesg(function_name); + ignore_dmesg_errors_from_dut(fd); injection_list_add(function_name); set_retval(function_name, INJECT_ERRNO); igt_assert(simple_vm_bind(fd, vm) != 0); @@ -445,7 +436,7 @@ oa_add_config_fail(int fd, int sysfs, int devid, const char function_name[]) igt_assert(igt_sysfs_scanf(sysfs, path, "%" PRIu64, &config_id) == 1); igt_assert_eq(intel_xe_perf_ioctl(fd, DRM_XE_OBSERVATION_OP_REMOVE_CONFIG, &config_id), 0); - ignore_faults_in_dmesg(function_name); + ignore_dmesg_errors_from_dut(fd); injection_list_add(function_name); set_retval(function_name, INJECT_ERRNO); igt_assert_lt(intel_xe_perf_ioctl(fd, DRM_XE_OBSERVATION_OP_ADD_CONFIG, &config), 0); -- 2.43.0