All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH] tests/amdgpu: add RAS tests
@ 2023-08-04  1:52 vitaly.prosyak
  2023-08-04  2:19 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: vitaly.prosyak @ 2023-08-04  1:52 UTC (permalink / raw)
  To: igt-dev
  Cc: Guchun Chen, Xinhui Pan, luben.tuikov, alexander.deucher,
	christian.koenig

From: Vitaly Prosyak <vitaly.prosyak@amd.com>

RAS (Reliability, Availability and Serviceability) employs a mix of hardware
and software mechanisms to validate/improve the reliability of AMD GPU execution.

Ported and refactored drmlib RAS tests and the following is done:
 1. Remove everywhere global variables.
 2. Split data into struct amd_ras_setup and struct amd_ras_single_test_setup for easy maintenance.
 3. Use IGT built-in dynamic features and fixture functions.
 4. Properly formatted code to meet IGT guidelines.

Cc: Luben Tuikov <luben.tuikov@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: Guchun Chen <guchun.chen@amd.com>
Cc: Xinhui Pan <xinhui.pan@amd.com>
Signed-off-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
---
 tests/amdgpu/amd_ras.c   | 1041 ++++++++++++++++++++++++++++++++++++++
 tests/amdgpu/meson.build |    1 +
 2 files changed, 1042 insertions(+)
 create mode 100644 tests/amdgpu/amd_ras.c

diff --git a/tests/amdgpu/amd_ras.c b/tests/amdgpu/amd_ras.c
new file mode 100644
index 000000000..cea4ddeff
--- /dev/null
+++ b/tests/amdgpu/amd_ras.c
@@ -0,0 +1,1041 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ * Copyright 2023 Advanced Micro Devices, Inc.
+ */
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <limits.h>
+
+#include <amdgpu.h>
+#include "amdgpu_drm.h"
+
+#include "igt.h"
+#include "lib/amdgpu/amd_ip_blocks.h"
+
+#define PATH_SIZE PATH_MAX
+
+const char *ras_block_string[] = {
+	"umc",
+	"sdma",
+	"gfx",
+	"mmhub",
+	"athub",
+	"pcie_bif",
+	"hdp",
+	"xgmi_wafl",
+	"df",
+	"smn",
+	"sem",
+	"mp0",
+	"mp1",
+	"fuse",
+};
+
+#define ras_block_str(i) (ras_block_string[i])
+
+enum amdgpu_ras_block {
+	AMDGPU_RAS_BLOCK__UMC = 0,
+	AMDGPU_RAS_BLOCK__SDMA,
+	AMDGPU_RAS_BLOCK__GFX,
+	AMDGPU_RAS_BLOCK__MMHUB,
+	AMDGPU_RAS_BLOCK__ATHUB,
+	AMDGPU_RAS_BLOCK__PCIE_BIF,
+	AMDGPU_RAS_BLOCK__HDP,
+	AMDGPU_RAS_BLOCK__XGMI_WAFL,
+	AMDGPU_RAS_BLOCK__DF,
+	AMDGPU_RAS_BLOCK__SMN,
+	AMDGPU_RAS_BLOCK__SEM,
+	AMDGPU_RAS_BLOCK__MP0,
+	AMDGPU_RAS_BLOCK__MP1,
+	AMDGPU_RAS_BLOCK__FUSE,
+
+	AMDGPU_RAS_BLOCK__LAST
+};
+
+#define AMDGPU_RAS_BLOCK_COUNT	AMDGPU_RAS_BLOCK__LAST
+#define AMDGPU_RAS_BLOCK_MASK	((1ULL << AMDGPU_RAS_BLOCK_COUNT) - 1)
+
+enum amdgpu_ras_gfx_subblock {
+	/* CPC */
+	AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_START = 0,
+	AMDGPU_RAS_BLOCK__GFX_CPC_SCRATCH =
+		AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_CPC_UCODE,
+	AMDGPU_RAS_BLOCK__GFX_DC_STATE_ME1,
+	AMDGPU_RAS_BLOCK__GFX_DC_CSINVOC_ME1,
+	AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME1,
+	AMDGPU_RAS_BLOCK__GFX_DC_STATE_ME2,
+	AMDGPU_RAS_BLOCK__GFX_DC_CSINVOC_ME2,
+	AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME2,
+	AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME2,
+	/* CPF */
+	AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_CPF_ROQ_ME2 =
+		AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_CPF_ROQ_ME1,
+	AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
+	AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_END = AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
+	/* CPG */
+	AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_CPG_DMA_ROQ =
+		AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_CPG_DMA_TAG,
+	AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
+	AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_END = AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
+	/* GDS */
+	AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_GDS_MEM = AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_GDS_INPUT_QUEUE,
+	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PHY_CMD_RAM_MEM,
+	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PHY_DATA_RAM_MEM,
+	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PIPE_MEM,
+	AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_GDS_OA_PIPE_MEM,
+	/* SPI */
+	AMDGPU_RAS_BLOCK__GFX_SPI_SR_MEM,
+	/* SQ */
+	AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_SQ_SGPR = AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_SQ_LDS_D,
+	AMDGPU_RAS_BLOCK__GFX_SQ_LDS_I,
+	AMDGPU_RAS_BLOCK__GFX_SQ_VGPR,
+	AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_END = AMDGPU_RAS_BLOCK__GFX_SQ_VGPR,
+	/* SQC (3 ranges) */
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_START,
+	/* SQC range 0 */
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_START =
+		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_UTCL1_LFIFO =
+		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU0_WRITE_DATA_BUF,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU0_UTCL1_LFIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_WRITE_DATA_BUF,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_UTCL1_LFIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_WRITE_DATA_BUF,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_UTCL1_LFIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_END =
+		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_UTCL1_LFIFO,
+	/* SQC range 1 */
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_TAG_RAM =
+		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_UTCL1_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_BANK_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_TAG_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_HIT_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_DIRTY_BIT_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_BANK_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_END =
+		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_BANK_RAM,
+	/* SQC range 2 */
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_TAG_RAM =
+		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_UTCL1_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_BANK_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_TAG_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_HIT_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_MISS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_DIRTY_BIT_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_BANK_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_END =
+		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_BANK_RAM,
+	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_END,
+	/* TA */
+	AMDGPU_RAS_BLOCK__GFX_TA_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TA_FS_DFIFO =
+		AMDGPU_RAS_BLOCK__GFX_TA_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TA_FS_AFIFO,
+	AMDGPU_RAS_BLOCK__GFX_TA_FL_LFIFO,
+	AMDGPU_RAS_BLOCK__GFX_TA_FX_LFIFO,
+	AMDGPU_RAS_BLOCK__GFX_TA_FS_CFIFO,
+	AMDGPU_RAS_BLOCK__GFX_TA_INDEX_END = AMDGPU_RAS_BLOCK__GFX_TA_FS_CFIFO,
+	/* TCA */
+	AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TCA_HOLE_FIFO =
+		AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TCA_REQ_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_TCA_REQ_FIFO,
+	/* TCC (5 sub-ranges) */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_START,
+	/* TCC range 0 */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_START =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_0_1,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_0,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_1,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DIRTY_BANK_0,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DIRTY_BANK_1,
+	AMDGPU_RAS_BLOCK__GFX_TCC_HIGH_RATE_TAG,
+	AMDGPU_RAS_BLOCK__GFX_TCC_LOW_RATE_TAG,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_LOW_RATE_TAG,
+	/* TCC range 1 */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_DEC =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_TRANSFER,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_TRANSFER,
+	/* TCC range 2 */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_RETURN_DATA =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_RETURN_CONTROL,
+	AMDGPU_RAS_BLOCK__GFX_TCC_UC_ATOMIC_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCC_WRITE_RETURN,
+	AMDGPU_RAS_BLOCK__GFX_TCC_WRITE_CACHE_READ,
+	AMDGPU_RAS_BLOCK__GFX_TCC_SRC_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCC_SRC_FIFO_NEXT_RAM,
+	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_TAG_PROBE_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_TAG_PROBE_FIFO,
+	/* TCC range 3 */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO_NEXT_RAM,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO_NEXT_RAM,
+	/* TCC range 4 */
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_WRRET_TAG_WRITE_RETURN =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_START,
+	AMDGPU_RAS_BLOCK__GFX_TCC_ATOMIC_RETURN_BUFFER,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_ATOMIC_RETURN_BUFFER,
+	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_END,
+	/* TCI */
+	AMDGPU_RAS_BLOCK__GFX_TCI_WRITE_RAM,
+	/* TCP */
+	AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TCP_CACHE_RAM =
+		AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TCP_LFIFO_RAM,
+	AMDGPU_RAS_BLOCK__GFX_TCP_CMD_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCP_VM_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TCP_DB_RAM,
+	AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO0,
+	AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO1,
+	AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO1,
+	/* TD */
+	AMDGPU_RAS_BLOCK__GFX_TD_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_LO =
+		AMDGPU_RAS_BLOCK__GFX_TD_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_HI,
+	AMDGPU_RAS_BLOCK__GFX_TD_CS_FIFO,
+	AMDGPU_RAS_BLOCK__GFX_TD_INDEX_END = AMDGPU_RAS_BLOCK__GFX_TD_CS_FIFO,
+	/* EA (3 sub-ranges) */
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX_START,
+	/* EA range 0 */
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_START =
+		AMDGPU_RAS_BLOCK__GFX_EA_INDEX_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_CMDMEM =
+		AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_CMDMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_DATAMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_RRET_TAGMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_WRET_TAGMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_GMIRD_CMDMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_CMDMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_DATAMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_END =
+		AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_DATAMEM,
+	/* EA range 1 */
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_PAGEMEM =
+		AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_PAGEMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_IORD_CMDMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_IOWR_CMDMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_IOWR_DATAMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_GMIRD_PAGEMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_PAGEMEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_END =
+		AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_PAGEMEM,
+	/* EA range 2 */
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D0MEM =
+		AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_START,
+	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D1MEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D2MEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D3MEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_END =
+		AMDGPU_RAS_BLOCK__GFX_EA_MAM_D3MEM,
+	AMDGPU_RAS_BLOCK__GFX_EA_INDEX_END =
+		AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_END,
+	/* UTC VM L2 bank */
+	AMDGPU_RAS_BLOCK__UTC_VML2_BANK_CACHE,
+	/* UTC VM walker */
+	AMDGPU_RAS_BLOCK__UTC_VML2_WALKER,
+	/* UTC ATC L2 2MB cache */
+	AMDGPU_RAS_BLOCK__UTC_ATCL2_CACHE_2M_BANK,
+	/* UTC ATC L2 4KB cache */
+	AMDGPU_RAS_BLOCK__UTC_ATCL2_CACHE_4K_BANK,
+	AMDGPU_RAS_BLOCK__GFX_MAX
+};
+
+enum amdgpu_ras_error_type {
+	AMDGPU_RAS_ERROR__NONE					= 0,
+	AMDGPU_RAS_ERROR__PARITY				= 1,
+	AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE	= 2,
+	AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE	= 4,
+	AMDGPU_RAS_ERROR__POISON				= 8,
+};
+
+struct ras_inject_test_config {
+	char name[64];
+	char block[32];
+	int sub_block;
+	enum amdgpu_ras_error_type type;
+	uint64_t address;
+	uint64_t value;
+};
+
+struct ras_common_if {
+	enum amdgpu_ras_block block;
+	enum amdgpu_ras_error_type type;
+	uint32_t sub_block_index;
+	char name[32];
+};
+
+struct ras_inject_if {
+	struct ras_common_if head;
+	uint64_t address;
+	uint64_t value;
+};
+
+struct ras_debug_if {
+	union {
+		struct ras_common_if head;
+		struct ras_inject_if inject;
+	};
+	int op;
+};
+
+/* for now, only umc, gfx, sdma has implemented. */
+#define DEFAULT_RAS_BLOCK_MASK_INJECT ((1 << AMDGPU_RAS_BLOCK__UMC) |\
+		(1 << AMDGPU_RAS_BLOCK__GFX))
+#define DEFAULT_RAS_BLOCK_MASK_QUERY ((1 << AMDGPU_RAS_BLOCK__UMC) |\
+		(1 << AMDGPU_RAS_BLOCK__GFX))
+#define DEFAULT_RAS_BLOCK_MASK_BASIC (1 << AMDGPU_RAS_BLOCK__UMC |\
+		(1 << AMDGPU_RAS_BLOCK__SDMA) |\
+		(1 << AMDGPU_RAS_BLOCK__GFX))
+
+
+struct ras_test_mask {
+	uint32_t inject_mask;
+	uint32_t query_mask;
+	uint32_t basic_mask;
+};
+
+struct amdgpu_ras_data {
+	amdgpu_device_handle device_handle;
+	uint32_t  id;
+	uint32_t  capability;
+	struct ras_test_mask test_mask;
+};
+
+struct amd_ras_setup {
+	int devices_count;
+	int drm_amdgpu[MAX_CARDS_SUPPORTED];
+	struct amdgpu_ras_data devices[MAX_CARDS_SUPPORTED];
+	bool run_basic_test;
+	bool run_query_test;
+	bool run_inject_test;
+};
+
+struct amd_ras_single_test_setup {
+	int test_card;
+	amdgpu_device_handle device_handle;
+	char sysfs_path[PATH_SIZE];
+	char debugfs_path[PATH_SIZE];
+	uint32_t ras_mask;
+	uint32_t ras_block_mask_inject;
+	uint32_t ras_block_mask_query;
+	uint32_t ras_block_mask_basic;
+};
+
+struct ras_DID_test_mask {
+	uint16_t device_id;
+	uint16_t revision_id;
+	struct ras_test_mask test_mask;
+};
+
+/* white list for inject test. */
+#define RAS_BLOCK_MASK_ALL {\
+	DEFAULT_RAS_BLOCK_MASK_INJECT,\
+	DEFAULT_RAS_BLOCK_MASK_QUERY,\
+	DEFAULT_RAS_BLOCK_MASK_BASIC\
+}
+
+#define RAS_BLOCK_MASK_QUERY_BASIC {\
+	0,\
+	DEFAULT_RAS_BLOCK_MASK_QUERY,\
+	DEFAULT_RAS_BLOCK_MASK_BASIC\
+}
+
+static const
+struct ras_inject_test_config umc_ras_inject_test[] = {
+	{"ras_umc.1.0", "umc", 0, AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+};
+
+static const
+struct ras_inject_test_config gfx_ras_inject_test[] = {
+	{"ras_gfx.2.0", "gfx", AMDGPU_RAS_BLOCK__GFX_CPC_UCODE,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.1", "gfx", AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.2", "gfx", AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.3", "gfx", AMDGPU_RAS_BLOCK__GFX_SQ_LDS_D,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.4", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_UTCL1_LFIFO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.5", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_TAG_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.6", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_TAG_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.7", "gfx", AMDGPU_RAS_BLOCK__GFX_TA_FS_DFIFO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.8", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.9", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_0_1,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.10", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_0,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.11", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_1,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.12", "gfx", AMDGPU_RAS_BLOCK__GFX_TCP_CACHE_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.13", "gfx", AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_LO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.14", "gfx", AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_CMDMEM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+};
+
+/* Vega 20 */
+static const
+struct ras_DID_test_mask ras_DID_array[] = {
+	{0x66a1, 0x00, RAS_BLOCK_MASK_ALL},
+	{0x66a1, 0x01, RAS_BLOCK_MASK_ALL},
+	{0x66a1, 0x04, RAS_BLOCK_MASK_ALL},
+};
+
+static int
+set_file_contents(char *file, char *buf, int size)
+{
+	int n, fd;
+
+	fd = open(file, O_WRONLY);
+	if (fd == -1)
+		return -1;
+	n = write(fd, buf, size);
+	close(fd);
+	return n;
+}
+
+static int
+get_file_contents(char *file, char *buf, int size)
+{
+	int n, fd;
+
+	fd = open(file, O_RDONLY);
+	if (fd == -1)
+		return -1;
+	n = read(fd, buf, size);
+	close(fd);
+	return n;
+}
+
+static int
+is_file_ok(const char *file, int flags)
+{
+	int fd;
+
+	fd = open(file, flags);
+	if (fd == -1)
+		return -1;
+	close(fd);
+	return 0;
+}
+
+static uint32_t
+amdgpu_ras_find_block_id_by_name(const char *name)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(ras_block_string); i++) {
+		if (strcmp(name, ras_block_string[i]) == 0)
+			return i;
+	}
+
+	return ARRAY_SIZE(ras_block_string);
+}
+
+static const char *
+amdgpu_ras_get_error_type_id(enum amdgpu_ras_error_type type)
+{
+	switch (type) {
+	case AMDGPU_RAS_ERROR__PARITY:
+		return "parity";
+	case AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE:
+		return "single_correctable";
+	case AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE:
+		return "multi_uncorrectable";
+	case AMDGPU_RAS_ERROR__POISON:
+		return "poison";
+	case AMDGPU_RAS_ERROR__NONE:
+	default:
+		return NULL;
+	}
+}
+
+static struct
+ras_test_mask amdgpu_ras_get_test_mask(drmDevicePtr device)
+{
+	int i;
+	struct ras_test_mask default_test_mask = RAS_BLOCK_MASK_QUERY_BASIC;
+
+	for (i = 0; i < ARRAY_SIZE(ras_DID_array); i++) {
+		if (ras_DID_array[i].device_id == device->deviceinfo.pci->device_id &&
+				ras_DID_array[i].revision_id == device->deviceinfo.pci->revision_id)
+			return ras_DID_array[i].test_mask;
+	}
+	return default_test_mask;
+}
+
+static uint32_t
+amdgpu_ras_lookup_capability(amdgpu_device_handle device_handle)
+{
+	union {
+		uint64_t feature_mask;
+		struct {
+			uint32_t enabled_features;
+			uint32_t supported_features;
+		};
+	} features = { 0 };
+	int ret;
+
+	ret = amdgpu_query_info(device_handle, AMDGPU_INFO_RAS_ENABLED_FEATURES,
+			sizeof(features), &features);
+	if (ret)
+		return 0;
+
+	return features.supported_features;
+}
+
+static int
+amdgpu_ras_lookup_id(drmDevicePtr device)
+{
+	char path[PATH_SIZE];
+	char str[128];
+	drmPciBusInfo info;
+	int i;
+	int ret;
+
+	for (i = 0; i < MAX_CARDS_SUPPORTED; i++) {
+		memset(str, 0, sizeof(str));
+		memset(&info, 0, sizeof(info));
+		snprintf(path, PATH_SIZE, "/sys/kernel/debug/dri/%d/name", i);
+		if (get_file_contents(path, str, sizeof(str)) <= 0)
+			continue;
+
+		ret = sscanf(str, "amdgpu dev=%04hx:%02hhx:%02hhx.%01hhx",
+				&info.domain, &info.bus, &info.dev, &info.func);
+		if (ret != 4)
+			continue;
+
+		if (memcmp(&info, device->businfo.pci, sizeof(info)) == 0)
+			return i;
+	}
+	return -1;
+}
+
+static void
+set_test_card(struct amd_ras_setup *setup,  int card, struct amd_ras_single_test_setup *test)
+{
+	test->test_card = card;
+	snprintf(test->sysfs_path, PATH_SIZE, "/sys/class/drm/card%d/device/ras/", setup->devices[card].id);
+	snprintf(test->debugfs_path, PATH_SIZE,  "/sys/kernel/debug/dri/%d/ras/", setup->devices[card].id);
+	test->ras_mask = setup->devices[card].capability;
+	test->device_handle = setup->devices[card].device_handle;
+	test->ras_block_mask_inject = setup->devices[card].test_mask.inject_mask;
+	test->ras_block_mask_query = setup->devices[card].test_mask.query_mask;
+	test->ras_block_mask_basic = setup->devices[card].test_mask.basic_mask;
+}
+
+static const char *
+get_ras_sysfs_root(struct amd_ras_single_test_setup *test)
+{
+	return test->sysfs_path;
+}
+
+static const char *get_ras_debugfs_root(struct amd_ras_single_test_setup *test)
+{
+	return test->debugfs_path;
+}
+
+static int
+amdgpu_ras_is_feature_enabled(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block)
+{
+	uint32_t feature_mask;
+	int ret;
+
+	ret = amdgpu_query_info(test->device_handle, AMDGPU_INFO_RAS_ENABLED_FEATURES,
+			sizeof(feature_mask), &feature_mask);
+	if (ret)
+		return -1;
+
+	return (1 << block) & feature_mask;
+}
+
+static int
+amdgpu_ras_is_feature_supported(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block)
+{
+	return (1 << block) & test->ras_mask;
+}
+
+static int
+amdgpu_ras_invoke(struct amd_ras_single_test_setup *test, struct ras_debug_if *data)
+{
+	char path[PATH_SIZE];
+	int ret;
+
+	snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(test));
+	strncat(path, "ras_ctrl", sizeof(path) - strlen(path));
+
+	ret = set_file_contents(path, (char *)data, sizeof(*data))
+		- sizeof(*data);
+	return ret;
+}
+
+static int
+amdgpu_ras_query_err_count(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block,
+		unsigned long *ue, unsigned long *ce)
+{
+	char buf[64];
+	char name[PATH_SIZE];
+
+	*ue = *ce = 0;
+
+	if (amdgpu_ras_is_feature_supported(test, block) <= 0)
+		return -1;
+
+	snprintf(name, sizeof(name), "%s", get_ras_sysfs_root(test));
+	strncat(name, ras_block_str(block), sizeof(name) - strlen(name));
+	strncat(name, "_err_count", sizeof(name) - strlen(name));
+
+	if (is_file_ok(name, O_RDONLY))
+		return 0;
+
+	if (get_file_contents(name, buf, sizeof(buf)) <= 0)
+		return -1;
+
+	if (sscanf(buf, "ue: %lu\nce: %lu", ue, ce) != 2)
+		return -1;
+
+	return 0;
+}
+
+static int
+amdgpu_ras_inject(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block,
+		uint32_t sub_block, enum amdgpu_ras_error_type type,
+		uint64_t address, uint64_t value)
+{
+	struct ras_debug_if data = { .op = 2, };
+	struct ras_inject_if *inject = &data.inject;
+	int ret;
+
+	if (amdgpu_ras_is_feature_enabled(test, block) <= 0) {
+		igt_info("block id(%d) is not valid\n", block);
+		return -1;
+	}
+
+	inject->head.block = block;
+	inject->head.type = type;
+	inject->head.sub_block_index = sub_block;
+	strncpy(inject->head.name, ras_block_str(block), sizeof(inject->head.name)-1);
+	inject->address = address;
+	inject->value = value;
+
+	ret = amdgpu_ras_invoke(test, &data);
+	igt_assert_eq(ret, 0);
+	if (ret)
+		return -1;
+
+	return 0;
+}
+
+static void
+amdgpu_ras_features_test(struct amd_ras_single_test_setup *test, int enable)
+{
+	struct ras_debug_if data;
+	int ret;
+	int i;
+
+	data.op = enable;
+	for (i = 0; i < AMDGPU_RAS_BLOCK__LAST; i++) {
+		struct ras_common_if head = {
+			.block = i,
+			.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
+			.sub_block_index = 0,
+			.name = "",
+		};
+
+		if (amdgpu_ras_is_feature_supported(test, i) <= 0)
+			continue;
+
+		data.head = head;
+
+		ret = amdgpu_ras_invoke(test, &data);
+		igt_assert_eq(ret, 0);
+
+		if (ret)
+			continue;
+
+		ret = enable ^ amdgpu_ras_is_feature_enabled(test, i);
+		igt_assert_eq(ret, 0);
+	}
+}
+
+static void
+__amdgpu_ras_ip_inject_test(struct amd_ras_single_test_setup *test,
+		const struct ras_inject_test_config *ip_test, uint32_t size)
+{
+	int i, ret;
+	unsigned long old_ue, old_ce;
+	unsigned long ue, ce;
+	uint32_t block;
+	int timeout;
+	bool pass;
+
+	for (i = 0; i < size; i++) {
+		timeout = 3;
+		pass = false;
+
+		block = amdgpu_ras_find_block_id_by_name(ip_test[i].block);
+
+		/* Ensure one valid ip block */
+		if (block == ARRAY_SIZE(ras_block_string))
+			break;
+
+		/* Ensure RAS feature for the IP block is enabled by kernel */
+		if (amdgpu_ras_is_feature_supported(test, block) <= 0)
+			break;
+
+		ret = amdgpu_ras_query_err_count(test, block, &old_ue, &old_ce);
+		igt_assert_eq(ret, 0);
+		if (ret)
+			break;
+
+		ret = amdgpu_ras_inject(test, block,
+					ip_test[i].sub_block,
+					ip_test[i].type,
+					ip_test[i].address,
+					ip_test[i].value);
+		igt_assert_eq(ret, 0);
+		if (ret)
+			break;
+
+		while (timeout > 0) {
+			sleep(5);
+
+			ret = amdgpu_ras_query_err_count(test, block, &ue, &ce);
+			igt_assert_eq(ret, 0);
+			if (ret)
+				break;
+
+			if (old_ue != ue || old_ce != ce) {
+				pass = true;
+				sleep(20);
+				break;
+			}
+			timeout -= 1;
+		}
+		igt_info("\t Test %s@block %s, subblock %d, error_type %s, address %ld, value %ld: %s\n",
+			ip_test[i].name,
+			ip_test[i].block,
+			ip_test[i].sub_block,
+			amdgpu_ras_get_error_type_id(ip_test[i].type),
+			ip_test[i].address,
+			ip_test[i].value,
+			pass ? "Pass" : "Fail");
+	}
+}
+
+static void
+__amdgpu_ras_inject_test(struct amd_ras_single_test_setup *test)
+{
+	igt_info("...\n");
+
+	/* run UMC ras inject test */
+	__amdgpu_ras_ip_inject_test(test, umc_ras_inject_test,
+		ARRAY_SIZE(umc_ras_inject_test));
+
+	/* run GFX ras inject test */
+	__amdgpu_ras_ip_inject_test(test, gfx_ras_inject_test,
+		ARRAY_SIZE(gfx_ras_inject_test));
+}
+
+static void
+__amdgpu_ras_query_test(struct amd_ras_single_test_setup *test)
+{
+	unsigned long ue, ce;
+	int ret;
+	int i;
+
+	for (i = 0; i < AMDGPU_RAS_BLOCK__LAST; i++) {
+		if (amdgpu_ras_is_feature_supported(test, i) <= 0)
+			continue;
+
+		if (!((1 << i) & test->ras_block_mask_query))
+			continue;
+
+		ret = amdgpu_ras_query_err_count(test, i, &ue, &ce);
+		igt_assert_eq(ret, 0);
+	}
+}
+
+static void
+amdgpu_ras_disable_test(struct amd_ras_setup *setup)
+{
+	int i;
+	struct amd_ras_single_test_setup test = {};
+
+	for (i = 0; i < setup->devices_count; i++) {
+		set_test_card(setup, i, &test);
+		amdgpu_ras_features_test(&test, 0);
+	}
+}
+
+static void
+amdgpu_ras_enable_test(struct amd_ras_setup *setup)
+{
+	int i;
+	struct amd_ras_single_test_setup test = {};
+
+	for (i = 0; i < setup->devices_count; i++) {
+		set_test_card(setup, i, &test);
+		amdgpu_ras_features_test(&test, 1);
+	}
+}
+static void
+amdgpu_ras_inject_test(struct amd_ras_setup *setup)
+{
+	int i;
+	struct amd_ras_single_test_setup test = {};
+
+	for (i = 0; i < setup->devices_count; i++) {
+		set_test_card(setup, i, &test);
+		__amdgpu_ras_inject_test(&test);
+	}
+}
+
+static void
+amdgpu_ras_query_test(struct amd_ras_setup *setup)
+{
+	int i;
+	struct amd_ras_single_test_setup test = {};
+
+	for (i = 0; i < setup->devices_count; i++) {
+		set_test_card(setup, i, &test);
+		__amdgpu_ras_query_test(&test);
+	}
+}
+
+static void
+amdgpu_ras_basic_test(struct amd_ras_setup *setup)
+{
+	int ret;
+	int i;
+	int j;
+	uint32_t features;
+	char path[PATH_SIZE];
+	struct amd_ras_single_test_setup test = {};
+
+	ret = is_file_ok("/sys/module/amdgpu/parameters/ras_mask", O_RDONLY);
+	igt_assert_eq(ret, 0);
+
+	for (i = 0; i < setup->devices_count; i++) {
+		set_test_card(setup, i, &test);
+
+		ret = amdgpu_query_info(test.device_handle,
+				AMDGPU_INFO_RAS_ENABLED_FEATURES, sizeof(features), &features);
+		igt_assert_eq(ret, 0);
+
+		snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(&test));
+		strncat(path, "ras_ctrl", sizeof(path) - strlen(path));
+
+		ret = is_file_ok(path, O_WRONLY);
+		igt_assert_eq(ret, 0);
+
+		snprintf(path, sizeof(path), "%s", get_ras_sysfs_root(&test));
+		strncat(path, "features", sizeof(path) - strlen(path));
+
+		ret = is_file_ok(path, O_RDONLY);
+		igt_assert_eq(ret, 0);
+
+		for (j = 0; j < AMDGPU_RAS_BLOCK__LAST; j++) {
+			ret = amdgpu_ras_is_feature_supported(&test, j);
+			if (ret <= 0)
+				continue;
+
+			if (!((1 << j) & test.ras_block_mask_basic))
+				continue;
+
+			snprintf(path, sizeof(path), "%s", get_ras_sysfs_root(&test));
+			strncat(path, ras_block_str(j), sizeof(path) -  strlen(path));
+			strncat(path, "_err_count", sizeof(path) - strlen(path));
+
+			ret = is_file_ok(path, O_RDONLY);
+			igt_assert_eq(ret, 0);
+
+			snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(&test));
+			strncat(path, ras_block_str(j), sizeof(path) - strlen(path));
+			strncat(path, "_err_inject", sizeof(path) - strlen(path));
+
+			ret = is_file_ok(path, O_WRONLY);
+			igt_assert_eq(ret, 0);
+		}
+	}
+}
+
+static bool
+ras_tests_init(struct amd_ras_setup *setup)
+{
+	drmDevicePtr device;
+	amdgpu_device_handle device_handle;
+	uint32_t  major_version;
+	uint32_t  minor_version;
+	uint32_t  capability;
+	struct ras_test_mask test_mask;
+	int id;
+	int i;
+	int r;
+
+	for (i = 0; i < MAX_CARDS_SUPPORTED && setup->drm_amdgpu[i] >= 0; i++) {
+		r = amdgpu_device_initialize(setup->drm_amdgpu[i], &major_version,
+				&minor_version, &device_handle);
+		if (r)
+			continue;
+
+		if (drmGetDevice2(setup->drm_amdgpu[i],
+					DRM_DEVICE_GET_PCI_REVISION,
+					&device)) {
+			amdgpu_device_deinitialize(device_handle);
+			continue;
+		}
+
+		if (device->bustype != DRM_BUS_PCI) {
+			amdgpu_device_deinitialize(device_handle);
+			continue;
+		}
+
+		capability = amdgpu_ras_lookup_capability(device_handle);
+		if (capability == 0) {
+			amdgpu_device_deinitialize(device_handle);
+			continue;
+
+		}
+
+		id = amdgpu_ras_lookup_id(device);
+		if (id == -1) {
+			amdgpu_device_deinitialize(device_handle);
+			continue;
+		}
+
+		test_mask = amdgpu_ras_get_test_mask(device);
+
+		setup->devices[setup->devices_count++] = (struct amdgpu_ras_data) {
+			device_handle, id, capability, test_mask };
+		if (test_mask.basic_mask > 0)
+			setup->run_basic_test = true;
+		if (test_mask.query_mask > 0)
+			setup->run_query_test = true;
+		if (test_mask.inject_mask > 0)
+			setup->run_inject_test = true;
+	}
+
+	if (setup->devices_count == 0)
+		return false;
+
+	return true;
+}
+
+static void
+ras_tests_cleanup(struct amd_ras_setup *setup)
+{
+	int r;
+	int i;
+
+	for (i = 0; i < setup->devices_count; i++) {
+		r = amdgpu_device_deinitialize(setup->devices[i].device_handle);
+		igt_assert_eq(r, 0);
+		drm_close_driver(setup->drm_amdgpu[i]);
+	}
+}
+
+igt_main
+{
+	struct amd_ras_setup setup = {};
+	bool render_mode = true;
+
+	igt_fixture {
+
+		igt_skip_on(!amdgpu_open_devices(render_mode, MAX_CARDS_SUPPORTED,
+				setup.drm_amdgpu));
+		igt_skip_on(!ras_tests_init(&setup));
+	}
+	igt_describe("RAS-basic");
+	igt_subtest_with_dynamic("RAS-basic") {
+		if (setup.run_basic_test) {
+			igt_dynamic_f("RAS-basic")
+			amdgpu_ras_basic_test(&setup);
+		}
+	}
+	igt_describe("RAS-query");
+	igt_subtest_with_dynamic("RAS-query") {
+		if (setup.run_query_test) {
+			igt_dynamic_f("RAS-query")
+			amdgpu_ras_query_test(&setup);
+		}
+	}
+	igt_describe("RAS-inject");
+	igt_subtest_with_dynamic("RAS-inject") {
+		if (setup.run_inject_test) {
+			igt_dynamic_f("RAS-inject")
+			amdgpu_ras_inject_test(&setup);
+		}
+	}
+	igt_describe("RAS-disable");
+	igt_subtest_with_dynamic("RAS-disable") {
+		if (setup.run_inject_test) {
+			igt_dynamic_f("RAS-disable")
+			amdgpu_ras_disable_test(&setup);
+		}
+	}
+
+	igt_describe("RAS-enable");
+	igt_subtest_with_dynamic("RAS-enable") {
+		if (setup.run_inject_test) {
+			igt_dynamic_f("RAS-enable")
+			amdgpu_ras_enable_test(&setup);
+		}
+	}
+	igt_fixture {
+		ras_tests_cleanup(&setup);
+	}
+}
diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
index e179bddcd..336acdb00 100644
--- a/tests/amdgpu/meson.build
+++ b/tests/amdgpu/meson.build
@@ -26,6 +26,7 @@ if libdrm_amdgpu.found()
 			  'amd_plane',
 			  'amd_prime',
 			  'amd_psr',
+			  'amd_ras',
 			  'amd_security',
 			  'amd_uvd_dec',
 			  'amd_uvd_enc',
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [igt-dev] ✗ GitLab.Pipeline: warning for tests/amdgpu: add RAS tests
  2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
@ 2023-08-04  2:19 ` Patchwork
  2023-08-04  2:43 ` [igt-dev] ○ CI.xeBAT: info " Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2023-08-04  2:19 UTC (permalink / raw)
  To: vitaly.prosyak; +Cc: igt-dev

== Series Details ==

Series: tests/amdgpu: add RAS tests
URL   : https://patchwork.freedesktop.org/series/121992/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/952084 for the overview.

test:ninja-test has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/46668151):
  365/369 assembler test/rnde-intsrc              OK       0.01 s 
  366/369 assembler test/rndz                     OK       0.01 s 
  367/369 assembler test/lzd                      OK       0.01 s 
  368/369 assembler test/not                      OK       0.01 s 
  369/369 assembler test/immediate                OK       0.01 s 
  
  Ok:                  364
  Expected Fail:         4
  Fail:                  1
  Unexpected Pass:       0
  Skipped:               0
  Timeout:               0
  
  Full log written to /builds/gfx-ci/igt-ci-tags/build/meson-logs/testlog.txt
  section_end:1691115259:step_script
  section_start:1691115259:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1691115260:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/952084

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [igt-dev] ○ CI.xeBAT: info for tests/amdgpu: add RAS tests
  2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
  2023-08-04  2:19 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
@ 2023-08-04  2:43 ` Patchwork
  2023-08-04  2:51 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2023-08-04  2:43 UTC (permalink / raw)
  To: vitaly.prosyak; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

== Series Details ==

Series: tests/amdgpu: add RAS tests
URL   : https://patchwork.freedesktop.org/series/121992/
State : info

== Summary ==

Participating hosts:
bat-pvc-2
bat-atsm-2
bat-dg2-oem2
bat-adlp-7
Missing hosts results[0]:
Results: [IGTPW_9512](https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_9512/index.html)



[-- Attachment #2: Type: text/html, Size: 841 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/amdgpu: add RAS tests
  2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
  2023-08-04  2:19 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
  2023-08-04  2:43 ` [igt-dev] ○ CI.xeBAT: info " Patchwork
@ 2023-08-04  2:51 ` Patchwork
  2023-08-04  7:52 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2023-08-04 15:44 ` [igt-dev] [PATCH] " Luben Tuikov
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2023-08-04  2:51 UTC (permalink / raw)
  To: vitaly.prosyak; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5961 bytes --]

== Series Details ==

Series: tests/amdgpu: add RAS tests
URL   : https://patchwork.freedesktop.org/series/121992/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13472 -> IGTPW_9512
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html

Participating hosts (43 -> 41)
------------------------------

  Missing    (2): fi-snb-2520m fi-pnv-d510 

Known issues
------------

  Here are the changes found in IGTPW_9512 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@reset:
    - bat-rpls-1:         [PASS][1] -> [ABORT][2] ([i915#4983] / [i915#7461] / [i915#8347] / [i915#8384])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-rpls-1/igt@i915_selftest@live@reset.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-rpls-1/igt@i915_selftest@live@reset.html

  * igt@i915_selftest@live@slpc:
    - bat-mtlp-6:         [PASS][3] -> [DMESG-WARN][4] ([i915#6367])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-mtlp-6/igt@i915_selftest@live@slpc.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-mtlp-6/igt@i915_selftest@live@slpc.html

  * igt@i915_selftest@live@workarounds:
    - bat-adlm-1:         [PASS][5] -> [DMESG-FAIL][6] ([i915#7904])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-adlm-1/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-adlm-1/igt@i915_selftest@live@workarounds.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - bat-dg2-11:         NOTRUN -> [SKIP][7] ([i915#7828])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-dg2-11/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         NOTRUN -> [SKIP][8] ([i915#1845] / [i915#5354]) +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@lmem0:
    - bat-dg2-11:         [INCOMPLETE][9] ([i915#6311] / [i915#8011]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-dg2-11/igt@gem_exec_suspend@basic-s0@lmem0.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-dg2-11/igt@gem_exec_suspend@basic-s0@lmem0.html

  * igt@i915_pm_rpm@module-reload:
    - fi-kbl-7567u:       [FAIL][11] ([i915#7940]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/fi-kbl-7567u/igt@i915_pm_rpm@module-reload.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/fi-kbl-7567u/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@gt_mocs:
    - bat-mtlp-8:         [DMESG-FAIL][13] ([i915#7059]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-mtlp-8/igt@i915_selftest@live@gt_mocs.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-mtlp-8/igt@i915_selftest@live@gt_mocs.html

  
#### Warnings ####

  * igt@core_auth@basic-auth:
    - bat-adlp-11:        [ABORT][15] ([i915#4423] / [i915#8011]) -> [ABORT][16] ([i915#8011])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-adlp-11/igt@core_auth@basic-auth.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-adlp-11/igt@core_auth@basic-auth.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-cfl-8700k:       [FAIL][17] ([i915#7940]) -> [FAIL][18] ([i915#7691])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/fi-cfl-8700k/igt@i915_pm_rpm@basic-pci-d3-state.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/fi-cfl-8700k/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@kms_psr@primary_page_flip:
    - bat-rplp-1:         [SKIP][19] ([i915#1072]) -> [ABORT][20] ([i915#8442] / [i915#8668] / [i915#8860])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/bat-rplp-1/igt@kms_psr@primary_page_flip.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/bat-rplp-1/igt@kms_psr@primary_page_flip.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#4423]: https://gitlab.freedesktop.org/drm/intel/issues/4423
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6311]: https://gitlab.freedesktop.org/drm/intel/issues/6311
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#7059]: https://gitlab.freedesktop.org/drm/intel/issues/7059
  [i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461
  [i915#7691]: https://gitlab.freedesktop.org/drm/intel/issues/7691
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7904]: https://gitlab.freedesktop.org/drm/intel/issues/7904
  [i915#7940]: https://gitlab.freedesktop.org/drm/intel/issues/7940
  [i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011
  [i915#8347]: https://gitlab.freedesktop.org/drm/intel/issues/8347
  [i915#8384]: https://gitlab.freedesktop.org/drm/intel/issues/8384
  [i915#8442]: https://gitlab.freedesktop.org/drm/intel/issues/8442
  [i915#8668]: https://gitlab.freedesktop.org/drm/intel/issues/8668
  [i915#8860]: https://gitlab.freedesktop.org/drm/intel/issues/8860


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7413 -> IGTPW_9512

  CI-20190529: 20190529
  CI_DRM_13472: 9f699732195d9d8071692f7981e8fe58d51cd024 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_9512: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html
  IGT_7413: 7413

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html

[-- Attachment #2: Type: text/html, Size: 7005 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/amdgpu: add RAS tests
  2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
                   ` (2 preceding siblings ...)
  2023-08-04  2:51 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-08-04  7:52 ` Patchwork
  2023-08-04 15:44 ` [igt-dev] [PATCH] " Luben Tuikov
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2023-08-04  7:52 UTC (permalink / raw)
  To: vitaly.prosyak; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 70277 bytes --]

== Series Details ==

Series: tests/amdgpu: add RAS tests
URL   : https://patchwork.freedesktop.org/series/121992/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13472_full -> IGTPW_9512_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html

Participating hosts (11 -> 9)
------------------------------

  Missing    (2): shard-rkl0 pig-kbl-iris 

Known issues
------------

  Here are the changes found in IGTPW_9512_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - shard-rkl:          NOTRUN -> [SKIP][1] ([i915#7456])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@debugfs_test@basic-hwmon.html

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - shard-rkl:          [PASS][2] -> [FAIL][3] ([i915#7742])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-1/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@drm_fdinfo@virtual-busy-all:
    - shard-dg2:          NOTRUN -> [SKIP][4] ([i915#8414])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@drm_fdinfo@virtual-busy-all.html

  * igt@feature_discovery@chamelium:
    - shard-dg2:          NOTRUN -> [SKIP][5] ([i915#4854])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@feature_discovery@chamelium.html
    - shard-dg1:          NOTRUN -> [SKIP][6] ([i915#4854])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@feature_discovery@chamelium.html

  * igt@feature_discovery@display-2x:
    - shard-rkl:          NOTRUN -> [SKIP][7] ([i915#1839])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@feature_discovery@display-2x.html

  * igt@gem_basic@multigpu-create-close:
    - shard-dg2:          NOTRUN -> [SKIP][8] ([i915#7697])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - shard-rkl:          [PASS][9] -> [FAIL][10] ([i915#6268])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-4/igt@gem_ctx_exec@basic-nohangcheck.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_persistence@engines-hostile@vcs0:
    - shard-mtlp:         [PASS][11] -> [FAIL][12] ([i915#2410]) +2 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-8/igt@gem_ctx_persistence@engines-hostile@vcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-7/igt@gem_ctx_persistence@engines-hostile@vcs0.html

  * igt@gem_eio@hibernate:
    - shard-tglu:         NOTRUN -> [ABORT][13] ([i915#7975] / [i915#8213] / [i915#8398])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-10/igt@gem_eio@hibernate.html

  * igt@gem_eio@in-flight-contexts-immediate:
    - shard-mtlp:         [PASS][14] -> [ABORT][15] ([i915#8503])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-7/igt@gem_eio@in-flight-contexts-immediate.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-2/igt@gem_eio@in-flight-contexts-immediate.html

  * igt@gem_exec_await@wide-contexts:
    - shard-dg2:          [PASS][16] -> [FAIL][17] ([i915#5892])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-8/igt@gem_exec_await@wide-contexts.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@gem_exec_await@wide-contexts.html

  * igt@gem_exec_balancer@bonded-semaphore:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#4812])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@gem_exec_balancer@bonded-semaphore.html

  * igt@gem_exec_balancer@noheartbeat:
    - shard-dg2:          NOTRUN -> [SKIP][19] ([i915#8555])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@gem_exec_balancer@noheartbeat.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#4525])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-rkl:          [PASS][21] -> [FAIL][22] ([i915#2842]) +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-1/igt@gem_exec_fair@basic-none-share@rcs0.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_flush@basic-uc-pro-default:
    - shard-dg2:          NOTRUN -> [SKIP][23] ([i915#3539] / [i915#4852]) +4 similar issues
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@gem_exec_flush@basic-uc-pro-default.html

  * igt@gem_exec_flush@basic-uc-rw-default:
    - shard-dg1:          NOTRUN -> [SKIP][24] ([i915#3539] / [i915#4852])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-19/igt@gem_exec_flush@basic-uc-rw-default.html

  * igt@gem_exec_reloc@basic-gtt-cpu-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][25] ([i915#3281]) +2 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@gem_exec_reloc@basic-gtt-cpu-noreloc.html

  * igt@gem_exec_reloc@basic-wc:
    - shard-rkl:          NOTRUN -> [SKIP][26] ([i915#3281]) +3 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-6/igt@gem_exec_reloc@basic-wc.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([i915#3281]) +8 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@gem_exec_reloc@basic-write-read-active.html
    - shard-dg1:          NOTRUN -> [SKIP][28] ([i915#3281])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-16/igt@gem_exec_reloc@basic-write-read-active.html

  * igt@gem_exec_suspend@basic-s4-devices@lmem0:
    - shard-dg2:          NOTRUN -> [ABORT][29] ([i915#7975] / [i915#8213]) +1 similar issue
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@gem_exec_suspend@basic-s4-devices@lmem0.html

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - shard-rkl:          NOTRUN -> [ABORT][30] ([i915#7975] / [i915#8213])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@gem_lmem_swapping@heavy-verify-random:
    - shard-tglu:         NOTRUN -> [SKIP][31] ([i915#4613])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-9/igt@gem_lmem_swapping@heavy-verify-random.html

  * igt@gem_media_vme:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#284])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@gem_media_vme.html

  * igt@gem_mmap_wc@bad-offset:
    - shard-mtlp:         NOTRUN -> [SKIP][33] ([i915#4083]) +1 similar issue
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@gem_mmap_wc@bad-offset.html

  * igt@gem_mmap_wc@write-read-distinct:
    - shard-dg2:          NOTRUN -> [SKIP][34] ([i915#4083]) +3 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@gem_mmap_wc@write-read-distinct.html

  * igt@gem_partial_pwrite_pread@reads:
    - shard-rkl:          NOTRUN -> [SKIP][35] ([i915#3282]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@gem_partial_pwrite_pread@reads.html

  * igt@gem_partial_pwrite_pread@reads-display:
    - shard-mtlp:         NOTRUN -> [SKIP][36] ([i915#3282]) +1 similar issue
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-1/igt@gem_partial_pwrite_pread@reads-display.html

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][37] ([i915#3282]) +2 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@gem_pread@snoop.html

  * igt@gem_pxp@protected-raw-src-copy-not-readible:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#4270])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@gem_pxp@protected-raw-src-copy-not-readible.html

  * igt@gem_render_copy@y-tiled-to-vebox-y-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][39] ([i915#5190]) +9 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#8428]) +1 similar issue
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-4/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html

  * igt@gem_set_tiling_vs_blt@untiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][41] ([i915#4079]) +1 similar issue
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
    - shard-dg1:          NOTRUN -> [SKIP][42] ([i915#4079])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html

  * igt@gem_tiled_blits@basic:
    - shard-dg2:          NOTRUN -> [SKIP][43] ([i915#4077]) +7 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@gem_tiled_blits@basic.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][44] ([i915#3297])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@gem_userptr_blits@coherency-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg2:          NOTRUN -> [SKIP][45] ([i915#3297] / [i915#4880])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@gem_userptr_blits@map-fixed-invalidate.html
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#3297])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@gem_userptr_blits@map-fixed-invalidate.html

  * igt@gen3_mixed_blits:
    - shard-rkl:          NOTRUN -> [SKIP][47] ([fdo#109289])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@gen3_mixed_blits.html

  * igt@gen7_exec_parse@batch-without-end:
    - shard-dg2:          NOTRUN -> [SKIP][48] ([fdo#109289]) +3 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@gen7_exec_parse@batch-without-end.html

  * igt@gen9_exec_parse@bb-start-far:
    - shard-dg2:          NOTRUN -> [SKIP][49] ([i915#2856]) +2 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@gen9_exec_parse@bb-start-far.html
    - shard-rkl:          NOTRUN -> [SKIP][50] ([i915#2527]) +1 similar issue
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@gen9_exec_parse@bb-start-far.html

  * igt@gen9_exec_parse@bb-start-out:
    - shard-tglu:         NOTRUN -> [SKIP][51] ([i915#2527] / [i915#2856])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-3/igt@gen9_exec_parse@bb-start-out.html

  * igt@i915_module_load@resize-bar:
    - shard-mtlp:         NOTRUN -> [SKIP][52] ([i915#6412])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@i915_module_load@resize-bar.html

  * igt@i915_pm_backlight@basic-brightness:
    - shard-dg2:          NOTRUN -> [SKIP][53] ([i915#5354] / [i915#7561]) +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_pm_backlight@fade:
    - shard-dg1:          NOTRUN -> [SKIP][54] ([i915#5354] / [i915#7561])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-15/igt@i915_pm_backlight@fade.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-tglu:         [PASS][55] -> [SKIP][56] ([i915#4281])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-10/igt@i915_pm_dc@dc9-dpms.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-5/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [PASS][57] -> [FAIL][58] ([fdo#103375]) +2 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-2/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_pm_rpm@cursor-dpms:
    - shard-tglu:         [PASS][59] -> [FAIL][60] ([i915#7940]) +1 similar issue
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-6/igt@i915_pm_rpm@cursor-dpms.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-8/igt@i915_pm_rpm@cursor-dpms.html

  * igt@i915_pm_rpm@gem-execbuf-stress-pc8:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([fdo#109506])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html

  * igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-smem0:
    - shard-dg1:          [PASS][62] -> [FAIL][63] ([i915#7940])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-15/igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-smem0.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-14/igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-smem0.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][64] -> [SKIP][65] ([i915#1397])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-7/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-dg2:          [PASS][66] -> [SKIP][67] ([i915#1397])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-8/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-dg1:          [PASS][68] -> [SKIP][69] ([i915#1397]) +3 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-14/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-19/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#6621]) +1 similar issue
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_sseu@full-enable:
    - shard-dg2:          NOTRUN -> [SKIP][71] ([i915#4387])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@i915_pm_sseu@full-enable.html

  * igt@i915_selftest@perf@request:
    - shard-mtlp:         [PASS][72] -> [DMESG-FAIL][73] ([i915#8573])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-4/igt@i915_selftest@perf@request.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@i915_selftest@perf@request.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-dg2:          NOTRUN -> [FAIL][74] ([fdo#103375]) +2 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@i915_suspend@basic-s3-without-i915.html
    - shard-mtlp:         NOTRUN -> [SKIP][75] ([i915#6645])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-mtlp:         NOTRUN -> [SKIP][76] ([i915#3826])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-2-y-rc_ccs:
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#8502]) +3 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-2-y-rc_ccs.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc_ccs:
    - shard-dg1:          NOTRUN -> [SKIP][78] ([i915#8502]) +7 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-13/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc_ccs.html

  * igt@kms_async_flips@crc@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [FAIL][79] ([i915#8247]) +3 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@kms_async_flips@crc@pipe-a-hdmi-a-3.html

  * igt@kms_async_flips@crc@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][80] ([i915#8247]) +1 similar issue
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-7/igt@kms_async_flips@crc@pipe-b-hdmi-a-1.html

  * igt@kms_async_flips@crc@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][81] ([i915#8247]) +3 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-14/igt@kms_async_flips@crc@pipe-d-hdmi-a-4.html

  * igt@kms_atomic@atomic-invalid-params:
    - shard-snb:          [PASS][82] -> [SKIP][83] ([fdo#109271])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-snb4/igt@kms_atomic@atomic-invalid-params.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-snb4/igt@kms_atomic@atomic-invalid-params.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#404])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
    - shard-dg2:          NOTRUN -> [SKIP][85] ([i915#404])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-180:
    - shard-rkl:          NOTRUN -> [SKIP][86] ([i915#5286]) +2 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-7/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-mtlp:         [PASS][87] -> [FAIL][88] ([i915#3743])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-tglu:         NOTRUN -> [SKIP][89] ([fdo#111615] / [i915#5286])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][90] ([fdo#111614] / [i915#3638])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][91] ([fdo#111614]) +1 similar issue
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][92] ([fdo#111615]) +1 similar issue
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-4/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][93] ([i915#4538] / [i915#5190]) +1 similar issue
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][94] ([fdo#110723])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_big_fb@yf-tiled-64bpp-rotate-0.html

  * igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc:
    - shard-mtlp:         NOTRUN -> [SKIP][95] ([i915#3886] / [i915#6095]) +2 similar issues
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
    - shard-rkl:          NOTRUN -> [SKIP][96] ([i915#3886] / [i915#5354] / [i915#6095]) +1 similar issue
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_dg2_mc_ccs:
    - shard-dg1:          NOTRUN -> [SKIP][97] ([i915#3689] / [i915#5354] / [i915#6095])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-14/igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-yf_tiled_ccs:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#3734] / [i915#5354] / [i915#6095])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-6/igt@kms_ccs@pipe-b-ccs-on-another-bo-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-dg2:          NOTRUN -> [SKIP][99] ([i915#3689] / [i915#3886] / [i915#5354]) +8 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_dg2_rc_ccs:
    - shard-rkl:          NOTRUN -> [SKIP][100] ([i915#5354] / [i915#6095]) +2 similar issues
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-d-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-mtlp:         NOTRUN -> [SKIP][101] ([i915#6095]) +5 similar issues
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-5/igt@kms_ccs@pipe-d-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-d-crc-primary-basic-y_tiled_ccs:
    - shard-dg2:          NOTRUN -> [SKIP][102] ([i915#3689] / [i915#5354]) +13 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_ccs@pipe-d-crc-primary-basic-y_tiled_ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][103] ([i915#3689] / [i915#5354] / [i915#6095])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-9/igt@kms_ccs@pipe-d-crc-primary-basic-y_tiled_ccs.html

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs:
    - shard-tglu:         NOTRUN -> [SKIP][104] ([i915#5354] / [i915#6095])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-9/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-d-random-ccs-data-4_tiled_dg2_rc_ccs:
    - shard-rkl:          NOTRUN -> [SKIP][105] ([i915#5354]) +6 similar issues
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@kms_ccs@pipe-d-random-ccs-data-4_tiled_dg2_rc_ccs.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-dg2:          NOTRUN -> [SKIP][106] ([i915#4087] / [i915#7213])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@kms_cdclk@mode-transition-all-outputs.html
    - shard-rkl:          NOTRUN -> [SKIP][107] ([i915#3742])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-tglu:         NOTRUN -> [SKIP][108] ([i915#7828]) +1 similar issue
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-8/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][109] ([i915#7828]) +7 similar issues
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_frames@dp-frame-dump:
    - shard-dg1:          NOTRUN -> [SKIP][110] ([i915#7828]) +1 similar issue
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-13/igt@kms_chamelium_frames@dp-frame-dump.html

  * igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][111] ([i915#7828]) +4 similar issues
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#7828]) +3 similar issues
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_color@deep-color:
    - shard-dg2:          NOTRUN -> [SKIP][113] ([i915#3555]) +5 similar issues
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@kms_color@deep-color.html
    - shard-dg1:          NOTRUN -> [SKIP][114] ([i915#3555])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@kms_color@deep-color.html

  * igt@kms_concurrent@pipe-c:
    - shard-rkl:          NOTRUN -> [SKIP][115] ([i915#4070] / [i915#6768])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_concurrent@pipe-c.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#3299])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][117] ([i915#6944])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-1/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@srm@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [TIMEOUT][118] ([i915#7173]) +1 similar issue
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_content_protection@srm@pipe-a-dp-4.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([fdo#109274] / [i915#5354]) +3 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-mtlp:         NOTRUN -> [SKIP][120] ([i915#4213])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2:          NOTRUN -> [SKIP][121] ([i915#4103] / [i915#4213])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#3804])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][123] ([fdo#111825]) +2 similar issues
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([fdo#109274] / [fdo#111767])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-panning-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][125] ([i915#3637])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@kms_flip@2x-flip-vs-panning-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][126] ([fdo#109274]) +3 similar issues
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-snb:          NOTRUN -> [DMESG-WARN][127] ([i915#8841]) +4 similar issues
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-snb1/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][128] ([i915#2672]) +1 similar issue
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][129] ([i915#2672])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
    - shard-dg2:          NOTRUN -> [FAIL][130] ([i915#6880])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite:
    - shard-dg2:          [PASS][131] -> [FAIL][132] ([i915#6880])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][133] ([i915#5354]) +27 similar issues
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
    - shard-dg1:          NOTRUN -> [SKIP][134] ([fdo#111825]) +3 similar issues
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#8708]) +7 similar issues
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt.html
    - shard-tglu:         NOTRUN -> [SKIP][136] ([fdo#110189]) +1 similar issue
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt.html
    - shard-mtlp:         NOTRUN -> [SKIP][137] ([i915#8708]) +1 similar issue
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
    - shard-rkl:          NOTRUN -> [SKIP][138] ([fdo#111825] / [i915#1825]) +10 similar issues
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][139] ([i915#3458]) +1 similar issue
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-mtlp:         NOTRUN -> [SKIP][140] ([i915#1825]) +10 similar issues
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][141] ([i915#8708])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][142] ([fdo#109280]) +6 similar issues
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#3458]) +9 similar issues
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
    - shard-rkl:          NOTRUN -> [SKIP][144] ([i915#3023]) +4 similar issues
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#3555] / [i915#8228])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@kms_hdr@static-toggle-suspend.html
    - shard-rkl:          NOTRUN -> [SKIP][146] ([i915#3555] / [i915#8228])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-dg2:          NOTRUN -> [SKIP][147] ([i915#6301])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@kms_panel_fitting@atomic-fastset.html
    - shard-dg1:          NOTRUN -> [SKIP][148] ([i915#6301])
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-15/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane@pixel-format@pipe-b-planes:
    - shard-mtlp:         [PASS][149] -> [FAIL][150] ([i915#1623])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-1/igt@kms_plane@pixel-format@pipe-b-planes.html
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-2/igt@kms_plane@pixel-format@pipe-b-planes.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#8821])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][152] ([i915#8806])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][153] ([i915#8292])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-16/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html

  * igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][154] ([i915#5176]) +7 similar issues
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-3/igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-a-hdmi-a-3.html

  * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-25@pipe-d-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][155] ([i915#5176]) +23 similar issues
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-13/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-25@pipe-d-hdmi-a-3.html

  * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-5@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][156] ([i915#5176]) +5 similar issues
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-5@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1:
    - shard-snb:          NOTRUN -> [SKIP][157] ([fdo#109271]) +34 similar issues
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-snb5/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][158] ([i915#5235]) +23 similar issues
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][159] ([i915#5235]) +7 similar issues
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][160] ([i915#5235]) +19 similar issues
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-12/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf:
    - shard-dg2:          NOTRUN -> [SKIP][161] ([i915#658]) +1 similar issue
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf.html
    - shard-tglu:         NOTRUN -> [SKIP][162] ([i915#658])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-6/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@primary_mmap_cpu:
    - shard-dg2:          NOTRUN -> [SKIP][163] ([i915#1072]) +5 similar issues
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-6/igt@kms_psr@primary_mmap_cpu.html

  * igt@kms_psr@primary_page_flip:
    - shard-rkl:          NOTRUN -> [SKIP][164] ([i915#1072]) +1 similar issue
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@kms_psr@primary_page_flip.html

  * igt@kms_psr@psr2_primary_mmap_gtt:
    - shard-dg1:          NOTRUN -> [SKIP][165] ([i915#1072])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-15/igt@kms_psr@psr2_primary_mmap_gtt.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-rkl:          NOTRUN -> [SKIP][166] ([i915#3555]) +1 similar issue
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_selftest@drm_damage:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([i915#8661])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@kms_selftest@drm_damage.html

  * igt@kms_vblank@pipe-d-ts-continuation-dpms-suspend:
    - shard-tglu:         [PASS][168] -> [ABORT][169] ([i915#5122])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-10/igt@kms_vblank@pipe-d-ts-continuation-dpms-suspend.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-5/igt@kms_vblank@pipe-d-ts-continuation-dpms-suspend.html

  * igt@kms_vblank@pipe-d-wait-idle:
    - shard-rkl:          NOTRUN -> [SKIP][170] ([i915#4070] / [i915#533] / [i915#6768])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-2/igt@kms_vblank@pipe-d-wait-idle.html

  * igt@perf@enable-disable@0-rcs0:
    - shard-dg2:          [PASS][171] -> [FAIL][172] ([i915#8724])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-5/igt@perf@enable-disable@0-rcs0.html
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@perf@enable-disable@0-rcs0.html

  * igt@perf_pmu@busy-idle@vcs0:
    - shard-mtlp:         NOTRUN -> [FAIL][173] ([i915#4349]) +3 similar issues
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@perf_pmu@busy-idle@vcs0.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-dg2:          NOTRUN -> [SKIP][174] ([i915#8850])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-10/igt@perf_pmu@cpu-hotplug.html
    - shard-dg1:          NOTRUN -> [SKIP][175] ([i915#8850])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-18/igt@perf_pmu@cpu-hotplug.html

  * igt@perf_pmu@render-node-busy-idle@ccs0:
    - shard-mtlp:         [PASS][176] -> [FAIL][177] ([i915#4349]) +3 similar issues
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-3/igt@perf_pmu@render-node-busy-idle@ccs0.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-8/igt@perf_pmu@render-node-busy-idle@ccs0.html

  * igt@perf_pmu@render-node-busy-idle@vcs1:
    - shard-dg2:          [PASS][178] -> [FAIL][179] ([i915#4349]) +7 similar issues
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-1/igt@perf_pmu@render-node-busy-idle@vcs1.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-2/igt@perf_pmu@render-node-busy-idle@vcs1.html
    - shard-dg1:          [PASS][180] -> [FAIL][181] ([i915#4349]) +2 similar issues
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-16/igt@perf_pmu@render-node-busy-idle@vcs1.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@perf_pmu@render-node-busy-idle@vcs1.html

  * igt@prime_vgem@basic-fence-mmap:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#3708] / [i915#4077])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@prime_vgem@basic-fence-mmap.html
    - shard-dg1:          NOTRUN -> [SKIP][183] ([i915#3708] / [i915#4077])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-19/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-read:
    - shard-mtlp:         NOTRUN -> [SKIP][184] ([i915#3708])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@prime_vgem@basic-read.html
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#3291] / [i915#3708])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@prime_vgem@basic-read.html

  * igt@runner@aborted:
    - shard-snb:          NOTRUN -> ([FAIL][186], [FAIL][187]) ([i915#7812] / [i915#8848])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-snb7/igt@runner@aborted.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-snb7/igt@runner@aborted.html

  * igt@sysfs_heartbeat_interval@nopreempt@bcs0:
    - shard-mtlp:         [PASS][188] -> [FAIL][189] ([i915#6015]) +2 similar issues
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-1/igt@sysfs_heartbeat_interval@nopreempt@bcs0.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-2/igt@sysfs_heartbeat_interval@nopreempt@bcs0.html

  * igt@sysfs_heartbeat_interval@precise@vecs0:
    - shard-mtlp:         [PASS][190] -> [FAIL][191] ([i915#8332])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-7/igt@sysfs_heartbeat_interval@precise@vecs0.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-7/igt@sysfs_heartbeat_interval@precise@vecs0.html

  * igt@v3d/v3d_perfmon@create-perfmon-0:
    - shard-rkl:          NOTRUN -> [SKIP][192] ([fdo#109315]) +2 similar issues
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-7/igt@v3d/v3d_perfmon@create-perfmon-0.html

  * igt@v3d/v3d_perfmon@get-values-invalid-pad:
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#2575]) +2 similar issues
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-1/igt@v3d/v3d_perfmon@get-values-invalid-pad.html

  * igt@v3d/v3d_submit_cl@bad-perfmon:
    - shard-dg2:          NOTRUN -> [SKIP][194] ([i915#2575]) +7 similar issues
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@v3d/v3d_submit_cl@bad-perfmon.html

  * igt@v3d/v3d_wait_bo@used-bo-1ns:
    - shard-tglu:         NOTRUN -> [SKIP][195] ([fdo#109315] / [i915#2575]) +1 similar issue
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-2/igt@v3d/v3d_wait_bo@used-bo-1ns.html

  * igt@vc4/vc4_wait_bo@unused-bo-0ns:
    - shard-mtlp:         NOTRUN -> [SKIP][196] ([i915#7711]) +1 similar issue
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-7/igt@vc4/vc4_wait_bo@unused-bo-0ns.html

  * igt@vc4/vc4_wait_seqno@bad-seqno-1ns:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#7711]) +1 similar issue
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-5/igt@vc4/vc4_wait_seqno@bad-seqno-1ns.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg2:          [ABORT][198] ([i915#5507] / [i915#8260]) -> [PASS][199]
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-5/igt@device_reset@unbind-reset-rebind.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-1/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@most-busy-check-all@rcs0:
    - shard-rkl:          [FAIL][200] ([i915#7742]) -> [PASS][201]
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-1/igt@drm_fdinfo@most-busy-check-all@rcs0.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-4/igt@drm_fdinfo@most-busy-check-all@rcs0.html

  * igt@gem_eio@reset-stress:
    - shard-dg1:          [FAIL][202] ([i915#5784]) -> [PASS][203]
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-15/igt@gem_eio@reset-stress.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-18/igt@gem_eio@reset-stress.html

  * igt@gem_exec_balancer@sequential:
    - shard-dg1:          [DMESG-WARN][204] ([i915#4423]) -> [PASS][205]
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-16/igt@gem_exec_balancer@sequential.html
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-16/igt@gem_exec_balancer@sequential.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-glk:          [FAIL][206] ([i915#2842]) -> [PASS][207] +2 similar issues
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-glk5/igt@gem_exec_fair@basic-pace@rcs0.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-glk2/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@i915_hangman@detector@vcs0:
    - shard-mtlp:         [FAIL][208] ([i915#8456]) -> [PASS][209] +2 similar issues
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-3/igt@i915_hangman@detector@vcs0.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-4/igt@i915_hangman@detector@vcs0.html

  * igt@i915_hangman@gt-engine-error@vcs0:
    - shard-mtlp:         [FAIL][210] ([i915#7069]) -> [PASS][211]
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-6/igt@i915_hangman@gt-engine-error@vcs0.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-4/igt@i915_hangman@gt-engine-error@vcs0.html

  * igt@i915_pipe_stress@stress-xrgb8888-untiled:
    - shard-mtlp:         [FAIL][212] ([i915#8691]) -> [PASS][213]
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-7/igt@i915_pipe_stress@stress-xrgb8888-untiled.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-2/igt@i915_pipe_stress@stress-xrgb8888-untiled.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-tglu:         [FAIL][214] ([i915#3989] / [i915#454]) -> [PASS][215]
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-6/igt@i915_pm_dc@dc6-dpms.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-2/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
    - shard-rkl:          [SKIP][216] ([i915#1937]) -> [PASS][217]
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-1/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-7/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html

  * igt@i915_pm_rc6_residency@rc6-accuracy:
    - shard-mtlp:         [SKIP][218] ([fdo#109289] / [i915#8403]) -> [PASS][219]
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-8/igt@i915_pm_rc6_residency@rc6-accuracy.html
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@i915_pm_rc6_residency@rc6-accuracy.html

  * igt@i915_pm_rc6_residency@rc6-idle@vecs0:
    - shard-dg1:          [FAIL][220] ([i915#3591]) -> [PASS][221]
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-14/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - shard-dg1:          [FAIL][222] ([i915#7691]) -> [PASS][223]
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-15/igt@i915_pm_rpm@basic-pci-d3-state.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-19/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_pm_rpm@dpms-non-lpsp:
    - shard-rkl:          [SKIP][224] ([i915#1397]) -> [PASS][225] +1 similar issue
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-rkl-7/igt@i915_pm_rpm@dpms-non-lpsp.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-rkl-1/igt@i915_pm_rpm@dpms-non-lpsp.html

  * igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-lmem0:
    - shard-dg1:          [FAIL][226] ([i915#7940]) -> [PASS][227]
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-15/igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-lmem0.html
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-14/igt@i915_pm_rpm@gem-execbuf-stress@extra-wait-lmem0.html

  * igt@i915_pm_rpm@i2c:
    - shard-dg2:          [FAIL][228] ([i915#8717]) -> [PASS][229]
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-2/igt@i915_pm_rpm@i2c.html
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@i915_pm_rpm@i2c.html

  * igt@i915_selftest@live@workarounds:
    - shard-mtlp:         [DMESG-FAIL][230] ([i915#6763]) -> [PASS][231]
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-7/igt@i915_selftest@live@workarounds.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-1/igt@i915_selftest@live@workarounds.html

  * igt@i915_suspend@forcewake:
    - shard-dg2:          [TIMEOUT][232] ([fdo#103375]) -> [PASS][233]
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-5/igt@i915_suspend@forcewake.html
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@i915_suspend@forcewake.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-apl:          [FAIL][234] ([i915#2346]) -> [PASS][235] +1 similar issue
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-apl7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
    - shard-glk:          [FAIL][236] ([i915#2346]) -> [PASS][237]
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@single-move@all-pipes:
    - shard-mtlp:         [DMESG-WARN][238] ([i915#2017]) -> [PASS][239]
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-4/igt@kms_cursor_legacy@single-move@all-pipes.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-7/igt@kms_cursor_legacy@single-move@all-pipes.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-dp4:
    - shard-dg2:          [FAIL][240] ([fdo#103375]) -> [PASS][241]
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-11/igt@kms_flip@flip-vs-suspend-interruptible@a-dp4.html
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_flip@flip-vs-suspend-interruptible@a-dp4.html

  * igt@kms_flip@plain-flip-ts-check@a-hdmi-a1:
    - shard-glk:          [FAIL][242] ([i915#2122]) -> [PASS][243]
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-glk8/igt@kms_flip@plain-flip-ts-check@a-hdmi-a1.html
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-glk9/igt@kms_flip@plain-flip-ts-check@a-hdmi-a1.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-edp1:
    - shard-mtlp:         [DMESG-WARN][244] ([i915#1982]) -> [PASS][245]
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-4/igt@kms_flip@wf_vblank-ts-check-interruptible@a-edp1.html
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-6/igt@kms_flip@wf_vblank-ts-check-interruptible@a-edp1.html

  * igt@kms_plane@pixel-format-source-clamping@pipe-b-planes:
    - shard-mtlp:         [FAIL][246] ([i915#1623]) -> [PASS][247]
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-7/igt@kms_plane@pixel-format-source-clamping@pipe-b-planes.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@kms_plane@pixel-format-source-clamping@pipe-b-planes.html

  * igt@kms_sysfs_edid_timing:
    - shard-dg2:          [FAIL][248] ([IGT#2]) -> [PASS][249]
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-2/igt@kms_sysfs_edid_timing.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@kms_sysfs_edid_timing.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
    - shard-tglu:         [ABORT][250] ([i915#5122] / [i915#8213]) -> [PASS][251]
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-2/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-9/igt@kms_vblank@pipe-c-ts-continuation-suspend.html

  * igt@perf_pmu@busy-idle@vcs0:
    - shard-dg2:          [FAIL][252] ([i915#4349]) -> [PASS][253] +7 similar issues
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-11/igt@perf_pmu@busy-idle@vcs0.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-11/igt@perf_pmu@busy-idle@vcs0.html
    - shard-dg1:          [FAIL][254] ([i915#4349]) -> [PASS][255] +2 similar issues
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-13/igt@perf_pmu@busy-idle@vcs0.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-19/igt@perf_pmu@busy-idle@vcs0.html

  
#### Warnings ####

  * igt@gem_exec_whisper@basic-contexts-forked-all:
    - shard-mtlp:         [TIMEOUT][256] ([i915#7392] / [i915#8628]) -> [ABORT][257] ([i915#7392] / [i915#8131])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-4/igt@gem_exec_whisper@basic-contexts-forked-all.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-3/igt@gem_exec_whisper@basic-contexts-forked-all.html

  * igt@gem_exec_whisper@basic-contexts-priority-all:
    - shard-mtlp:         [TIMEOUT][258] ([i915#7392]) -> [ABORT][259] ([i915#7392] / [i915#8131])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-8/igt@gem_exec_whisper@basic-contexts-priority-all.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-7/igt@gem_exec_whisper@basic-contexts-priority-all.html

  * igt@gem_tiled_pread_pwrite:
    - shard-dg1:          [SKIP][260] ([i915#4079] / [i915#4423]) -> [SKIP][261] ([i915#4079])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-16/igt@gem_tiled_pread_pwrite.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-17/igt@gem_tiled_pread_pwrite.html

  * igt@i915_module_load@resize-bar:
    - shard-dg1:          [SKIP][262] ([i915#4423] / [i915#7178]) -> [SKIP][263] ([i915#7178])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-18/igt@i915_module_load@resize-bar.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-12/igt@i915_module_load@resize-bar.html

  * igt@i915_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-tglu:         [SKIP][264] ([fdo#111644] / [i915#1397]) -> [FAIL][265] ([i915#7940])
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-tglu-5/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-tglu-2/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_async_flips@crc@pipe-a-edp-1:
    - shard-mtlp:         [DMESG-FAIL][266] ([i915#1982] / [i915#8561]) -> [DMESG-FAIL][267] ([i915#8561])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-mtlp-6/igt@kms_async_flips@crc@pipe-a-edp-1.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-mtlp-1/igt@kms_async_flips@crc@pipe-a-edp-1.html

  * igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_rc_ccs_cc:
    - shard-dg1:          [SKIP][268] ([i915#4423] / [i915#5354] / [i915#6095]) -> [SKIP][269] ([i915#5354] / [i915#6095])
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-18/igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_rc_ccs_cc.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-16/igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_rc_ccs_cc.html

  * igt@kms_content_protection@lic@pipe-a-dp-1:
    - shard-apl:          [TIMEOUT][270] ([i915#7173]) -> [FAIL][271] ([i915#7181])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-apl7/igt@kms_content_protection@lic@pipe-a-dp-1.html
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-apl4/igt@kms_content_protection@lic@pipe-a-dp-1.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff:
    - shard-dg1:          [SKIP][272] ([fdo#111825] / [i915#4423]) -> [SKIP][273] ([fdo#111825])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff.html
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_psr@sprite_plane_onoff:
    - shard-dg1:          [SKIP][274] ([i915#1072] / [i915#4078]) -> [SKIP][275] ([i915#1072])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg1-13/igt@kms_psr@sprite_plane_onoff.html
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg1-14/igt@kms_psr@sprite_plane_onoff.html

  * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
    - shard-dg2:          [INCOMPLETE][276] ([i915#5493]) -> [CRASH][277] ([i915#7331])
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13472/shard-dg2-5/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/shard-dg2-8/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html

  
  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1623]: https://gitlab.freedesktop.org/drm/intel/issues/1623
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2410]: https://gitlab.freedesktop.org/drm/intel/issues/2410
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4423]: https://gitlab.freedesktop.org/drm/intel/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
  [i915#5507]: https://gitlab.freedesktop.org/drm/intel/issues/5507
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5892]: https://gitlab.freedesktop.org/drm/intel/issues/5892
  [i915#6015]: https://gitlab.freedesktop.org/drm/intel/issues/6015
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
  [i915#6763]: https://gitlab.freedesktop.org/drm/intel/issues/6763
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6880]: https://gitlab.freedesktop.org/drm/intel/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#7069]: https://gitlab.freedesktop.org/drm/intel/issues/7069
  [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
  [i915#7178]: https://gitlab.freedesktop.org/drm/intel/issues/7178
  [i915#7181]: https://gitlab.freedesktop.org/drm/intel/issues/7181
  [i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213
  [i915#7331]: https://gitlab.freedesktop.org/drm/intel/issues/7331
  [i915#7392]: https://gitlab.freedesktop.org/drm/intel/issues/7392
  [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7691]: https://gitlab.freedesktop.org/drm/intel/issues/7691
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7812]: https://gitlab.freedesktop.org/drm/intel/issues/7812
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7940]: https://gitlab.freedesktop.org/drm/intel/issues/7940
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8131]: https://gitlab.freedesktop.org/drm/intel/issues/8131
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247
  [i915#8260]: https://gitlab.freedesktop.org/drm/intel/issues/8260
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
  [i915#8332]: https://gitlab.freedesktop.org/drm/intel/issues/8332
  [i915#8398]: https://gitlab.freedesktop.org/drm/intel/issues/8398
  [i915#8403]: https://gitlab.freedesktop.org/drm/intel/issues/8403
  [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
  [i915#8456]: https://gitlab.freedesktop.org/drm/intel/issues/8456
  [i915#8502]: https://gitlab.freedesktop.org/drm/intel/issues/8502
  [i915#8503]: https://gitlab.freedesktop.org/drm/intel/issues/8503
  [i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
  [i915#8561]: https://gitlab.freedesktop.org/drm/intel/issues/8561
  [i915#8573]: https://gitlab.freedesktop.org/drm/intel/issues/8573
  [i915#8628]: https://gitlab.freedesktop.org/drm/intel/issues/8628
  [i915#8661]: https://gitlab.freedesktop.org/drm/intel/issues/8661
  [i915#8691]: https://gitlab.freedesktop.org/drm/intel/issues/8691
  [i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
  [i915#8717]: https://gitlab.freedesktop.org/drm/intel/issues/8717
  [i915#8724]: https://gitlab.freedesktop.org/drm/intel/issues/8724
  [i915#8806]: https://gitlab.freedesktop.org/drm/intel/issues/8806
  [i915#8821]: https://gitlab.freedesktop.org/drm/intel/issues/8821
  [i915#8841]: https://gitlab.freedesktop.org/drm/intel/issues/8841
  [i915#8848]: https://gitlab.freedesktop.org/drm/intel/issues/8848
  [i915#8850]: https://gitlab.freedesktop.org/drm/intel/issues/8850


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7413 -> IGTPW_9512
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_13472: 9f699732195d9d8071692f7981e8fe58d51cd024 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_9512: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html
  IGT_7413: 7413
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9512/index.html

[-- Attachment #2: Type: text/html, Size: 84891 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [igt-dev] [PATCH] tests/amdgpu: add RAS tests
  2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
                   ` (3 preceding siblings ...)
  2023-08-04  7:52 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2023-08-04 15:44 ` Luben Tuikov
  4 siblings, 0 replies; 6+ messages in thread
From: Luben Tuikov @ 2023-08-04 15:44 UTC (permalink / raw)
  To: vitaly.prosyak, igt-dev
  Cc: alexander.deucher, Xinhui Pan, christian.koenig, Guchun Chen

On 2023-08-03 21:52, vitaly.prosyak@amd.com wrote:
> From: Vitaly Prosyak <vitaly.prosyak@amd.com>
> 
> RAS (Reliability, Availability and Serviceability) employs a mix of hardware
> and software mechanisms to validate/improve the reliability of AMD GPU execution.
> 
> Ported and refactored drmlib RAS tests and the following is done:
>  1. Remove everywhere global variables.
>  2. Split data into struct amd_ras_setup and struct amd_ras_single_test_setup for easy maintenance.
>  3. Use IGT built-in dynamic features and fixture functions.
>  4. Properly formatted code to meet IGT guidelines.
> 
> Cc: Luben Tuikov <luben.tuikov@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian Koenig <christian.koenig@amd.com>
> Cc: Guchun Chen <guchun.chen@amd.com>
> Cc: Xinhui Pan <xinhui.pan@amd.com>
> Signed-off-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
> ---
>  tests/amdgpu/amd_ras.c   | 1041 ++++++++++++++++++++++++++++++++++++++
>  tests/amdgpu/meson.build |    1 +
>  2 files changed, 1042 insertions(+)
>  create mode 100644 tests/amdgpu/amd_ras.c
> 
> diff --git a/tests/amdgpu/amd_ras.c b/tests/amdgpu/amd_ras.c
> new file mode 100644
> index 000000000..cea4ddeff
> --- /dev/null
> +++ b/tests/amdgpu/amd_ras.c
> @@ -0,0 +1,1041 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright 2017 Advanced Micro Devices, Inc.
> + * Copyright 2023 Advanced Micro Devices, Inc.
> + */
> +
> +#include <fcntl.h>
> +#include <stdio.h>
> +#include <limits.h>
> +
> +#include <amdgpu.h>
> +#include "amdgpu_drm.h"
> +
> +#include "igt.h"
> +#include "lib/amdgpu/amd_ip_blocks.h"
> +
> +#define PATH_SIZE PATH_MAX
> +
> +const char *ras_block_string[] = {
> +	"umc",
> +	"sdma",
> +	"gfx",
> +	"mmhub",
> +	"athub",
> +	"pcie_bif",
> +	"hdp",
> +	"xgmi_wafl",
> +	"df",
> +	"smn",
> +	"sem",
> +	"mp0",
> +	"mp1",
> +	"fuse",
> +};
> +
> +#define ras_block_str(i) (ras_block_string[i])
> +
> +enum amdgpu_ras_block {
> +	AMDGPU_RAS_BLOCK__UMC = 0,
> +	AMDGPU_RAS_BLOCK__SDMA,
> +	AMDGPU_RAS_BLOCK__GFX,
> +	AMDGPU_RAS_BLOCK__MMHUB,
> +	AMDGPU_RAS_BLOCK__ATHUB,
> +	AMDGPU_RAS_BLOCK__PCIE_BIF,
> +	AMDGPU_RAS_BLOCK__HDP,
> +	AMDGPU_RAS_BLOCK__XGMI_WAFL,
> +	AMDGPU_RAS_BLOCK__DF,
> +	AMDGPU_RAS_BLOCK__SMN,
> +	AMDGPU_RAS_BLOCK__SEM,
> +	AMDGPU_RAS_BLOCK__MP0,
> +	AMDGPU_RAS_BLOCK__MP1,
> +	AMDGPU_RAS_BLOCK__FUSE,
> +
> +	AMDGPU_RAS_BLOCK__LAST
> +};
> +
> +#define AMDGPU_RAS_BLOCK_COUNT	AMDGPU_RAS_BLOCK__LAST
> +#define AMDGPU_RAS_BLOCK_MASK	((1ULL << AMDGPU_RAS_BLOCK_COUNT) - 1)
> +
> +enum amdgpu_ras_gfx_subblock {
> +	/* CPC */
> +	AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_START = 0,
> +	AMDGPU_RAS_BLOCK__GFX_CPC_SCRATCH =
> +		AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_CPC_UCODE,
> +	AMDGPU_RAS_BLOCK__GFX_DC_STATE_ME1,
> +	AMDGPU_RAS_BLOCK__GFX_DC_CSINVOC_ME1,
> +	AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME1,
> +	AMDGPU_RAS_BLOCK__GFX_DC_STATE_ME2,
> +	AMDGPU_RAS_BLOCK__GFX_DC_CSINVOC_ME2,
> +	AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME2,
> +	AMDGPU_RAS_BLOCK__GFX_CPC_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_DC_RESTORE_ME2,
> +	/* CPF */
> +	AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_CPF_ROQ_ME2 =
> +		AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_CPF_ROQ_ME1,
> +	AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
> +	AMDGPU_RAS_BLOCK__GFX_CPF_INDEX_END = AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
> +	/* CPG */
> +	AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_CPG_DMA_ROQ =
> +		AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_CPG_DMA_TAG,
> +	AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
> +	AMDGPU_RAS_BLOCK__GFX_CPG_INDEX_END = AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
> +	/* GDS */
> +	AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_MEM = AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_INPUT_QUEUE,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PHY_CMD_RAM_MEM,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PHY_DATA_RAM_MEM,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_OA_PIPE_MEM,
> +	AMDGPU_RAS_BLOCK__GFX_GDS_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_GDS_OA_PIPE_MEM,
> +	/* SPI */
> +	AMDGPU_RAS_BLOCK__GFX_SPI_SR_MEM,
> +	/* SQ */
> +	AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQ_SGPR = AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQ_LDS_D,
> +	AMDGPU_RAS_BLOCK__GFX_SQ_LDS_I,
> +	AMDGPU_RAS_BLOCK__GFX_SQ_VGPR,
> +	AMDGPU_RAS_BLOCK__GFX_SQ_INDEX_END = AMDGPU_RAS_BLOCK__GFX_SQ_VGPR,
> +	/* SQC (3 ranges) */
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_START,
> +	/* SQC range 0 */
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_START =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_UTCL1_LFIFO =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU0_WRITE_DATA_BUF,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU0_UTCL1_LFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_WRITE_DATA_BUF,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_UTCL1_LFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_WRITE_DATA_BUF,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_UTCL1_LFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX0_END =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU2_UTCL1_LFIFO,
> +	/* SQC range 1 */
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_TAG_RAM =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_UTCL1_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_BANK_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_TAG_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_HIT_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_DIRTY_BIT_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_BANK_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX1_END =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKA_BANK_RAM,
> +	/* SQC range 2 */
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_TAG_RAM =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_UTCL1_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_BANK_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_TAG_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_HIT_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_MISS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_DIRTY_BIT_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_BANK_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_END =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_DATA_BANKB_BANK_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_SQC_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_SQC_INDEX2_END,
> +	/* TA */
> +	AMDGPU_RAS_BLOCK__GFX_TA_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TA_FS_DFIFO =
> +		AMDGPU_RAS_BLOCK__GFX_TA_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TA_FS_AFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TA_FL_LFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TA_FX_LFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TA_FS_CFIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TA_INDEX_END = AMDGPU_RAS_BLOCK__GFX_TA_FS_CFIFO,
> +	/* TCA */
> +	AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCA_HOLE_FIFO =
> +		AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCA_REQ_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCA_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCA_REQ_FIFO,
> +	/* TCC (5 sub-ranges) */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_START,
> +	/* TCC range 0 */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_START =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_0_1,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_0,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_1,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DIRTY_BANK_0,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DIRTY_BANK_1,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_HIGH_RATE_TAG,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_LOW_RATE_TAG,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX0_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_LOW_RATE_TAG,
> +	/* TCC range 1 */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_DEC =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_TRANSFER,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX1_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_IN_USE_TRANSFER,
> +	/* TCC range 2 */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_RETURN_DATA =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_RETURN_CONTROL,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_UC_ATOMIC_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_WRITE_RETURN,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_WRITE_CACHE_READ,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_SRC_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_SRC_FIFO_NEXT_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_TAG_PROBE_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX2_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_TAG_PROBE_FIFO,
> +	/* TCC range 3 */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO_NEXT_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX3_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_LATENCY_FIFO_NEXT_RAM,
> +	/* TCC range 4 */
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_WRRET_TAG_WRITE_RETURN =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_ATOMIC_RETURN_BUFFER,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_ATOMIC_RETURN_BUFFER,
> +	AMDGPU_RAS_BLOCK__GFX_TCC_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCC_INDEX4_END,
> +	/* TCI */
> +	AMDGPU_RAS_BLOCK__GFX_TCI_WRITE_RAM,
> +	/* TCP */
> +	AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_CACHE_RAM =
> +		AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_LFIFO_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_CMD_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_VM_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_DB_RAM,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO0,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO1,
> +	AMDGPU_RAS_BLOCK__GFX_TCP_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_TCP_UTCL1_LFIFO1,
> +	/* TD */
> +	AMDGPU_RAS_BLOCK__GFX_TD_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_LO =
> +		AMDGPU_RAS_BLOCK__GFX_TD_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_HI,
> +	AMDGPU_RAS_BLOCK__GFX_TD_CS_FIFO,
> +	AMDGPU_RAS_BLOCK__GFX_TD_INDEX_END = AMDGPU_RAS_BLOCK__GFX_TD_CS_FIFO,
> +	/* EA (3 sub-ranges) */
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX_START,
> +	/* EA range 0 */
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_START =
> +		AMDGPU_RAS_BLOCK__GFX_EA_INDEX_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_CMDMEM =
> +		AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_CMDMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_DATAMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_RRET_TAGMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_WRET_TAGMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_GMIRD_CMDMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_CMDMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_DATAMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX0_END =
> +		AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_DATAMEM,
> +	/* EA range 1 */
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_PAGEMEM =
> +		AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_DRAMWR_PAGEMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_IORD_CMDMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_IOWR_CMDMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_IOWR_DATAMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_GMIRD_PAGEMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_PAGEMEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX1_END =
> +		AMDGPU_RAS_BLOCK__GFX_EA_GMIWR_PAGEMEM,
> +	/* EA range 2 */
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D0MEM =
> +		AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_START,
> +	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D1MEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D2MEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_MAM_D3MEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_END =
> +		AMDGPU_RAS_BLOCK__GFX_EA_MAM_D3MEM,
> +	AMDGPU_RAS_BLOCK__GFX_EA_INDEX_END =
> +		AMDGPU_RAS_BLOCK__GFX_EA_INDEX2_END,
> +	/* UTC VM L2 bank */
> +	AMDGPU_RAS_BLOCK__UTC_VML2_BANK_CACHE,
> +	/* UTC VM walker */
> +	AMDGPU_RAS_BLOCK__UTC_VML2_WALKER,
> +	/* UTC ATC L2 2MB cache */
> +	AMDGPU_RAS_BLOCK__UTC_ATCL2_CACHE_2M_BANK,
> +	/* UTC ATC L2 4KB cache */
> +	AMDGPU_RAS_BLOCK__UTC_ATCL2_CACHE_4K_BANK,
> +	AMDGPU_RAS_BLOCK__GFX_MAX
> +};
> +
> +enum amdgpu_ras_error_type {
> +	AMDGPU_RAS_ERROR__NONE					= 0,
> +	AMDGPU_RAS_ERROR__PARITY				= 1,
> +	AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE	= 2,
> +	AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE	= 4,
> +	AMDGPU_RAS_ERROR__POISON				= 8,
> +};
> +
> +struct ras_inject_test_config {
> +	char name[64];
> +	char block[32];
> +	int sub_block;
> +	enum amdgpu_ras_error_type type;
> +	uint64_t address;
> +	uint64_t value;
> +};
> +
> +struct ras_common_if {
> +	enum amdgpu_ras_block block;
> +	enum amdgpu_ras_error_type type;
> +	uint32_t sub_block_index;
> +	char name[32];
> +};
> +
> +struct ras_inject_if {
> +	struct ras_common_if head;
> +	uint64_t address;
> +	uint64_t value;
> +};
> +
> +struct ras_debug_if {
> +	union {
> +		struct ras_common_if head;
> +		struct ras_inject_if inject;
> +	};
> +	int op;
> +};
> +
> +/* for now, only umc, gfx, sdma has implemented. */
> +#define DEFAULT_RAS_BLOCK_MASK_INJECT ((1 << AMDGPU_RAS_BLOCK__UMC) |\
> +		(1 << AMDGPU_RAS_BLOCK__GFX))
> +#define DEFAULT_RAS_BLOCK_MASK_QUERY ((1 << AMDGPU_RAS_BLOCK__UMC) |\
> +		(1 << AMDGPU_RAS_BLOCK__GFX))
> +#define DEFAULT_RAS_BLOCK_MASK_BASIC (1 << AMDGPU_RAS_BLOCK__UMC |\
> +		(1 << AMDGPU_RAS_BLOCK__SDMA) |\
> +		(1 << AMDGPU_RAS_BLOCK__GFX))
> +
> +
> +struct ras_test_mask {
> +	uint32_t inject_mask;
> +	uint32_t query_mask;
> +	uint32_t basic_mask;
> +};
> +
> +struct amdgpu_ras_data {
> +	amdgpu_device_handle device_handle;
> +	uint32_t  id;
> +	uint32_t  capability;
> +	struct ras_test_mask test_mask;
> +};
> +
> +struct amd_ras_setup {
> +	int devices_count;
> +	int drm_amdgpu[MAX_CARDS_SUPPORTED];
> +	struct amdgpu_ras_data devices[MAX_CARDS_SUPPORTED];
> +	bool run_basic_test;
> +	bool run_query_test;
> +	bool run_inject_test;
> +};
> +
> +struct amd_ras_single_test_setup {
> +	int test_card;
> +	amdgpu_device_handle device_handle;
> +	char sysfs_path[PATH_SIZE];
> +	char debugfs_path[PATH_SIZE];
> +	uint32_t ras_mask;
> +	uint32_t ras_block_mask_inject;
> +	uint32_t ras_block_mask_query;
> +	uint32_t ras_block_mask_basic;
> +};
> +
> +struct ras_DID_test_mask {
> +	uint16_t device_id;
> +	uint16_t revision_id;
> +	struct ras_test_mask test_mask;
> +};
> +
> +/* white list for inject test. */
> +#define RAS_BLOCK_MASK_ALL {\
> +	DEFAULT_RAS_BLOCK_MASK_INJECT,\
> +	DEFAULT_RAS_BLOCK_MASK_QUERY,\
> +	DEFAULT_RAS_BLOCK_MASK_BASIC\
> +}
> +
> +#define RAS_BLOCK_MASK_QUERY_BASIC {\
> +	0,\
> +	DEFAULT_RAS_BLOCK_MASK_QUERY,\
> +	DEFAULT_RAS_BLOCK_MASK_BASIC\
> +}
> +
> +static const
> +struct ras_inject_test_config umc_ras_inject_test[] = {
> +	{"ras_umc.1.0", "umc", 0, AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +};
> +
> +static const
> +struct ras_inject_test_config gfx_ras_inject_test[] = {
> +	{"ras_gfx.2.0", "gfx", AMDGPU_RAS_BLOCK__GFX_CPC_UCODE,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.1", "gfx", AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.2", "gfx", AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.3", "gfx", AMDGPU_RAS_BLOCK__GFX_SQ_LDS_D,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.4", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_UTCL1_LFIFO,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.5", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_TAG_RAM,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.6", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_TAG_RAM,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.7", "gfx", AMDGPU_RAS_BLOCK__GFX_TA_FS_DFIFO,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.8", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.9", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_0_1,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.10", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_0,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.11", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_1,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.12", "gfx", AMDGPU_RAS_BLOCK__GFX_TCP_CACHE_RAM,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.13", "gfx", AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_LO,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +	{"ras_gfx.2.14", "gfx", AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_CMDMEM,
> +		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
> +};
> +
> +/* Vega 20 */
> +static const
> +struct ras_DID_test_mask ras_DID_array[] = {
> +	{0x66a1, 0x00, RAS_BLOCK_MASK_ALL},
> +	{0x66a1, 0x01, RAS_BLOCK_MASK_ALL},
> +	{0x66a1, 0x04, RAS_BLOCK_MASK_ALL},
> +};
> +
> +static int
> +set_file_contents(char *file, char *buf, int size)
> +{
> +	int n, fd;
> +
> +	fd = open(file, O_WRONLY);
> +	if (fd == -1)
> +		return -1;
> +	n = write(fd, buf, size);
> +	close(fd);
> +	return n;
> +}
> +
> +static int
> +get_file_contents(char *file, char *buf, int size)
> +{
> +	int n, fd;
> +
> +	fd = open(file, O_RDONLY);
> +	if (fd == -1)
> +		return -1;
> +	n = read(fd, buf, size);
> +	close(fd);
> +	return n;
> +}
> +
> +static int
> +is_file_ok(const char *file, int flags)
> +{
> +	int fd;
> +
> +	fd = open(file, flags);
> +	if (fd == -1)
> +		return -1;
> +	close(fd);
> +	return 0;
> +}
> +
> +static uint32_t
> +amdgpu_ras_find_block_id_by_name(const char *name)
> +{
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(ras_block_string); i++) {
> +		if (strcmp(name, ras_block_string[i]) == 0)
> +			return i;
> +	}
> +
> +	return ARRAY_SIZE(ras_block_string);
> +}
> +
> +static const char *
> +amdgpu_ras_get_error_type_id(enum amdgpu_ras_error_type type)
> +{
> +	switch (type) {
> +	case AMDGPU_RAS_ERROR__PARITY:
> +		return "parity";
> +	case AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE:
> +		return "single_correctable";
> +	case AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE:
> +		return "multi_uncorrectable";
> +	case AMDGPU_RAS_ERROR__POISON:
> +		return "poison";
> +	case AMDGPU_RAS_ERROR__NONE:
> +	default:
> +		return NULL;
> +	}
> +}
> +
> +static struct
> +ras_test_mask amdgpu_ras_get_test_mask(drmDevicePtr device)
> +{
> +	int i;
> +	struct ras_test_mask default_test_mask = RAS_BLOCK_MASK_QUERY_BASIC;
> +
> +	for (i = 0; i < ARRAY_SIZE(ras_DID_array); i++) {
> +		if (ras_DID_array[i].device_id == device->deviceinfo.pci->device_id &&
> +				ras_DID_array[i].revision_id == device->deviceinfo.pci->revision_id)
> +			return ras_DID_array[i].test_mask;
> +	}
> +	return default_test_mask;
> +}
> +
> +static uint32_t
> +amdgpu_ras_lookup_capability(amdgpu_device_handle device_handle)
> +{
> +	union {
> +		uint64_t feature_mask;
> +		struct {
> +			uint32_t enabled_features;
> +			uint32_t supported_features;
> +		};
> +	} features = { 0 };
> +	int ret;
> +
> +	ret = amdgpu_query_info(device_handle, AMDGPU_INFO_RAS_ENABLED_FEATURES,
> +			sizeof(features), &features);
> +	if (ret)
> +		return 0;
> +
> +	return features.supported_features;
> +}
> +
> +static int
> +amdgpu_ras_lookup_id(drmDevicePtr device)
> +{
> +	char path[PATH_SIZE];
> +	char str[128];
> +	drmPciBusInfo info;
> +	int i;
> +	int ret;
> +
> +	for (i = 0; i < MAX_CARDS_SUPPORTED; i++) {
> +		memset(str, 0, sizeof(str));
> +		memset(&info, 0, sizeof(info));
> +		snprintf(path, PATH_SIZE, "/sys/kernel/debug/dri/%d/name", i);
> +		if (get_file_contents(path, str, sizeof(str)) <= 0)
> +			continue;
> +
> +		ret = sscanf(str, "amdgpu dev=%04hx:%02hhx:%02hhx.%01hhx",
> +				&info.domain, &info.bus, &info.dev, &info.func);
> +		if (ret != 4)
> +			continue;
> +
> +		if (memcmp(&info, device->businfo.pci, sizeof(info)) == 0)
> +			return i;
> +	}
> +	return -1;
> +}
> +
> +static void
> +set_test_card(struct amd_ras_setup *setup,  int card, struct amd_ras_single_test_setup *test)
> +{
> +	test->test_card = card;
> +	snprintf(test->sysfs_path, PATH_SIZE, "/sys/class/drm/card%d/device/ras/", setup->devices[card].id);
> +	snprintf(test->debugfs_path, PATH_SIZE,  "/sys/kernel/debug/dri/%d/ras/", setup->devices[card].id);
> +	test->ras_mask = setup->devices[card].capability;
> +	test->device_handle = setup->devices[card].device_handle;
> +	test->ras_block_mask_inject = setup->devices[card].test_mask.inject_mask;
> +	test->ras_block_mask_query = setup->devices[card].test_mask.query_mask;
> +	test->ras_block_mask_basic = setup->devices[card].test_mask.basic_mask;
> +}
> +
> +static const char *
> +get_ras_sysfs_root(struct amd_ras_single_test_setup *test)
> +{
> +	return test->sysfs_path;
> +}
> +
> +static const char *get_ras_debugfs_root(struct amd_ras_single_test_setup *test)
> +{
> +	return test->debugfs_path;
> +}
> +
> +static int
> +amdgpu_ras_is_feature_enabled(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block)
> +{
> +	uint32_t feature_mask;
> +	int ret;
> +
> +	ret = amdgpu_query_info(test->device_handle, AMDGPU_INFO_RAS_ENABLED_FEATURES,
> +			sizeof(feature_mask), &feature_mask);
> +	if (ret)
> +		return -1;
> +
> +	return (1 << block) & feature_mask;
> +}
> +
> +static int
> +amdgpu_ras_is_feature_supported(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block)
> +{
> +	return (1 << block) & test->ras_mask;
> +}
> +
> +static int
> +amdgpu_ras_invoke(struct amd_ras_single_test_setup *test, struct ras_debug_if *data)
> +{
> +	char path[PATH_SIZE];
> +	int ret;
> +
> +	snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(test));
> +	strncat(path, "ras_ctrl", sizeof(path) - strlen(path));
> +
> +	ret = set_file_contents(path, (char *)data, sizeof(*data))
> +		- sizeof(*data);
> +	return ret;
> +}
> +
> +static int
> +amdgpu_ras_query_err_count(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block,
> +		unsigned long *ue, unsigned long *ce)
> +{
> +	char buf[64];
> +	char name[PATH_SIZE];
> +
> +	*ue = *ce = 0;
> +
> +	if (amdgpu_ras_is_feature_supported(test, block) <= 0)
> +		return -1;
> +
> +	snprintf(name, sizeof(name), "%s", get_ras_sysfs_root(test));
> +	strncat(name, ras_block_str(block), sizeof(name) - strlen(name));
> +	strncat(name, "_err_count", sizeof(name) - strlen(name));
> +
> +	if (is_file_ok(name, O_RDONLY))
> +		return 0;
> +
> +	if (get_file_contents(name, buf, sizeof(buf)) <= 0)
> +		return -1;
> +
> +	if (sscanf(buf, "ue: %lu\nce: %lu", ue, ce) != 2)
> +		return -1;
> +
> +	return 0;
> +}
> +
> +static int
> +amdgpu_ras_inject(struct amd_ras_single_test_setup *test, enum amdgpu_ras_block block,
> +		uint32_t sub_block, enum amdgpu_ras_error_type type,
> +		uint64_t address, uint64_t value)
> +{
> +	struct ras_debug_if data = { .op = 2, };
> +	struct ras_inject_if *inject = &data.inject;
> +	int ret;
> +
> +	if (amdgpu_ras_is_feature_enabled(test, block) <= 0) {
> +		igt_info("block id(%d) is not valid\n", block);
> +		return -1;
> +	}
> +
> +	inject->head.block = block;
> +	inject->head.type = type;
> +	inject->head.sub_block_index = sub_block;
> +	strncpy(inject->head.name, ras_block_str(block), sizeof(inject->head.name)-1);
> +	inject->address = address;
> +	inject->value = value;
> +
> +	ret = amdgpu_ras_invoke(test, &data);
> +	igt_assert_eq(ret, 0);
> +	if (ret)
> +		return -1;
> +
> +	return 0;
> +}
> +
> +static void
> +amdgpu_ras_features_test(struct amd_ras_single_test_setup *test, int enable)
> +{
> +	struct ras_debug_if data;
> +	int ret;
> +	int i;
> +
> +	data.op = enable;
> +	for (i = 0; i < AMDGPU_RAS_BLOCK__LAST; i++) {
> +		struct ras_common_if head = {
> +			.block = i,
> +			.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
> +			.sub_block_index = 0,
> +			.name = "",
> +		};
> +
> +		if (amdgpu_ras_is_feature_supported(test, i) <= 0)
> +			continue;
> +
> +		data.head = head;
> +
> +		ret = amdgpu_ras_invoke(test, &data);
> +		igt_assert_eq(ret, 0);
> +
> +		if (ret)
> +			continue;
> +
> +		ret = enable ^ amdgpu_ras_is_feature_enabled(test, i);
> +		igt_assert_eq(ret, 0);
> +	}
> +}
> +
> +static void
> +__amdgpu_ras_ip_inject_test(struct amd_ras_single_test_setup *test,
> +		const struct ras_inject_test_config *ip_test, uint32_t size)
> +{
> +	int i, ret;
> +	unsigned long old_ue, old_ce;
> +	unsigned long ue, ce;
> +	uint32_t block;
> +	int timeout;
> +	bool pass;
> +
> +	for (i = 0; i < size; i++) {
> +		timeout = 3;
> +		pass = false;
> +
> +		block = amdgpu_ras_find_block_id_by_name(ip_test[i].block);
> +
> +		/* Ensure one valid ip block */
> +		if (block == ARRAY_SIZE(ras_block_string))
> +			break;
> +
> +		/* Ensure RAS feature for the IP block is enabled by kernel */
> +		if (amdgpu_ras_is_feature_supported(test, block) <= 0)
> +			break;
> +
> +		ret = amdgpu_ras_query_err_count(test, block, &old_ue, &old_ce);
> +		igt_assert_eq(ret, 0);
> +		if (ret)
> +			break;
> +
> +		ret = amdgpu_ras_inject(test, block,
> +					ip_test[i].sub_block,
> +					ip_test[i].type,
> +					ip_test[i].address,
> +					ip_test[i].value);
> +		igt_assert_eq(ret, 0);
> +		if (ret)
> +			break;
> +
> +		while (timeout > 0) {
> +			sleep(5);
> +
> +			ret = amdgpu_ras_query_err_count(test, block, &ue, &ce);
> +			igt_assert_eq(ret, 0);
> +			if (ret)
> +				break;
> +
> +			if (old_ue != ue || old_ce != ce) {
> +				pass = true;
> +				sleep(20);
> +				break;
> +			}
> +			timeout -= 1;
> +		}
> +		igt_info("\t Test %s@block %s, subblock %d, error_type %s, address %ld, value %ld: %s\n",
> +			ip_test[i].name,
> +			ip_test[i].block,
> +			ip_test[i].sub_block,
> +			amdgpu_ras_get_error_type_id(ip_test[i].type),
> +			ip_test[i].address,
> +			ip_test[i].value,
> +			pass ? "Pass" : "Fail");

There are many things we can fix in this file, but this one perhaps
being visual, and the report of the test, we can perhaps fix up
a bit.

The most important information (fixed length string), is printed last,
"Pass"/"Fail", while the variable length info
is printed first. This could make for a difficult visual scan, since
"Pass"/"Fail" would vary its column location.

Perhaps a better format would be to print the fixed length string
first, followed by the variable length info last. Like this:

igt_info("\t%4s: test:%s block:%s sub-block:%d error type:%s address:%ld value:%ld\n",
	 pass ? "Pass" : "Fail,
	 ip_test[i].name,
	 ip_test[i].block,
	 ip_test[i].sub_block,
	 amdgpu_ras_get_error_type_id(ip_test[i].type),
	 ip_test[i].address,
	 ip_test[i].value);

Note that there's no need for a space after the tab char. The %4s
is moot, but shows an intention.

This way one can scan down the first column for passed or failed tests.

Ultimately, we'd want to pull out strings which repeat, "test", "block", etc.,
out of the string and put them as a table heading, and then only print lines
containing the result of the test ("Pass"/"Fail"), followed by the variable
test data, in a formatted string. We can do this after I come back.
(An example of this can be seen in amdgpu_ras_info.c in the kernel,
commit c65b0805e77919 "drm/amdgpu: RAS EEPROM table is now in debugfs".)

For now, let's just change it to the format shown above.

With this change, as a port, this patch is,

Link: https://lore.kernel.org/r/20230804015251.71494-1-vitaly.prosyak@amd.com
Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
-- 
Regards,
Luben

> +	}
> +}
> +
> +static void
> +__amdgpu_ras_inject_test(struct amd_ras_single_test_setup *test)
> +{
> +	igt_info("...\n");
> +
> +	/* run UMC ras inject test */
> +	__amdgpu_ras_ip_inject_test(test, umc_ras_inject_test,
> +		ARRAY_SIZE(umc_ras_inject_test));
> +
> +	/* run GFX ras inject test */
> +	__amdgpu_ras_ip_inject_test(test, gfx_ras_inject_test,
> +		ARRAY_SIZE(gfx_ras_inject_test));
> +}
> +
> +static void
> +__amdgpu_ras_query_test(struct amd_ras_single_test_setup *test)
> +{
> +	unsigned long ue, ce;
> +	int ret;
> +	int i;
> +
> +	for (i = 0; i < AMDGPU_RAS_BLOCK__LAST; i++) {
> +		if (amdgpu_ras_is_feature_supported(test, i) <= 0)
> +			continue;
> +
> +		if (!((1 << i) & test->ras_block_mask_query))
> +			continue;
> +
> +		ret = amdgpu_ras_query_err_count(test, i, &ue, &ce);
> +		igt_assert_eq(ret, 0);
> +	}
> +}
> +
> +static void
> +amdgpu_ras_disable_test(struct amd_ras_setup *setup)
> +{
> +	int i;
> +	struct amd_ras_single_test_setup test = {};
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		set_test_card(setup, i, &test);
> +		amdgpu_ras_features_test(&test, 0);
> +	}
> +}
> +
> +static void
> +amdgpu_ras_enable_test(struct amd_ras_setup *setup)
> +{
> +	int i;
> +	struct amd_ras_single_test_setup test = {};
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		set_test_card(setup, i, &test);
> +		amdgpu_ras_features_test(&test, 1);
> +	}
> +}
> +static void
> +amdgpu_ras_inject_test(struct amd_ras_setup *setup)
> +{
> +	int i;
> +	struct amd_ras_single_test_setup test = {};
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		set_test_card(setup, i, &test);
> +		__amdgpu_ras_inject_test(&test);
> +	}
> +}
> +
> +static void
> +amdgpu_ras_query_test(struct amd_ras_setup *setup)
> +{
> +	int i;
> +	struct amd_ras_single_test_setup test = {};
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		set_test_card(setup, i, &test);
> +		__amdgpu_ras_query_test(&test);
> +	}
> +}
> +
> +static void
> +amdgpu_ras_basic_test(struct amd_ras_setup *setup)
> +{
> +	int ret;
> +	int i;
> +	int j;
> +	uint32_t features;
> +	char path[PATH_SIZE];
> +	struct amd_ras_single_test_setup test = {};
> +
> +	ret = is_file_ok("/sys/module/amdgpu/parameters/ras_mask", O_RDONLY);
> +	igt_assert_eq(ret, 0);
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		set_test_card(setup, i, &test);
> +
> +		ret = amdgpu_query_info(test.device_handle,
> +				AMDGPU_INFO_RAS_ENABLED_FEATURES, sizeof(features), &features);
> +		igt_assert_eq(ret, 0);
> +
> +		snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(&test));
> +		strncat(path, "ras_ctrl", sizeof(path) - strlen(path));
> +
> +		ret = is_file_ok(path, O_WRONLY);
> +		igt_assert_eq(ret, 0);
> +
> +		snprintf(path, sizeof(path), "%s", get_ras_sysfs_root(&test));
> +		strncat(path, "features", sizeof(path) - strlen(path));
> +
> +		ret = is_file_ok(path, O_RDONLY);
> +		igt_assert_eq(ret, 0);
> +
> +		for (j = 0; j < AMDGPU_RAS_BLOCK__LAST; j++) {
> +			ret = amdgpu_ras_is_feature_supported(&test, j);
> +			if (ret <= 0)
> +				continue;
> +
> +			if (!((1 << j) & test.ras_block_mask_basic))
> +				continue;
> +
> +			snprintf(path, sizeof(path), "%s", get_ras_sysfs_root(&test));
> +			strncat(path, ras_block_str(j), sizeof(path) -  strlen(path));
> +			strncat(path, "_err_count", sizeof(path) - strlen(path));
> +
> +			ret = is_file_ok(path, O_RDONLY);
> +			igt_assert_eq(ret, 0);
> +
> +			snprintf(path, sizeof(path), "%s", get_ras_debugfs_root(&test));
> +			strncat(path, ras_block_str(j), sizeof(path) - strlen(path));
> +			strncat(path, "_err_inject", sizeof(path) - strlen(path));
> +
> +			ret = is_file_ok(path, O_WRONLY);
> +			igt_assert_eq(ret, 0);
> +		}
> +	}
> +}
> +
> +static bool
> +ras_tests_init(struct amd_ras_setup *setup)
> +{
> +	drmDevicePtr device;
> +	amdgpu_device_handle device_handle;
> +	uint32_t  major_version;
> +	uint32_t  minor_version;
> +	uint32_t  capability;
> +	struct ras_test_mask test_mask;
> +	int id;
> +	int i;
> +	int r;
> +
> +	for (i = 0; i < MAX_CARDS_SUPPORTED && setup->drm_amdgpu[i] >= 0; i++) {
> +		r = amdgpu_device_initialize(setup->drm_amdgpu[i], &major_version,
> +				&minor_version, &device_handle);
> +		if (r)
> +			continue;
> +
> +		if (drmGetDevice2(setup->drm_amdgpu[i],
> +					DRM_DEVICE_GET_PCI_REVISION,
> +					&device)) {
> +			amdgpu_device_deinitialize(device_handle);
> +			continue;
> +		}
> +
> +		if (device->bustype != DRM_BUS_PCI) {
> +			amdgpu_device_deinitialize(device_handle);
> +			continue;
> +		}
> +
> +		capability = amdgpu_ras_lookup_capability(device_handle);
> +		if (capability == 0) {
> +			amdgpu_device_deinitialize(device_handle);
> +			continue;
> +
> +		}
> +
> +		id = amdgpu_ras_lookup_id(device);
> +		if (id == -1) {
> +			amdgpu_device_deinitialize(device_handle);
> +			continue;
> +		}
> +
> +		test_mask = amdgpu_ras_get_test_mask(device);
> +
> +		setup->devices[setup->devices_count++] = (struct amdgpu_ras_data) {
> +			device_handle, id, capability, test_mask };
> +		if (test_mask.basic_mask > 0)
> +			setup->run_basic_test = true;
> +		if (test_mask.query_mask > 0)
> +			setup->run_query_test = true;
> +		if (test_mask.inject_mask > 0)
> +			setup->run_inject_test = true;
> +	}
> +
> +	if (setup->devices_count == 0)
> +		return false;
> +
> +	return true;
> +}
> +
> +static void
> +ras_tests_cleanup(struct amd_ras_setup *setup)
> +{
> +	int r;
> +	int i;
> +
> +	for (i = 0; i < setup->devices_count; i++) {
> +		r = amdgpu_device_deinitialize(setup->devices[i].device_handle);
> +		igt_assert_eq(r, 0);
> +		drm_close_driver(setup->drm_amdgpu[i]);
> +	}
> +}
> +
> +igt_main
> +{
> +	struct amd_ras_setup setup = {};
> +	bool render_mode = true;
> +
> +	igt_fixture {
> +
> +		igt_skip_on(!amdgpu_open_devices(render_mode, MAX_CARDS_SUPPORTED,
> +				setup.drm_amdgpu));
> +		igt_skip_on(!ras_tests_init(&setup));
> +	}
> +	igt_describe("RAS-basic");
> +	igt_subtest_with_dynamic("RAS-basic") {
> +		if (setup.run_basic_test) {
> +			igt_dynamic_f("RAS-basic")
> +			amdgpu_ras_basic_test(&setup);
> +		}
> +	}
> +	igt_describe("RAS-query");
> +	igt_subtest_with_dynamic("RAS-query") {
> +		if (setup.run_query_test) {
> +			igt_dynamic_f("RAS-query")
> +			amdgpu_ras_query_test(&setup);
> +		}
> +	}
> +	igt_describe("RAS-inject");
> +	igt_subtest_with_dynamic("RAS-inject") {
> +		if (setup.run_inject_test) {
> +			igt_dynamic_f("RAS-inject")
> +			amdgpu_ras_inject_test(&setup);
> +		}
> +	}
> +	igt_describe("RAS-disable");
> +	igt_subtest_with_dynamic("RAS-disable") {
> +		if (setup.run_inject_test) {
> +			igt_dynamic_f("RAS-disable")
> +			amdgpu_ras_disable_test(&setup);
> +		}
> +	}
> +
> +	igt_describe("RAS-enable");
> +	igt_subtest_with_dynamic("RAS-enable") {
> +		if (setup.run_inject_test) {
> +			igt_dynamic_f("RAS-enable")
> +			amdgpu_ras_enable_test(&setup);
> +		}
> +	}
> +	igt_fixture {
> +		ras_tests_cleanup(&setup);
> +	}
> +}
> diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
> index e179bddcd..336acdb00 100644
> --- a/tests/amdgpu/meson.build
> +++ b/tests/amdgpu/meson.build
> @@ -26,6 +26,7 @@ if libdrm_amdgpu.found()
>  			  'amd_plane',
>  			  'amd_prime',
>  			  'amd_psr',
> +			  'amd_ras',
>  			  'amd_security',
>  			  'amd_uvd_dec',
>  			  'amd_uvd_enc',

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-08-04 15:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-04  1:52 [igt-dev] [PATCH] tests/amdgpu: add RAS tests vitaly.prosyak
2023-08-04  2:19 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
2023-08-04  2:43 ` [igt-dev] ○ CI.xeBAT: info " Patchwork
2023-08-04  2:51 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2023-08-04  7:52 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2023-08-04 15:44 ` [igt-dev] [PATCH] " Luben Tuikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.