All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/5] Introduce error threshold to drm_ras
@ 2026-08-18 13:52 Raag Jadav
  2026-08-18 13:52 ` [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure Raag Jadav
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

This series introduces error threshold to drm_ras infrastructure. This
allows user to get and set the error threshold of a specific counter.

Detailed description in commit message and documentation.

v2: Document threshold definition (Riana)
    Return -EOPNOTSUPP on threshold callbacks absence (Riana)
    Cancel and free genlmsg on failure (Riana)
    Document threshold bounds checking responsibility (Riana)
    Add RAS operation status codes (Riana)
    Use goto (Riana)

v3: Move documentation from yaml to rst file (Riana)
    s/value/threshold (Riana)
    Use goto for error handling (Riana)
    Reuse status codes and uapi mapping from counter series (Riana)
    Access request/response counter using local pointer (Riana)
    Mark unused field as reserved (Riana)
    Return -ENOENT on info absence (Riana)

v4: Clarify 0 threshold expectations (Riana)
    Drop redundant wrapping (Riana)
    Make debug logs consistent (Riana)
    Update kdoc (Riana)

v5: Drop redundant documentation (Riana)
    Aesthetic adjustment (Riana)

v6: Check for valid counter

Raag Jadav (5):
  drm/ras: Cancel and free message on get counter failure
  drm/ras: Introduce error threshold
  drm/xe/ras: Add support for error threshold
  drm/xe/drm_ras: Wire up error threshold callbacks
  drm/xe/sysctrl: Reuse xe_sysctrl_create_command()

 Documentation/gpu/drm-ras.rst                 |  18 ++
 Documentation/netlink/specs/drm_ras.yaml      |  32 ++++
 drivers/gpu/drm/drm_ras.c                     | 175 +++++++++++++++++-
 drivers/gpu/drm/drm_ras_nl.c                  |  27 +++
 drivers/gpu/drm/drm_ras_nl.h                  |   4 +
 drivers/gpu/drm/xe/xe_drm_ras.c               |  34 ++++
 drivers/gpu/drm/xe/xe_ras.c                   | 111 +++++++++++
 drivers/gpu/drm/xe/xe_ras.h                   |   2 +
 drivers/gpu/drm/xe/xe_ras_types.h             |  50 +++++
 drivers/gpu/drm/xe/xe_sysctrl_event.c         |  28 +--
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |   4 +
 include/drm/drm_ras.h                         |  29 +++
 include/uapi/drm/drm_ras.h                    |   3 +
 13 files changed, 490 insertions(+), 27 deletions(-)

-- 
2.43.0


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

* [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
@ 2026-08-18 13:52 ` Raag Jadav
  2026-08-19 13:54   ` sashiko-bot
  2026-08-18 13:52 ` [PATCH v6 2/5] drm/ras: Introduce error threshold Raag Jadav
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

doit_reply_value() directly returns on get counter failure, which results
in stale sk_buff and genetlink header that aren't cleaned up. Fix it and
while at it, consolidate error handling using goto.

Fixes: c36218dc49f5 ("drm/ras: Introduce the DRM RAS infrastructure over generic netlink")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Riana Tauro <riana.tauro@intel.com>
---
v2: Use goto (Riana)
---
 drivers/gpu/drm/drm_ras.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
index 39155fb514de..4fa1a257b0ed 100644
--- a/drivers/gpu/drm/drm_ras.c
+++ b/drivers/gpu/drm/drm_ras.c
@@ -234,25 +234,28 @@ static int doit_reply_value(struct genl_info *info, u32 node_id,
 
 	hdr = genlmsg_iput(msg, info);
 	if (!hdr) {
-		nlmsg_free(msg);
-		return -EMSGSIZE;
+		ret = -EMSGSIZE;
+		goto free_msg;
 	}
 
 	ret = get_node_error_counter(node_id, error_id,
 				     &error_name, &value);
 	if (ret)
-		return ret;
+		goto cancel_msg;
 
 	ret = msg_reply_value(msg, error_id, error_name, value);
-	if (ret) {
-		genlmsg_cancel(msg, hdr);
-		nlmsg_free(msg);
-		return ret;
-	}
+	if (ret)
+		goto cancel_msg;
 
 	genlmsg_end(msg, hdr);
 
 	return genlmsg_reply(msg, info);
+
+cancel_msg:
+	genlmsg_cancel(msg, hdr);
+free_msg:
+	nlmsg_free(msg);
+	return ret;
 }
 
 /**
-- 
2.43.0


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

* [PATCH v6 2/5] drm/ras: Introduce error threshold
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
  2026-08-18 13:52 ` [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure Raag Jadav
@ 2026-08-18 13:52 ` Raag Jadav
  2026-08-19 13:54   ` sashiko-bot
  2026-08-18 13:52 ` [PATCH v6 3/5] drm/xe/ras: Add support for " Raag Jadav
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

Add get-error-threshold and set-error-threshold command support which
allows querying/setting error threshold of the counter. Threshold in RAS
context means the number of errors the hardware is expected to accumulate
before it raises them to software. This is to have a fine grained control
over error notifications that are raised by the hardware.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Riana Tauro <riana.tauro@intel.com>
---
v2: Document threshold definition (Riana)
    Return -EOPNOTSUPP on threshold callbacks absence (Riana)
    Cancel and free genlmsg on failure (Riana)
    Document threshold bounds checking responsibility (Riana)
v3: Move documentation from yaml to rst file (Riana)
    s/value/threshold (Riana)
    Use goto for error handling (Riana)
v4: Clarify 0 threshold expectations (Riana)
    Drop redundant wrapping (Riana)
v5: Drop redundant documentation (Riana)
    Aesthetic adjustment (Riana)
---
 Documentation/gpu/drm-ras.rst            |  18 +++
 Documentation/netlink/specs/drm_ras.yaml |  32 +++++
 drivers/gpu/drm/drm_ras.c                | 158 +++++++++++++++++++++++
 drivers/gpu/drm/drm_ras_nl.c             |  27 ++++
 drivers/gpu/drm/drm_ras_nl.h             |   4 +
 include/drm/drm_ras.h                    |  29 +++++
 include/uapi/drm/drm_ras.h               |   3 +
 7 files changed, 271 insertions(+)

diff --git a/Documentation/gpu/drm-ras.rst b/Documentation/gpu/drm-ras.rst
index 406e4c49bac1..c4ce24067d4b 100644
--- a/Documentation/gpu/drm-ras.rst
+++ b/Documentation/gpu/drm-ras.rst
@@ -57,6 +57,10 @@ User space tools can:
 * Clear specific error counters with the ``clear-error-counter`` command, using both
   ``node-id`` and ``error-id`` as parameters.
 * Subscribe to the ``error-report`` multicast group to receive ``error-event``.
+* Query specific error counter threshold with the ``get-error-threshold`` command, using both
+  ``node-id`` and ``error-id`` as parameters.
+* Set specific error counter threshold with the ``set-error-threshold`` command, using
+  ``node-id``, ``error-id`` and ``error-threshold`` as parameters.
 
 YAML-based Interface
 --------------------
@@ -132,3 +136,17 @@ Example: Subscribe to ``error-report`` multicast group
             "error-value": 1
         }
     }
+
+Example: Query error threshold of a given counter
+
+.. code-block:: bash
+
+    sudo ynl --family drm_ras --do get-error-threshold --json '{"node-id":0, "error-id":1}'
+    {'error-id': 1, 'error-name': 'error_name1', 'error-threshold': 16}
+
+Example: Set error threshold of a given counter
+
+.. code-block:: bash
+
+    sudo ynl --family drm_ras --do set-error-threshold --json '{"node-id":0, "error-id":1, "error-threshold":8}'
+    None
diff --git a/Documentation/netlink/specs/drm_ras.yaml b/Documentation/netlink/specs/drm_ras.yaml
index 8aed3d4515e5..4c2ac9a1ba3f 100644
--- a/Documentation/netlink/specs/drm_ras.yaml
+++ b/Documentation/netlink/specs/drm_ras.yaml
@@ -69,6 +69,10 @@ attribute-sets:
         name: error-value
         type: u32
         doc: Current value of the requested error counter.
+      -
+        name: error-threshold
+        type: u32
+        doc: Error threshold of the counter.
   -
     name: error-event-attrs
     attributes:
@@ -167,6 +171,34 @@ operations:
           - error-id
           - error-name
           - error-value
+    -
+      name: get-error-threshold
+      doc: >-
+           Retrieve error threshold of a given counter.
+           The response includes the id, the name, and current threshold
+           of the counter.
+      attribute-set: error-counter-attrs
+      flags: [admin-perm]
+      do:
+        request:
+          attributes: *id-attrs
+        reply:
+          attributes:
+            - error-id
+            - error-name
+            - error-threshold
+    -
+      name: set-error-threshold
+      doc: >-
+           Set error threshold of a given counter.
+      attribute-set: error-counter-attrs
+      flags: [admin-perm]
+      do:
+        request:
+          attributes:
+            - node-id
+            - error-id
+            - error-threshold
 
 mcast-groups:
   list:
diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
index 4fa1a257b0ed..b099eb67836e 100644
--- a/drivers/gpu/drm/drm_ras.c
+++ b/drivers/gpu/drm/drm_ras.c
@@ -46,6 +46,13 @@
  * 5. ERROR_EVENT: Report an error event to userspace. The event contains device, node
  *    and error information that triggered the event.
  *
+ * 6. GET_ERROR_THRESHOLD: Query error threshold of a given counter.
+ *    Userspace must provide Node ID and Error ID.
+ *    Returns the error threshold of a specific counter.
+ *
+ * 7. SET_ERROR_THRESHOLD: Set error threshold of a given counter.
+ *    Userspace must provide Node ID, Error ID and threshold to be set.
+ *
  * Node registration:
  *
  * - drm_ras_node_register(): Registers a new node and assigns
@@ -66,6 +73,13 @@
  *     + The error counters in the driver doesn't need to be contiguous, but the
  *       driver must return -ENOENT to the query_error_counter as an indication
  *       that the ID should be skipped and not listed in the netlink API.
+ *     + The driver can optionally implement query_error_threshold() and
+ *       set_error_threshold() callbacks to facilitate getting/setting error
+ *       threshold of the counter. Threshold in RAS context means the number of
+ *       errors the hardware is expected to accumulate before it raises them to
+ *       software. This is to have a fine grained control over error notifications
+ *       that are raised by the hardware.
+ *     + The driver is responsible for error threshold bounds checking.
  *
  * Netlink handlers:
  *
@@ -77,6 +91,10 @@
  *   operation, fetching a counter value from a specific node.
  * - drm_ras_nl_clear_error_counter_doit(): Implements the CLEAR_ERROR_COUNTER doit
  *   operation, clearing a counter value from a specific node.
+ * - drm_ras_nl_get_error_threshold_doit(): Implements the GET_ERROR_THRESHOLD doit
+ *   operation, fetching the error threshold of a specific counter.
+ * - drm_ras_nl_set_error_threshold_doit(): Implements the SET_ERROR_THRESHOLD doit
+ *   operation, setting the error threshold of a specific counter.
  */
 
 static DEFINE_XARRAY_ALLOC(drm_ras_xa);
@@ -173,6 +191,40 @@ static int get_node_error_counter(u32 node_id, u32 error_id,
 	return node->query_error_counter(node, error_id, name, value);
 }
 
+static int get_node_error_threshold(u32 node_id, u32 error_id, const char **name, u32 *threshold)
+{
+	struct drm_ras_node *node;
+
+	node = xa_load(&drm_ras_xa, node_id);
+	if (!node)
+		return -ENOENT;
+
+	if (!node->query_error_threshold)
+		return -EOPNOTSUPP;
+
+	if (error_id < node->error_counter_range.first || error_id > node->error_counter_range.last)
+		return -EINVAL;
+
+	return node->query_error_threshold(node, error_id, name, threshold);
+}
+
+static int set_node_error_threshold(u32 node_id, u32 error_id, u32 threshold)
+{
+	struct drm_ras_node *node;
+
+	node = xa_load(&drm_ras_xa, node_id);
+	if (!node)
+		return -ENOENT;
+
+	if (!node->set_error_threshold)
+		return -EOPNOTSUPP;
+
+	if (error_id < node->error_counter_range.first || error_id > node->error_counter_range.last)
+		return -EINVAL;
+
+	return node->set_error_threshold(node, error_id, threshold);
+}
+
 static int msg_reply_value(struct sk_buff *msg, u32 error_id,
 			   const char *error_name, u32 value)
 {
@@ -219,6 +271,22 @@ static int msg_put_error_event_attrs(struct sk_buff *msg, struct drm_ras_node *n
 	return nla_put_u32(msg, DRM_RAS_A_ERROR_EVENT_ATTRS_ERROR_VALUE, value);
 }
 
+static int msg_reply_threshold(struct sk_buff *msg, u32 error_id, const char *error_name,
+			       u32 threshold)
+{
+	int ret;
+
+	ret = nla_put_u32(msg, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID, error_id);
+	if (ret)
+		return ret;
+
+	ret = nla_put_string(msg, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_NAME, error_name);
+	if (ret)
+		return ret;
+
+	return nla_put_u32(msg, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD, threshold);
+}
+
 static int doit_reply_value(struct genl_info *info, u32 node_id,
 			    u32 error_id)
 {
@@ -258,6 +326,43 @@ static int doit_reply_value(struct genl_info *info, u32 node_id,
 	return ret;
 }
 
+static int doit_reply_threshold(struct genl_info *info, u32 node_id, u32 error_id)
+{
+	const char *error_name;
+	struct sk_buff *msg;
+	struct nlattr *hdr;
+	u32 threshold;
+	int ret;
+
+	msg = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+	if (!msg)
+		return -ENOMEM;
+
+	hdr = genlmsg_iput(msg, info);
+	if (!hdr) {
+		ret = -EMSGSIZE;
+		goto free_msg;
+	}
+
+	ret = get_node_error_threshold(node_id, error_id, &error_name, &threshold);
+	if (ret)
+		goto cancel_msg;
+
+	ret = msg_reply_threshold(msg, error_id, error_name, threshold);
+	if (ret)
+		goto cancel_msg;
+
+	genlmsg_end(msg, hdr);
+
+	return genlmsg_reply(msg, info);
+
+cancel_msg:
+	genlmsg_cancel(msg, hdr);
+free_msg:
+	nlmsg_free(msg);
+	return ret;
+}
+
 /**
  * drm_ras_nl_error_event() - Report an error event
  * @node: Node structure
@@ -459,6 +564,59 @@ int drm_ras_nl_clear_error_counter_doit(struct sk_buff *skb,
 	return node->clear_error_counter(node, error_id);
 }
 
+/**
+ * drm_ras_nl_get_error_threshold_doit() - Query error threshold of a counter
+ * @skb: Netlink message buffer
+ * @info: Generic Netlink info containing attributes of the request
+ *
+ * Extracts the Node ID and Error ID from the netlink attributes and retrieves
+ * the error threshold of the corresponding counter. Sends the result back to
+ * the requesting user via the standard Genl reply.
+ *
+ * Return: 0 on success, or negative errno on failure.
+ */
+int drm_ras_nl_get_error_threshold_doit(struct sk_buff *skb, struct genl_info *info)
+{
+	u32 node_id, error_id;
+
+	if (!info->attrs ||
+	    GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID) ||
+	    GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID))
+		return -EINVAL;
+
+	node_id = nla_get_u32(info->attrs[DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID]);
+	error_id = nla_get_u32(info->attrs[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID]);
+
+	return doit_reply_threshold(info, node_id, error_id);
+}
+
+/**
+ * drm_ras_nl_set_error_threshold_doit() - Set error threshold of a counter
+ * @skb: Netlink message buffer
+ * @info: Generic Netlink info containing attributes of the request
+ *
+ * Extracts the Node ID, Error ID and threshold from the netlink attributes and
+ * sets the error threshold of the corresponding counter.
+ *
+ * Return: 0 on success, or negative errno on failure.
+ */
+int drm_ras_nl_set_error_threshold_doit(struct sk_buff *skb, struct genl_info *info)
+{
+	u32 node_id, error_id, threshold;
+
+	if (!info->attrs ||
+	    GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID) ||
+	    GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID) ||
+	    GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD))
+		return -EINVAL;
+
+	node_id = nla_get_u32(info->attrs[DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID]);
+	error_id = nla_get_u32(info->attrs[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID]);
+	threshold = nla_get_u32(info->attrs[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD]);
+
+	return set_node_error_threshold(node_id, error_id, threshold);
+}
+
 /**
  * drm_ras_node_register() - Register a new RAS node
  * @node: Node structure to register
diff --git a/drivers/gpu/drm/drm_ras_nl.c b/drivers/gpu/drm/drm_ras_nl.c
index 9d3123cc9f9c..c9f5e0ceb3b5 100644
--- a/drivers/gpu/drm/drm_ras_nl.c
+++ b/drivers/gpu/drm/drm_ras_nl.c
@@ -28,6 +28,19 @@ static const struct nla_policy drm_ras_clear_error_counter_nl_policy[DRM_RAS_A_E
 	[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID] = { .type = NLA_U32, },
 };
 
+/* DRM_RAS_CMD_GET_ERROR_THRESHOLD - do */
+static const struct nla_policy drm_ras_get_error_threshold_nl_policy[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID + 1] = {
+	[DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID] = { .type = NLA_U32, },
+	[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID] = { .type = NLA_U32, },
+};
+
+/* DRM_RAS_CMD_SET_ERROR_THRESHOLD - do */
+static const struct nla_policy drm_ras_set_error_threshold_nl_policy[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD + 1] = {
+	[DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID] = { .type = NLA_U32, },
+	[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID] = { .type = NLA_U32, },
+	[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD] = { .type = NLA_U32, },
+};
+
 /* Ops table for drm_ras */
 static const struct genl_split_ops drm_ras_nl_ops[] = {
 	{
@@ -56,6 +69,20 @@ static const struct genl_split_ops drm_ras_nl_ops[] = {
 		.maxattr	= DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID,
 		.flags		= GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
 	},
+	{
+		.cmd		= DRM_RAS_CMD_GET_ERROR_THRESHOLD,
+		.doit		= drm_ras_nl_get_error_threshold_doit,
+		.policy		= drm_ras_get_error_threshold_nl_policy,
+		.maxattr	= DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID,
+		.flags		= GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
+	},
+	{
+		.cmd		= DRM_RAS_CMD_SET_ERROR_THRESHOLD,
+		.doit		= drm_ras_nl_set_error_threshold_doit,
+		.policy		= drm_ras_set_error_threshold_nl_policy,
+		.maxattr	= DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD,
+		.flags		= GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
+	},
 };
 
 static const struct genl_multicast_group drm_ras_nl_mcgrps[] = {
diff --git a/drivers/gpu/drm/drm_ras_nl.h b/drivers/gpu/drm/drm_ras_nl.h
index 03ec275aca92..9aef097ea10f 100644
--- a/drivers/gpu/drm/drm_ras_nl.h
+++ b/drivers/gpu/drm/drm_ras_nl.h
@@ -20,6 +20,10 @@ int drm_ras_nl_get_error_counter_dumpit(struct sk_buff *skb,
 					struct netlink_callback *cb);
 int drm_ras_nl_clear_error_counter_doit(struct sk_buff *skb,
 					struct genl_info *info);
+int drm_ras_nl_get_error_threshold_doit(struct sk_buff *skb,
+					struct genl_info *info);
+int drm_ras_nl_set_error_threshold_doit(struct sk_buff *skb,
+					struct genl_info *info);
 
 enum {
 	DRM_RAS_NLGRP_ERROR_REPORT,
diff --git a/include/drm/drm_ras.h b/include/drm/drm_ras.h
index ee2caa0edc6f..1765a3130b09 100644
--- a/include/drm/drm_ras.h
+++ b/include/drm/drm_ras.h
@@ -71,6 +71,35 @@ struct drm_ras_node {
 	 */
 	int (*clear_error_counter)(struct drm_ras_node *node, u32 error_id);
 
+	/**
+	 * @query_error_threshold:
+	 *
+	 * This callback is used by drm-ras to query error threshold of a
+	 * specific counter.
+	 *
+	 * Driver should expect query_error_threshold() to be called with
+	 * error_id from `error_counter_range.first` to
+	 * `error_counter_range.last`.
+	 *
+	 * Returns: 0 on success, negative error code on failure.
+	 */
+	int (*query_error_threshold)(struct drm_ras_node *node, u32 error_id, const char **name,
+				     u32 *threshold);
+
+	/**
+	 * @set_error_threshold:
+	 *
+	 * This callback is used by drm-ras to set error threshold of a specific
+	 * counter.
+	 *
+	 * Driver should expect set_error_threshold() to be called with error_id
+	 * from `error_counter_range.first` to `error_counter_range.last`.
+	 * Driver is responsible for error threshold bounds checking.
+	 *
+	 * Returns: 0 on success, negative error code on failure.
+	 */
+	int (*set_error_threshold)(struct drm_ras_node *node, u32 error_id, u32 threshold);
+
 	/** @priv: Driver private data */
 	void *priv;
 };
diff --git a/include/uapi/drm/drm_ras.h b/include/uapi/drm/drm_ras.h
index eab8231aa87c..2f832275ee6e 100644
--- a/include/uapi/drm/drm_ras.h
+++ b/include/uapi/drm/drm_ras.h
@@ -33,6 +33,7 @@ enum {
 	DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID,
 	DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_NAME,
 	DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_VALUE,
+	DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD,
 
 	__DRM_RAS_A_ERROR_COUNTER_ATTRS_MAX,
 	DRM_RAS_A_ERROR_COUNTER_ATTRS_MAX = (__DRM_RAS_A_ERROR_COUNTER_ATTRS_MAX - 1)
@@ -55,6 +56,8 @@ enum {
 	DRM_RAS_CMD_GET_ERROR_COUNTER,
 	DRM_RAS_CMD_CLEAR_ERROR_COUNTER,
 	DRM_RAS_CMD_ERROR_EVENT,
+	DRM_RAS_CMD_GET_ERROR_THRESHOLD,
+	DRM_RAS_CMD_SET_ERROR_THRESHOLD,
 
 	__DRM_RAS_CMD_MAX,
 	DRM_RAS_CMD_MAX = (__DRM_RAS_CMD_MAX - 1)
-- 
2.43.0


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

* [PATCH v6 3/5] drm/xe/ras: Add support for error threshold
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
  2026-08-18 13:52 ` [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure Raag Jadav
  2026-08-18 13:52 ` [PATCH v6 2/5] drm/ras: Introduce error threshold Raag Jadav
@ 2026-08-18 13:52 ` Raag Jadav
  2026-08-18 13:52 ` [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks Raag Jadav
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

System controller allows getting/setting per counter threshold for
correctable errors, which it uses to raise error events to the driver.
Get/set it using the respective mailbox command.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Riana Tauro <riana.tauro@intel.com>
---
v2: Add RAS operation status codes (Riana)
v3: Reuse status codes and uapi mapping from counter series (Riana)
    Access request/response counter using local pointer (Riana)
    Mark unused field as reserved (Riana)
v4: Make debug logs consistent (Riana)
    Update kdoc (Riana)
v6: Check for valid counter
---
 drivers/gpu/drm/xe/xe_ras.c                   | 111 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_ras.h                   |   2 +
 drivers/gpu/drm/xe/xe_ras_types.h             |  50 ++++++++
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |   4 +
 4 files changed, 167 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index d25d25f77531..de4cb9ef7355 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -661,6 +661,117 @@ int xe_ras_clear_counter(struct xe_device *xe, u8 severity, u8 component)
 	return 0;
 }
 
+/**
+ * xe_ras_get_threshold() - Get error counter threshold
+ * @xe: Xe device instance
+ * @severity: Error severity to be queried (&enum drm_xe_ras_error_severity)
+ * @component: Error component to be queried (&enum drm_xe_ras_error_component)
+ * @threshold: Counter threshold
+ *
+ * This function retrieves the error threshold of a specific counter based on
+ * severity and component.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int xe_ras_get_threshold(struct xe_device *xe, u8 severity, u8 component, u32 *threshold)
+{
+	struct xe_ras_get_threshold_response response = {};
+	struct xe_ras_get_threshold_request request = {};
+	struct xe_sysctrl_mailbox_command command = {};
+	struct xe_ras_error_class *counter;
+	size_t len;
+	int ret;
+
+	counter = &request.counter;
+	counter->common.severity = drm_to_xe_ras_severity(severity);
+	counter->common.component = drm_to_xe_ras_component(component);
+
+	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_GET_THRESHOLD,
+				  &request, sizeof(request), &response, sizeof(response));
+
+	guard(xe_pm_runtime)(xe);
+	ret = xe_sysctrl_send_command(&xe->sc, &command, &len);
+	if (ret) {
+		xe_err(xe, "sysctrl: failed to get threshold %d\n", ret);
+		return ret;
+	}
+
+	if (len != sizeof(response)) {
+		xe_err(xe, "sysctrl: unexpected get threshold response length %zu (expected %zu)\n",
+		       len, sizeof(response));
+		return -EIO;
+	}
+
+	if (!ras_counter_is_valid(xe, &response.counter))
+		return -EBADMSG;
+
+	counter = &response.counter;
+	*threshold = response.threshold;
+
+	xe_dbg(xe, "[RAS]: get threshold %u for %s %s\n", *threshold,
+	       comp_to_str(counter->common.component), sev_to_str(counter->common.severity));
+	return 0;
+}
+
+/**
+ * xe_ras_set_threshold() - Set error counter threshold
+ * @xe: Xe device instance
+ * @severity: Error severity to be set (&enum drm_xe_ras_error_severity)
+ * @component: Error component to be set (&enum drm_xe_ras_error_component)
+ * @threshold: Counter threshold
+ *
+ * This function sets the error threshold of a specific counter based on
+ * severity and component.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int xe_ras_set_threshold(struct xe_device *xe, u8 severity, u8 component, u32 threshold)
+{
+	struct xe_ras_set_threshold_response response = {};
+	struct xe_ras_set_threshold_request request = {};
+	struct xe_sysctrl_mailbox_command command = {};
+	struct xe_ras_error_class *counter;
+	size_t len;
+	int ret;
+
+	counter = &request.counter;
+	counter->common.severity = drm_to_xe_ras_severity(severity);
+	counter->common.component = drm_to_xe_ras_component(component);
+	request.threshold = threshold;
+
+	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_SET_THRESHOLD,
+				  &request, sizeof(request), &response, sizeof(response));
+
+	guard(xe_pm_runtime)(xe);
+	ret = xe_sysctrl_send_command(&xe->sc, &command, &len);
+	if (ret) {
+		xe_err(xe, "sysctrl: failed to set threshold %d\n", ret);
+		return ret;
+	}
+
+	if (len != sizeof(response)) {
+		xe_err(xe, "sysctrl: unexpected set threshold response length %zu (expected %zu)\n",
+		       len, sizeof(response));
+		return -EIO;
+	}
+
+	ret = ras_status_to_errno(response.status);
+	if (ret) {
+		xe_err(xe, "sysctrl: set threshold command failed with status %#x\n",
+		       response.status);
+		return ret;
+	}
+
+	counter = &response.counter;
+
+	if (!ras_counter_is_valid(xe, counter))
+		return -EBADMSG;
+
+	xe_dbg(xe, "[RAS]: set threshold %u for %s %s\n", response.threshold,
+	       comp_to_str(counter->common.component), sev_to_str(counter->common.severity));
+	return 0;
+}
+
 static ssize_t gpu_health_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct xe_ras_get_health_response response = {0};
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index 618364734043..0b8669f28d56 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -16,6 +16,8 @@ void xe_ras_counter_threshold_crossed(struct xe_device *xe,
 				      struct xe_sysctrl_event_response *response);
 int xe_ras_get_counter(struct xe_device *xe, u8 severity, u8 component, u32 *value);
 int xe_ras_clear_counter(struct xe_device *xe, u8 severity, u8 component);
+int xe_ras_get_threshold(struct xe_device *xe, u8 severity, u8 component, u32 *threshold);
+int xe_ras_set_threshold(struct xe_device *xe, u8 severity, u8 component, u32 threshold);
 void xe_ras_init(struct xe_device *xe);
 enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
 
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 99b2466e2062..fe6f3658a2a4 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -147,6 +147,56 @@ struct xe_ras_clear_counter_response {
 	u32 reserved1[3];
 } __packed;
 
+/**
+ * struct xe_ras_get_threshold_request - Request structure for get threshold
+ */
+struct xe_ras_get_threshold_request {
+	/** @counter: Counter to get threshold for */
+	struct xe_ras_error_class counter;
+	/** @reserved: Reserved for future use */
+	u32 reserved;
+} __packed;
+
+/**
+ * struct xe_ras_get_threshold_response - Response structure for get threshold
+ */
+struct xe_ras_get_threshold_response {
+	/** @counter: Counter ID */
+	struct xe_ras_error_class counter;
+	/** @threshold: Current threshold of the counter */
+	u32 threshold;
+	/** @reserved: Reserved for future use */
+	u32 reserved[4];
+} __packed;
+
+/**
+ * struct xe_ras_set_threshold_request - Request structure for set threshold
+ */
+struct xe_ras_set_threshold_request {
+	/** @counter: Counter to set threshold for */
+	struct xe_ras_error_class counter;
+	/** @threshold: Threshold to be set */
+	u32 threshold;
+	/** @reserved: Reserved for future use */
+	u32 reserved;
+} __packed;
+
+/**
+ * struct xe_ras_set_threshold_response - Response structure for set threshold
+ */
+struct xe_ras_set_threshold_response {
+	/** @counter: Counter ID */
+	struct xe_ras_error_class counter;
+	/** @reserved: Reserved */
+	u32 reserved;
+	/** @threshold: Updated threshold */
+	u32 threshold;
+	/** @status: Operation status */
+	u32 status;
+	/** @reserved1: Reserved for future use */
+	u32 reserved1[2];
+} __packed;
+
 /**
  * struct xe_ras_error_array - Details of the error types
  */
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index d0341538ad05..66e7cbcc3f91 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -25,6 +25,8 @@ enum xe_sysctrl_group {
  * @XE_SYSCTRL_CMD_GET_SOC_ERROR: Retrieve basic error information
  * @XE_SYSCTRL_CMD_GET_COUNTER: Get error counter value
  * @XE_SYSCTRL_CMD_CLEAR_COUNTER: Clear error counter value
+ * @XE_SYSCTRL_CMD_GET_THRESHOLD: Retrieve error threshold
+ * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
  * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
  * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
  * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
@@ -33,6 +35,8 @@ enum xe_sysctrl_gfsp_cmd {
 	XE_SYSCTRL_CMD_GET_SOC_ERROR		= 0x01,
 	XE_SYSCTRL_CMD_GET_COUNTER		= 0x03,
 	XE_SYSCTRL_CMD_CLEAR_COUNTER		= 0x04,
+	XE_SYSCTRL_CMD_GET_THRESHOLD		= 0x05,
+	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
 	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
 	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
 	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
-- 
2.43.0


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

* [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (2 preceding siblings ...)
  2026-08-18 13:52 ` [PATCH v6 3/5] drm/xe/ras: Add support for " Raag Jadav
@ 2026-08-18 13:52 ` Raag Jadav
  2026-08-19 13:54   ` sashiko-bot
  2026-08-18 13:52 ` [PATCH v6 5/5] drm/xe/sysctrl: Reuse xe_sysctrl_create_command() Raag Jadav
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

Now that we have get/set error threshold support in xe driver, wire them
up to drm_ras so that userspace can make use of the functionality.

$ sudo ynl --family drm_ras --do get-error-threshold \
--json '{"node-id":0, "error-id":2}'
{'error-id': 2, 'error-name': 'soc-internal', 'error-threshold': 16}

$ sudo ynl --family drm_ras --do set-error-threshold \
--json '{"node-id":0, "error-id":2, "error-threshold":8}'
None

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Riana Tauro <riana.tauro@intel.com>
---
v3: Return -ENOENT on info absence (Riana)
---
 drivers/gpu/drm/xe/xe_drm_ras.c | 34 +++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index 78184b6ea7d4..7f3695707611 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -86,6 +86,38 @@ static int clear_correctable_error_counter(struct drm_ras_node *node, u32 error_
 	return clear_error_counter(xe, DRM_XE_RAS_ERR_SEV_CORRECTABLE, error_id);
 }
 
+static int query_correctable_error_threshold(struct drm_ras_node *ep, u32 error_id,
+					     const char **name, u32 *threshold)
+{
+	struct xe_device *xe = ep->priv;
+	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
+
+	if (!info || !info[error_id].name)
+		return -ENOENT;
+
+	if (!xe->info.has_sysctrl)
+		return -EOPNOTSUPP;
+
+	*name = info[error_id].name;
+	return xe_ras_get_threshold(xe, DRM_XE_RAS_ERR_SEV_CORRECTABLE, error_id, threshold);
+}
+
+static int set_correctable_error_threshold(struct drm_ras_node *ep, u32 error_id, u32 threshold)
+{
+	struct xe_device *xe = ep->priv;
+	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
+
+	if (!info || !info[error_id].name)
+		return -ENOENT;
+
+	if (!xe->info.has_sysctrl)
+		return -EOPNOTSUPP;
+
+	return xe_ras_set_threshold(xe, DRM_XE_RAS_ERR_SEV_CORRECTABLE, error_id, threshold);
+}
+
 static struct xe_drm_ras_counter *allocate_and_copy_counters(struct xe_device *xe)
 {
 	struct xe_drm_ras_counter *counter;
@@ -134,6 +166,8 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
 	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE) {
 		node->query_error_counter = query_correctable_error_counter;
 		node->clear_error_counter = clear_correctable_error_counter;
+		node->query_error_threshold = query_correctable_error_threshold;
+		node->set_error_threshold = set_correctable_error_threshold;
 	} else {
 		node->query_error_counter = query_uncorrectable_error_counter;
 		node->clear_error_counter = clear_uncorrectable_error_counter;
-- 
2.43.0


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

* [PATCH v6 5/5] drm/xe/sysctrl: Reuse xe_sysctrl_create_command()
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (3 preceding siblings ...)
  2026-08-18 13:52 ` [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks Raag Jadav
@ 2026-08-18 13:52 ` Raag Jadav
  2026-08-18 15:15 ` ✗ CI.checkpatch: warning for Introduce error threshold to drm_ras (rev6) Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Raag Jadav @ 2026-08-18 13:52 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: simona.vetter, airlied, kuba, lijo.lazar, Hawking.Zhang, davem,
	pabeni, edumazet, dev, zachary.mckevitt, rodrigo.vivi,
	riana.tauro, michal.wajdeczko, matthew.d.roper, mallesh.koujalagi,
	Raag Jadav

Now that we have a helper to create sysctrl command, reuse it for
threshold crossed events.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Riana Tauro <riana.tauro@intel.com>
---
 drivers/gpu/drm/xe/xe_sysctrl_event.c | 28 ++++++++-------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_sysctrl_event.c b/drivers/gpu/drm/xe/xe_sysctrl_event.c
index da395148ee9d..15ddd2d8bc6d 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_event.c
+++ b/drivers/gpu/drm/xe/xe_sysctrl_event.c
@@ -49,18 +49,6 @@ static void get_pending_event(struct xe_sysctrl *sc, struct xe_sysctrl_mailbox_c
 	} while (response->count);
 }
 
-static void event_request_prepare(struct xe_device *xe, struct xe_sysctrl_app_msg_hdr *header,
-				  struct xe_sysctrl_event_request *request)
-{
-	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
-
-	header->data = REG_FIELD_PREP(APP_HDR_GROUP_ID_MASK, XE_SYSCTRL_GROUP_GFSP) |
-		       REG_FIELD_PREP(APP_HDR_COMMAND_MASK, XE_SYSCTRL_CMD_GET_PENDING_EVENT);
-
-	request->vector = xe_device_has_msix(xe) ? XE_IRQ_DEFAULT_MSIX : 0;
-	request->fn = PCI_FUNC(pdev->devfn);
-}
-
 /**
  * xe_sysctrl_event() - Handler for System Controller events
  * @sc: System Controller instance
@@ -72,16 +60,16 @@ void xe_sysctrl_event(struct xe_sysctrl *sc)
 	struct xe_sysctrl_mailbox_command command = {};
 	struct xe_sysctrl_event_response response = {};
 	struct xe_sysctrl_event_request request = {};
-	struct xe_sysctrl_app_msg_hdr header = {};
+	struct xe_device *xe = sc_to_xe(sc);
+	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
 
-	xe_device_assert_mem_access(sc_to_xe(sc));
-	event_request_prepare(sc_to_xe(sc), &header, &request);
+	xe_device_assert_mem_access(xe);
 
-	command.header = header;
-	command.data_in = &request;
-	command.data_in_len = sizeof(request);
-	command.data_out = &response;
-	command.data_out_len = sizeof(response);
+	request.vector = xe_device_has_msix(xe) ? XE_IRQ_DEFAULT_MSIX : 0;
+	request.fn = PCI_FUNC(pdev->devfn);
+
+	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_GET_PENDING_EVENT,
+				  &request, sizeof(request), &response, sizeof(response));
 
 	guard(mutex)(&sc->event_lock);
 	get_pending_event(sc, &command);
-- 
2.43.0


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

* ✗ CI.checkpatch: warning for Introduce error threshold to drm_ras (rev6)
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (4 preceding siblings ...)
  2026-08-18 13:52 ` [PATCH v6 5/5] drm/xe/sysctrl: Reuse xe_sysctrl_create_command() Raag Jadav
@ 2026-08-18 15:15 ` Patchwork
  2026-08-18 15:17 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-08-18 15:15 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

== Series Details ==

Series: Introduce error threshold to drm_ras (rev6)
URL   : https://patchwork.freedesktop.org/series/165091/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 1d2260907dc80a20e3ca12c33a8f1a49ba22c0f9
Author: Raag Jadav <raag.jadav@intel.com>
Date:   Tue Aug 18 19:22:09 2026 +0530

    drm/xe/sysctrl: Reuse xe_sysctrl_create_command()
    
    Now that we have a helper to create sysctrl command, reuse it for
    threshold crossed events.
    
    Signed-off-by: Raag Jadav <raag.jadav@intel.com>
    Reviewed-by: Riana Tauro <riana.tauro@intel.com>
+ /mt/dim checkpatch 275df33dcf4c5d018717867a0b29ed1d3b62c1ef drm-intel
cf978eb34a24 drm/ras: Cancel and free message on get counter failure
38da62016855 drm/ras: Introduce error threshold
-:318: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#318: FILE: drivers/gpu/drm/drm_ras_nl.c:32:
+static const struct nla_policy drm_ras_get_error_threshold_nl_policy[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_ID + 1] = {

-:324: WARNING:LONG_LINE: line length of 123 exceeds 100 columns
#324: FILE: drivers/gpu/drm/drm_ras_nl.c:38:
+static const struct nla_policy drm_ras_set_error_threshold_nl_policy[DRM_RAS_A_ERROR_COUNTER_ATTRS_ERROR_THRESHOLD + 1] = {

total: 0 errors, 2 warnings, 0 checks, 370 lines checked
180e579dc707 drm/xe/ras: Add support for error threshold
3843714c6e86 drm/xe/drm_ras: Wire up error threshold callbacks
1d2260907dc8 drm/xe/sysctrl: Reuse xe_sysctrl_create_command()



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

* ✓ CI.KUnit: success for Introduce error threshold to drm_ras (rev6)
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (5 preceding siblings ...)
  2026-08-18 15:15 ` ✗ CI.checkpatch: warning for Introduce error threshold to drm_ras (rev6) Patchwork
@ 2026-08-18 15:17 ` Patchwork
  2026-08-18 16:04 ` ✓ Xe.CI.BAT: " Patchwork
  2026-08-18 19:27 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-08-18 15:17 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

== Series Details ==

Series: Introduce error threshold to drm_ras (rev6)
URL   : https://patchwork.freedesktop.org/series/165091/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[15:15:43] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:15:47] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:16:19] Starting KUnit Kernel (1/1)...
[15:16:19] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:16:19] ================== guc_buf (11 subtests) ===================
[15:16:19] [PASSED] test_smallest
[15:16:19] [PASSED] test_largest
[15:16:19] [PASSED] test_granular
[15:16:19] [PASSED] test_unique
[15:16:19] [PASSED] test_overlap
[15:16:19] [PASSED] test_reusable
[15:16:19] [PASSED] test_too_big
[15:16:19] [PASSED] test_flush
[15:16:19] [PASSED] test_lookup
[15:16:19] [PASSED] test_data
[15:16:19] [PASSED] test_class
[15:16:19] ===================== [PASSED] guc_buf =====================
[15:16:19] =================== guc_dbm (7 subtests) ===================
[15:16:19] [PASSED] test_empty
[15:16:19] [PASSED] test_default
[15:16:19] ======================== test_size  ========================
[15:16:19] [PASSED] 4
[15:16:19] [PASSED] 8
[15:16:19] [PASSED] 32
[15:16:19] [PASSED] 256
[15:16:19] ==================== [PASSED] test_size ====================
[15:16:19] ======================= test_reuse  ========================
[15:16:19] [PASSED] 4
[15:16:19] [PASSED] 8
[15:16:19] [PASSED] 32
[15:16:19] [PASSED] 256
[15:16:19] =================== [PASSED] test_reuse ====================
[15:16:19] =================== test_range_overlap  ====================
[15:16:19] [PASSED] 4
[15:16:19] [PASSED] 8
[15:16:19] [PASSED] 32
[15:16:19] [PASSED] 256
[15:16:19] =============== [PASSED] test_range_overlap ================
[15:16:19] =================== test_range_compact  ====================
[15:16:19] [PASSED] 4
[15:16:19] [PASSED] 8
[15:16:19] [PASSED] 32
[15:16:19] [PASSED] 256
[15:16:19] =============== [PASSED] test_range_compact ================
[15:16:19] ==================== test_range_spare  =====================
[15:16:19] [PASSED] 4
[15:16:19] [PASSED] 8
[15:16:19] [PASSED] 32
[15:16:19] [PASSED] 256
[15:16:19] ================ [PASSED] test_range_spare =================
[15:16:19] ===================== [PASSED] guc_dbm =====================
[15:16:19] =================== guc_idm (6 subtests) ===================
[15:16:19] [PASSED] bad_init
[15:16:19] [PASSED] no_init
[15:16:19] [PASSED] init_fini
[15:16:19] [PASSED] check_used
[15:16:19] [PASSED] check_quota
[15:16:19] [PASSED] check_all
[15:16:19] ===================== [PASSED] guc_idm =====================
[15:16:19] =============== guc_klv_helpers (9 subtests) ===============
[15:16:19] [PASSED] test_count
[15:16:19] [PASSED] test_encode_u32
[15:16:19] [PASSED] test_encode_u64
[15:16:19] [PASSED] test_encode_string
[15:16:19] [PASSED] test_encode_object_raw
[15:16:19] [PASSED] test_encode_object_klv
[15:16:19] [PASSED] test_encode_object_nested
[15:16:19] [PASSED] test_encode_object_basic
[15:16:19] [PASSED] test_print
[15:16:19] ================= [PASSED] guc_klv_helpers =================
[15:16:19] =================== xe_log (4 subtests) ====================
[15:16:19] [PASSED] demo_cper
[15:16:19] [PASSED] demo_dmesg
[15:16:19] ======================= test_dmesg  ========================
[15:16:19] [PASSED] test_fatal
[15:16:19] [PASSED] test_fatal_tile
[15:16:19] [PASSED] test_fatal_gt
[15:16:19] [PASSED] test_fatal_comp
[15:16:19] [PASSED] test_fatal_comp_tile
[15:16:19] [PASSED] test_fatal_comp_gt
[15:16:19] [PASSED] test_fatal_all
[15:16:19] [PASSED] test_recoverable
[15:16:19] [PASSED] test_recoverable_tile
[15:16:19] [PASSED] test_recoverable_gt
[15:16:19] [PASSED] test_recoverable_comp
[15:16:19] [PASSED] test_recoverable_comp_tile
[15:16:19] [PASSED] test_recoverable_comp_gt
[15:16:19] [PASSED] test_recoverable_all
[15:16:19] [PASSED] test_info
[15:16:19] [PASSED] test_info_tile
[15:16:19] [PASSED] test_info_gt
[15:16:19] [PASSED] test_info_err
[15:16:19] [PASSED] test_info_comp
[15:16:19] [PASSED] test_info_comp_tile
[15:16:19] [PASSED] test_info_comp_gt
[15:16:19] [PASSED] test_info_all
[15:16:20] [PASSED] test_hw_fatal
[15:16:20] [PASSED] test_hw_recoverable
[15:16:20] [PASSED] test_hw_corrected
[15:16:20] [PASSED] test_hw_informational
[15:16:20] =================== [PASSED] test_dmesg ====================
[15:16:20] ====================== test_invalid  =======================
[15:16:20] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[15:16:20] ================== [SKIPPED] test_invalid ==================
[15:16:20] ===================== [PASSED] xe_log ======================
[15:16:20] ================== no_relay (3 subtests) ===================
[15:16:20] [PASSED] xe_drops_guc2pf_if_not_ready
[15:16:20] [PASSED] xe_drops_guc2vf_if_not_ready
[15:16:20] [PASSED] xe_rejects_send_if_not_ready
[15:16:20] ==================== [PASSED] no_relay =====================
[15:16:20] ================== pf_relay (14 subtests) ==================
[15:16:20] [PASSED] pf_rejects_guc2pf_too_short
[15:16:20] [PASSED] pf_rejects_guc2pf_too_long
[15:16:20] [PASSED] pf_rejects_guc2pf_no_payload
[15:16:20] [PASSED] pf_fails_no_payload
[15:16:20] [PASSED] pf_fails_bad_origin
[15:16:20] [PASSED] pf_fails_bad_type
[15:16:20] [PASSED] pf_txn_reports_error
[15:16:20] [PASSED] pf_txn_sends_pf2guc
[15:16:20] [PASSED] pf_sends_pf2guc
[15:16:20] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[15:16:20] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[15:16:20] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[15:16:20] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[15:16:20] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[15:16:20] ==================== [PASSED] pf_relay =====================
[15:16:20] ================== vf_relay (3 subtests) ===================
[15:16:20] [PASSED] vf_rejects_guc2vf_too_short
[15:16:20] [PASSED] vf_rejects_guc2vf_too_long
[15:16:20] [PASSED] vf_rejects_guc2vf_no_payload
[15:16:20] ==================== [PASSED] vf_relay =====================
[15:16:20] ================ pf_gt_config (9 subtests) =================
[15:16:20] [PASSED] fair_contexts_1vf
[15:16:20] [PASSED] fair_doorbells_1vf
[15:16:20] [PASSED] fair_ggtt_1vf
[15:16:20] ====================== fair_vram_1vf  ======================
[15:16:20] [PASSED] 3.50 GiB
[15:16:20] [PASSED] 11.5 GiB
[15:16:20] [PASSED] 15.5 GiB
[15:16:20] [PASSED] 31.5 GiB
[15:16:20] [PASSED] 63.5 GiB
[15:16:20] [PASSED] 1.91 GiB
[15:16:20] ================== [PASSED] fair_vram_1vf ==================
[15:16:20] ================ fair_vram_1vf_admin_only  =================
[15:16:20] [PASSED] 3.50 GiB
[15:16:20] [PASSED] 11.5 GiB
[15:16:20] [PASSED] 15.5 GiB
[15:16:20] [PASSED] 31.5 GiB
[15:16:20] [PASSED] 63.5 GiB
[15:16:20] [PASSED] 1.91 GiB
[15:16:20] ============ [PASSED] fair_vram_1vf_admin_only =============
[15:16:20] ====================== fair_contexts  ======================
[15:16:20] [PASSED] 1 VF
[15:16:20] [PASSED] 2 VFs
[15:16:20] [PASSED] 3 VFs
[15:16:20] [PASSED] 4 VFs
[15:16:20] [PASSED] 5 VFs
[15:16:20] [PASSED] 6 VFs
[15:16:20] [PASSED] 7 VFs
[15:16:20] [PASSED] 8 VFs
[15:16:20] [PASSED] 9 VFs
[15:16:20] [PASSED] 10 VFs
[15:16:20] [PASSED] 11 VFs
[15:16:20] [PASSED] 12 VFs
[15:16:20] [PASSED] 13 VFs
[15:16:20] [PASSED] 14 VFs
[15:16:20] [PASSED] 15 VFs
[15:16:20] [PASSED] 16 VFs
[15:16:20] [PASSED] 17 VFs
[15:16:20] [PASSED] 18 VFs
[15:16:20] [PASSED] 19 VFs
[15:16:20] [PASSED] 20 VFs
[15:16:20] [PASSED] 21 VFs
[15:16:20] [PASSED] 22 VFs
[15:16:20] [PASSED] 23 VFs
[15:16:20] [PASSED] 24 VFs
[15:16:20] [PASSED] 25 VFs
[15:16:20] [PASSED] 26 VFs
[15:16:20] [PASSED] 27 VFs
[15:16:20] [PASSED] 28 VFs
[15:16:20] [PASSED] 29 VFs
[15:16:20] [PASSED] 30 VFs
[15:16:20] [PASSED] 31 VFs
[15:16:20] [PASSED] 32 VFs
[15:16:20] [PASSED] 33 VFs
[15:16:20] [PASSED] 34 VFs
[15:16:20] [PASSED] 35 VFs
[15:16:20] [PASSED] 36 VFs
[15:16:20] [PASSED] 37 VFs
[15:16:20] [PASSED] 38 VFs
[15:16:20] [PASSED] 39 VFs
[15:16:20] [PASSED] 40 VFs
[15:16:20] [PASSED] 41 VFs
[15:16:20] [PASSED] 42 VFs
[15:16:20] [PASSED] 43 VFs
[15:16:20] [PASSED] 44 VFs
[15:16:20] [PASSED] 45 VFs
[15:16:20] [PASSED] 46 VFs
[15:16:20] [PASSED] 47 VFs
[15:16:20] [PASSED] 48 VFs
[15:16:20] [PASSED] 49 VFs
[15:16:20] [PASSED] 50 VFs
[15:16:20] [PASSED] 51 VFs
[15:16:20] [PASSED] 52 VFs
[15:16:20] [PASSED] 53 VFs
[15:16:20] [PASSED] 54 VFs
[15:16:20] [PASSED] 55 VFs
[15:16:20] [PASSED] 56 VFs
[15:16:20] [PASSED] 57 VFs
[15:16:20] [PASSED] 58 VFs
[15:16:20] [PASSED] 59 VFs
[15:16:20] [PASSED] 60 VFs
[15:16:20] [PASSED] 61 VFs
[15:16:20] [PASSED] 62 VFs
[15:16:20] [PASSED] 63 VFs
[15:16:20] ================== [PASSED] fair_contexts ==================
[15:16:20] ===================== fair_doorbells  ======================
[15:16:20] [PASSED] 1 VF
[15:16:20] [PASSED] 2 VFs
[15:16:20] [PASSED] 3 VFs
[15:16:20] [PASSED] 4 VFs
[15:16:20] [PASSED] 5 VFs
[15:16:20] [PASSED] 6 VFs
[15:16:20] [PASSED] 7 VFs
[15:16:20] [PASSED] 8 VFs
[15:16:20] [PASSED] 9 VFs
[15:16:20] [PASSED] 10 VFs
[15:16:20] [PASSED] 11 VFs
[15:16:20] [PASSED] 12 VFs
[15:16:20] [PASSED] 13 VFs
[15:16:20] [PASSED] 14 VFs
[15:16:20] [PASSED] 15 VFs
[15:16:20] [PASSED] 16 VFs
[15:16:20] [PASSED] 17 VFs
[15:16:20] [PASSED] 18 VFs
[15:16:20] [PASSED] 19 VFs
[15:16:20] [PASSED] 20 VFs
[15:16:20] [PASSED] 21 VFs
[15:16:20] [PASSED] 22 VFs
[15:16:20] [PASSED] 23 VFs
[15:16:20] [PASSED] 24 VFs
[15:16:20] [PASSED] 25 VFs
[15:16:20] [PASSED] 26 VFs
[15:16:20] [PASSED] 27 VFs
[15:16:20] [PASSED] 28 VFs
[15:16:20] [PASSED] 29 VFs
[15:16:20] [PASSED] 30 VFs
[15:16:20] [PASSED] 31 VFs
[15:16:20] [PASSED] 32 VFs
[15:16:20] [PASSED] 33 VFs
[15:16:20] [PASSED] 34 VFs
[15:16:20] [PASSED] 35 VFs
[15:16:20] [PASSED] 36 VFs
[15:16:20] [PASSED] 37 VFs
[15:16:20] [PASSED] 38 VFs
[15:16:20] [PASSED] 39 VFs
[15:16:20] [PASSED] 40 VFs
[15:16:20] [PASSED] 41 VFs
[15:16:20] [PASSED] 42 VFs
[15:16:20] [PASSED] 43 VFs
[15:16:20] [PASSED] 44 VFs
[15:16:20] [PASSED] 45 VFs
[15:16:20] [PASSED] 46 VFs
[15:16:20] [PASSED] 47 VFs
[15:16:20] [PASSED] 48 VFs
[15:16:20] [PASSED] 49 VFs
[15:16:20] [PASSED] 50 VFs
[15:16:20] [PASSED] 51 VFs
[15:16:20] [PASSED] 52 VFs
[15:16:20] [PASSED] 53 VFs
[15:16:20] [PASSED] 54 VFs
[15:16:20] [PASSED] 55 VFs
[15:16:20] [PASSED] 56 VFs
[15:16:20] [PASSED] 57 VFs
[15:16:20] [PASSED] 58 VFs
[15:16:20] [PASSED] 59 VFs
[15:16:20] [PASSED] 60 VFs
[15:16:20] [PASSED] 61 VFs
[15:16:20] [PASSED] 62 VFs
[15:16:20] [PASSED] 63 VFs
[15:16:20] ================= [PASSED] fair_doorbells ==================
[15:16:20] ======================== fair_ggtt  ========================
[15:16:20] [PASSED] 1 VF
[15:16:20] [PASSED] 2 VFs
[15:16:20] [PASSED] 3 VFs
[15:16:20] [PASSED] 4 VFs
[15:16:20] [PASSED] 5 VFs
[15:16:20] [PASSED] 6 VFs
[15:16:20] [PASSED] 7 VFs
[15:16:20] [PASSED] 8 VFs
[15:16:20] [PASSED] 9 VFs
[15:16:20] [PASSED] 10 VFs
[15:16:20] [PASSED] 11 VFs
[15:16:20] [PASSED] 12 VFs
[15:16:20] [PASSED] 13 VFs
[15:16:20] [PASSED] 14 VFs
[15:16:20] [PASSED] 15 VFs
[15:16:20] [PASSED] 16 VFs
[15:16:20] [PASSED] 17 VFs
[15:16:20] [PASSED] 18 VFs
[15:16:20] [PASSED] 19 VFs
[15:16:20] [PASSED] 20 VFs
[15:16:20] [PASSED] 21 VFs
[15:16:20] [PASSED] 22 VFs
[15:16:20] [PASSED] 23 VFs
[15:16:20] [PASSED] 24 VFs
[15:16:20] [PASSED] 25 VFs
[15:16:20] [PASSED] 26 VFs
[15:16:20] [PASSED] 27 VFs
[15:16:20] [PASSED] 28 VFs
[15:16:20] [PASSED] 29 VFs
[15:16:20] [PASSED] 30 VFs
[15:16:20] [PASSED] 31 VFs
[15:16:20] [PASSED] 32 VFs
[15:16:20] [PASSED] 33 VFs
[15:16:20] [PASSED] 34 VFs
[15:16:20] [PASSED] 35 VFs
[15:16:20] [PASSED] 36 VFs
[15:16:20] [PASSED] 37 VFs
[15:16:20] [PASSED] 38 VFs
[15:16:20] [PASSED] 39 VFs
[15:16:20] [PASSED] 40 VFs
[15:16:20] [PASSED] 41 VFs
[15:16:20] [PASSED] 42 VFs
[15:16:20] [PASSED] 43 VFs
[15:16:20] [PASSED] 44 VFs
[15:16:20] [PASSED] 45 VFs
[15:16:20] [PASSED] 46 VFs
[15:16:20] [PASSED] 47 VFs
[15:16:20] [PASSED] 48 VFs
[15:16:20] [PASSED] 49 VFs
[15:16:20] [PASSED] 50 VFs
[15:16:20] [PASSED] 51 VFs
[15:16:20] [PASSED] 52 VFs
[15:16:20] [PASSED] 53 VFs
[15:16:20] [PASSED] 54 VFs
[15:16:20] [PASSED] 55 VFs
[15:16:20] [PASSED] 56 VFs
[15:16:20] [PASSED] 57 VFs
[15:16:20] [PASSED] 58 VFs
[15:16:20] [PASSED] 59 VFs
[15:16:20] [PASSED] 60 VFs
[15:16:20] [PASSED] 61 VFs
[15:16:20] [PASSED] 62 VFs
[15:16:20] [PASSED] 63 VFs
[15:16:20] ==================== [PASSED] fair_ggtt ====================
[15:16:20] ======================== fair_vram  ========================
[15:16:20] [PASSED] 1 VF
[15:16:20] [PASSED] 2 VFs
[15:16:20] [PASSED] 3 VFs
[15:16:20] [PASSED] 4 VFs
[15:16:20] [PASSED] 5 VFs
[15:16:20] [PASSED] 6 VFs
[15:16:20] [PASSED] 7 VFs
[15:16:20] [PASSED] 8 VFs
[15:16:20] [PASSED] 9 VFs
[15:16:20] [PASSED] 10 VFs
[15:16:20] [PASSED] 11 VFs
[15:16:20] [PASSED] 12 VFs
[15:16:20] [PASSED] 13 VFs
[15:16:20] [PASSED] 14 VFs
[15:16:20] [PASSED] 15 VFs
[15:16:20] [PASSED] 16 VFs
[15:16:20] [PASSED] 17 VFs
[15:16:20] [PASSED] 18 VFs
[15:16:20] [PASSED] 19 VFs
[15:16:20] [PASSED] 20 VFs
[15:16:20] [PASSED] 21 VFs
[15:16:20] [PASSED] 22 VFs
[15:16:20] [PASSED] 23 VFs
[15:16:20] [PASSED] 24 VFs
[15:16:20] [PASSED] 25 VFs
[15:16:20] [PASSED] 26 VFs
[15:16:20] [PASSED] 27 VFs
[15:16:20] [PASSED] 28 VFs
[15:16:20] [PASSED] 29 VFs
[15:16:20] [PASSED] 30 VFs
[15:16:20] [PASSED] 31 VFs
[15:16:20] [PASSED] 32 VFs
[15:16:20] [PASSED] 33 VFs
[15:16:20] [PASSED] 34 VFs
[15:16:20] [PASSED] 35 VFs
[15:16:20] [PASSED] 36 VFs
[15:16:20] [PASSED] 37 VFs
[15:16:20] [PASSED] 38 VFs
[15:16:20] [PASSED] 39 VFs
[15:16:20] [PASSED] 40 VFs
[15:16:20] [PASSED] 41 VFs
[15:16:20] [PASSED] 42 VFs
[15:16:20] [PASSED] 43 VFs
[15:16:20] [PASSED] 44 VFs
[15:16:20] [PASSED] 45 VFs
[15:16:20] [PASSED] 46 VFs
[15:16:20] [PASSED] 47 VFs
[15:16:20] [PASSED] 48 VFs
[15:16:20] [PASSED] 49 VFs
[15:16:20] [PASSED] 50 VFs
[15:16:20] [PASSED] 51 VFs
[15:16:20] [PASSED] 52 VFs
[15:16:20] [PASSED] 53 VFs
[15:16:20] [PASSED] 54 VFs
[15:16:20] [PASSED] 55 VFs
[15:16:20] [PASSED] 56 VFs
[15:16:20] [PASSED] 57 VFs
[15:16:20] [PASSED] 58 VFs
[15:16:20] [PASSED] 59 VFs
[15:16:20] [PASSED] 60 VFs
[15:16:20] [PASSED] 61 VFs
[15:16:20] [PASSED] 62 VFs
[15:16:20] [PASSED] 63 VFs
[15:16:20] ==================== [PASSED] fair_vram ====================
[15:16:20] ================== [PASSED] pf_gt_config ===================
[15:16:20] ===================== lmtt (1 subtest) =====================
[15:16:20] ======================== test_ops  =========================
[15:16:20] [PASSED] 2-level
[15:16:20] [PASSED] multi-level
[15:16:20] ==================== [PASSED] test_ops =====================
[15:16:20] ====================== [PASSED] lmtt =======================
[15:16:20] ================= sriov_packet (1 subtest) =================
[15:16:20] [PASSED] test_descriptor_init
[15:16:20] ================== [PASSED] sriov_packet ===================
[15:16:20] ================= pf_service (11 subtests) =================
[15:16:20] [PASSED] pf_negotiate_any
[15:16:20] [PASSED] pf_negotiate_base_match
[15:16:20] [PASSED] pf_negotiate_base_newer
[15:16:20] [PASSED] pf_negotiate_base_next
[15:16:20] [SKIPPED] pf_negotiate_base_older (no older minor)
[15:16:20] [PASSED] pf_negotiate_base_prev
[15:16:20] [PASSED] pf_negotiate_latest_match
[15:16:20] [PASSED] pf_negotiate_latest_newer
[15:16:20] [PASSED] pf_negotiate_latest_next
[15:16:20] [SKIPPED] pf_negotiate_latest_older (no older minor)
[15:16:20] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[15:16:20] =================== [PASSED] pf_service ====================
[15:16:20] ================= xe_guc_g2g (2 subtests) ==================
[15:16:20] ============== xe_live_guc_g2g_kunit_default  ==============
[15:16:20] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[15:16:20] ============== xe_live_guc_g2g_kunit_allmem  ===============
[15:16:20] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[15:16:20] =================== [SKIPPED] xe_guc_g2g ===================
[15:16:20] =================== xe_mocs (2 subtests) ===================
[15:16:20] ================ xe_live_mocs_kernel_kunit  ================
[15:16:20] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[15:16:20] ================ xe_live_mocs_reset_kunit  =================
[15:16:20] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[15:16:20] ==================== [SKIPPED] xe_mocs =====================
[15:16:20] ================= xe_migrate (2 subtests) ==================
[15:16:20] ================= xe_migrate_sanity_kunit  =================
[15:16:20] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[15:16:20] ================== xe_validate_ccs_kunit  ==================
[15:16:20] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[15:16:20] =================== [SKIPPED] xe_migrate ===================
[15:16:20] ================== xe_dma_buf (1 subtest) ==================
[15:16:20] ==================== xe_dma_buf_kunit  =====================
[15:16:20] ================ [SKIPPED] xe_dma_buf_kunit ================
[15:16:20] =================== [SKIPPED] xe_dma_buf ===================
[15:16:20] ================= xe_bo_shrink (1 subtest) =================
[15:16:20] =================== xe_bo_shrink_kunit  ====================
[15:16:20] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[15:16:20] ================== [SKIPPED] xe_bo_shrink ==================
[15:16:20] ==================== xe_bo (2 subtests) ====================
[15:16:20] ================== xe_ccs_migrate_kunit  ===================
[15:16:20] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[15:16:20] ==================== xe_bo_evict_kunit  ====================
[15:16:20] =============== [SKIPPED] xe_bo_evict_kunit ================
[15:16:20] ===================== [SKIPPED] xe_bo ======================
[15:16:20] =================== xe_any (9 subtests) ====================
[15:16:20] [PASSED] test_to_xe
[15:16:20] [PASSED] test_to_dev
[15:16:20] [PASSED] test_to_pdev
[15:16:20] [PASSED] test_to_drm
[15:16:20] [PASSED] test_if_pdev
[15:16:20] [PASSED] test_if_xe
[15:16:20] [PASSED] test_if_tile
[15:16:20] [PASSED] test_if_gt
[15:16:20] [PASSED] test_to_id
[15:16:20] ===================== [PASSED] xe_any ======================
[15:16:20] ==================== args (13 subtests) ====================
[15:16:20] [PASSED] count_args_test
[15:16:20] [PASSED] call_args_example
[15:16:20] [PASSED] call_args_test
[15:16:20] [PASSED] drop_first_arg_example
[15:16:20] [PASSED] drop_first_arg_test
[15:16:20] [PASSED] first_arg_example
[15:16:20] [PASSED] first_arg_test
[15:16:20] [PASSED] last_arg_example
[15:16:20] [PASSED] last_arg_test
[15:16:20] [PASSED] pick_arg_example
[15:16:20] [PASSED] if_args_example
[15:16:20] [PASSED] if_args_test
[15:16:20] [PASSED] sep_comma_example
[15:16:20] ====================== [PASSED] args =======================
[15:16:20] =================== xe_pci (3 subtests) ====================
[15:16:20] ==================== check_graphics_ip  ====================
[15:16:20] [PASSED] 12.00 Xe_LP
[15:16:20] [PASSED] 12.10 Xe_LP+
[15:16:20] [PASSED] 12.55 Xe_HPG
[15:16:20] [PASSED] 12.60 Xe_HPC
[15:16:20] [PASSED] 12.70 Xe_LPG
[15:16:20] [PASSED] 12.71 Xe_LPG
[15:16:20] [PASSED] 12.74 Xe_LPG+
[15:16:20] [PASSED] 20.01 Xe2_HPG
[15:16:20] [PASSED] 20.02 Xe2_HPG
[15:16:20] [PASSED] 20.04 Xe2_LPG
[15:16:20] [PASSED] 30.00 Xe3_LPG
[15:16:20] [PASSED] 30.01 Xe3_LPG
[15:16:20] [PASSED] 30.03 Xe3_LPG
[15:16:20] [PASSED] 30.04 Xe3_LPG
[15:16:20] [PASSED] 30.05 Xe3_LPG
[15:16:20] [PASSED] 35.10 Xe3p_LPG
[15:16:20] [PASSED] 35.11 Xe3p_XPC
[15:16:20] ================ [PASSED] check_graphics_ip ================
[15:16:20] ===================== check_media_ip  ======================
[15:16:20] [PASSED] 12.00 Xe_M
[15:16:20] [PASSED] 12.55 Xe_HPM
[15:16:20] [PASSED] 13.00 Xe_LPM+
[15:16:20] [PASSED] 13.01 Xe2_HPM
[15:16:20] [PASSED] 20.00 Xe2_LPM
[15:16:20] [PASSED] 30.00 Xe3_LPM
[15:16:20] [PASSED] 30.02 Xe3_LPM
[15:16:20] [PASSED] 35.00 Xe3p_LPM
[15:16:20] [PASSED] 35.03 Xe3p_HPM
[15:16:20] ================= [PASSED] check_media_ip ==================
[15:16:20] =================== check_platform_desc  ===================
[15:16:20] [PASSED] 0x9A60 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A68 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A70 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A40 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A49 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A59 (TIGERLAKE)
[15:16:20] [PASSED] 0x9A78 (TIGERLAKE)
[15:16:20] [PASSED] 0x9AC0 (TIGERLAKE)
[15:16:20] [PASSED] 0x9AC9 (TIGERLAKE)
[15:16:20] [PASSED] 0x9AD9 (TIGERLAKE)
[15:16:20] [PASSED] 0x9AF8 (TIGERLAKE)
[15:16:20] [PASSED] 0x4C80 (ROCKETLAKE)
[15:16:20] [PASSED] 0x4C8A (ROCKETLAKE)
[15:16:20] [PASSED] 0x4C8B (ROCKETLAKE)
[15:16:20] [PASSED] 0x4C8C (ROCKETLAKE)
[15:16:20] [PASSED] 0x4C90 (ROCKETLAKE)
[15:16:20] [PASSED] 0x4C9A (ROCKETLAKE)
[15:16:20] [PASSED] 0x4680 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4682 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4688 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x468A (ALDERLAKE_S)
[15:16:20] [PASSED] 0x468B (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4690 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4692 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4693 (ALDERLAKE_S)
[15:16:20] [PASSED] 0x46A0 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46A1 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46A2 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46A3 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46A6 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46A8 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46AA (ALDERLAKE_P)
[15:16:20] [PASSED] 0x462A (ALDERLAKE_P)
[15:16:20] [PASSED] 0x4626 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x4628 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46B0 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46B1 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46B2 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46B3 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46C0 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46C1 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46C2 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46C3 (ALDERLAKE_P)
[15:16:20] [PASSED] 0x46D0 (ALDERLAKE_N)
[15:16:20] [PASSED] 0x46D1 (ALDERLAKE_N)
[15:16:20] [PASSED] 0x46D2 (ALDERLAKE_N)
[15:16:20] [PASSED] 0x46D3 (ALDERLAKE_N)
[15:16:20] [PASSED] 0x46D4 (ALDERLAKE_N)
[15:16:20] [PASSED] 0xA721 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7A1 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7A9 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7AC (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7AD (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA720 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7A0 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7A8 (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7AA (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA7AB (ALDERLAKE_P)
[15:16:20] [PASSED] 0xA780 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA781 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA782 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA783 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA788 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA789 (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA78A (ALDERLAKE_S)
[15:16:20] [PASSED] 0xA78B (ALDERLAKE_S)
[15:16:20] [PASSED] 0x4905 (DG1)
[15:16:20] [PASSED] 0x4906 (DG1)
[15:16:20] [PASSED] 0x4907 (DG1)
[15:16:20] [PASSED] 0x4908 (DG1)
[15:16:20] [PASSED] 0x4909 (DG1)
[15:16:20] [PASSED] 0x56C0 (DG2)
[15:16:20] [PASSED] 0x56C2 (DG2)
[15:16:20] [PASSED] 0x56C1 (DG2)
[15:16:20] [PASSED] 0x7D51 (METEORLAKE)
[15:16:20] [PASSED] 0x7DD1 (METEORLAKE)
[15:16:20] [PASSED] 0x7D41 (METEORLAKE)
[15:16:20] [PASSED] 0x7D67 (METEORLAKE)
[15:16:20] [PASSED] 0xB640 (METEORLAKE)
[15:16:20] [PASSED] 0x56A0 (DG2)
[15:16:20] [PASSED] 0x56A1 (DG2)
[15:16:20] [PASSED] 0x56A2 (DG2)
[15:16:20] [PASSED] 0x56BE (DG2)
[15:16:20] [PASSED] 0x56BF (DG2)
[15:16:20] [PASSED] 0x5690 (DG2)
[15:16:20] [PASSED] 0x5691 (DG2)
[15:16:20] [PASSED] 0x5692 (DG2)
[15:16:20] [PASSED] 0x56A5 (DG2)
[15:16:20] [PASSED] 0x56A6 (DG2)
[15:16:20] [PASSED] 0x56B0 (DG2)
[15:16:20] [PASSED] 0x56B1 (DG2)
[15:16:20] [PASSED] 0x56BA (DG2)
[15:16:20] [PASSED] 0x56BB (DG2)
[15:16:20] [PASSED] 0x56BC (DG2)
[15:16:20] [PASSED] 0x56BD (DG2)
[15:16:20] [PASSED] 0x5693 (DG2)
[15:16:20] [PASSED] 0x5694 (DG2)
[15:16:20] [PASSED] 0x5695 (DG2)
[15:16:20] [PASSED] 0x56A3 (DG2)
[15:16:20] [PASSED] 0x56A4 (DG2)
[15:16:20] [PASSED] 0x56B2 (DG2)
[15:16:20] [PASSED] 0x56B3 (DG2)
[15:16:20] [PASSED] 0x5696 (DG2)
[15:16:20] [PASSED] 0x5697 (DG2)
[15:16:20] [PASSED] 0xB69 (PVC)
[15:16:20] [PASSED] 0xB6E (PVC)
[15:16:20] [PASSED] 0xBD4 (PVC)
[15:16:20] [PASSED] 0xBD5 (PVC)
[15:16:20] [PASSED] 0xBD6 (PVC)
[15:16:20] [PASSED] 0xBD7 (PVC)
[15:16:20] [PASSED] 0xBD8 (PVC)
[15:16:20] [PASSED] 0xBD9 (PVC)
[15:16:20] [PASSED] 0xBDA (PVC)
[15:16:20] [PASSED] 0xBDB (PVC)
[15:16:20] [PASSED] 0xBE0 (PVC)
[15:16:20] [PASSED] 0xBE1 (PVC)
[15:16:20] [PASSED] 0xBE5 (PVC)
[15:16:20] [PASSED] 0x7D40 (METEORLAKE)
[15:16:20] [PASSED] 0x7D45 (METEORLAKE)
[15:16:20] [PASSED] 0x7D55 (METEORLAKE)
[15:16:20] [PASSED] 0x7D60 (METEORLAKE)
[15:16:20] [PASSED] 0x7DD5 (METEORLAKE)
[15:16:20] [PASSED] 0x6420 (LUNARLAKE)
[15:16:20] [PASSED] 0x64A0 (LUNARLAKE)
[15:16:20] [PASSED] 0x64B0 (LUNARLAKE)
[15:16:20] [PASSED] 0xE202 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE209 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE20B (BATTLEMAGE)
[15:16:20] [PASSED] 0xE20C (BATTLEMAGE)
[15:16:20] [PASSED] 0xE20D (BATTLEMAGE)
[15:16:20] [PASSED] 0xE210 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE211 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE212 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE216 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE220 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE221 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE222 (BATTLEMAGE)
[15:16:20] [PASSED] 0xE223 (BATTLEMAGE)
[15:16:20] [PASSED] 0xB080 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB081 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB082 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB083 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB084 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB085 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB086 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB087 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB08F (PANTHERLAKE)
[15:16:20] [PASSED] 0xB090 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB0A0 (PANTHERLAKE)
[15:16:20] [PASSED] 0xB0B0 (PANTHERLAKE)
[15:16:20] [PASSED] 0xFD80 (PANTHERLAKE)
[15:16:20] [PASSED] 0xFD81 (PANTHERLAKE)
[15:16:20] [PASSED] 0xD740 (NOVALAKE_S)
[15:16:20] [PASSED] 0xD741 (NOVALAKE_S)
[15:16:20] [PASSED] 0xD742 (NOVALAKE_S)
[15:16:20] [PASSED] 0xD743 (NOVALAKE_S)
[15:16:20] [PASSED] 0xD745 (NOVALAKE_S)
[15:16:20] [PASSED] 0xD74A (NOVALAKE_S)
[15:16:20] [PASSED] 0xD74B (NOVALAKE_S)
[15:16:20] [PASSED] 0x674C (CRESCENTISLAND)
[15:16:20] [PASSED] 0x674D (CRESCENTISLAND)
[15:16:20] [PASSED] 0x674E (CRESCENTISLAND)
[15:16:20] [PASSED] 0x674F (CRESCENTISLAND)
[15:16:20] [PASSED] 0x6750 (CRESCENTISLAND)
[15:16:20] [PASSED] 0xD750 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD751 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD752 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD753 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD754 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD755 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD756 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD757 (NOVALAKE_P)
[15:16:20] [PASSED] 0xD75F (NOVALAKE_P)
[15:16:20] =============== [PASSED] check_platform_desc ===============
[15:16:20] ===================== [PASSED] xe_pci ======================
[15:16:20] ============= xe_rtp_tables_test (5 subtests) ==============
[15:16:20] ================== xe_rtp_table_gt_test  ===================
[15:16:20] [PASSED] gt_was/14011060649
[15:16:20] [PASSED] gt_was/14011059788
[15:16:20] [PASSED] gt_was/14015795083
[15:16:20] [PASSED] gt_was/16021867713
[15:16:20] [PASSED] gt_was/14019449301
[15:16:20] [PASSED] gt_was/16028005424
[15:16:20] [PASSED] gt_was/14026578760
[15:16:20] [PASSED] gt_was/1409420604
[15:16:20] [PASSED] gt_was/1408615072
[15:16:20] [PASSED] gt_was/22010523718
[15:16:20] [PASSED] gt_was/14011006942
[15:16:20] [PASSED] gt_was/14014830051
[15:16:20] [PASSED] gt_was/18018781329
[15:16:20] [PASSED] gt_was/1509235366
[15:16:20] [PASSED] gt_was/18018781329
[15:16:20] [PASSED] gt_was/16016694945
[15:16:20] [PASSED] gt_was/14018575942
[15:16:20] [PASSED] gt_was/22016670082
[15:16:20] [PASSED] gt_was/22016670082
[15:16:20] [PASSED] gt_was/14017421178
[15:16:20] [PASSED] gt_was/16025250150
[15:16:20] [PASSED] gt_was/14021871409
[15:16:20] [PASSED] gt_was/16021865536
[15:16:20] [PASSED] gt_was/14021486841
[15:16:20] [PASSED] gt_was/14025160223
[15:16:20] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[15:16:20] [PASSED] gt_was/14025635424
[15:16:20] [PASSED] gt_was/16028005424
[15:16:20] ============== [PASSED] xe_rtp_table_gt_test ===============
[15:16:20] ================== xe_rtp_table_gt_test  ===================
[15:16:20] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[15:16:20] [PASSED] gt_tunings/Tuning: 32B Access Enable
[15:16:20] [PASSED] gt_tunings/Tuning: L3 cache
[15:16:20] [PASSED] gt_tunings/Tuning: L3 cache - media
[15:16:20] [PASSED] gt_tunings/Tuning: Compression Overfetch
[15:16:20] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[15:16:20] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[15:16:20] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[15:16:20] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[15:16:20] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[15:16:20] [PASSED] gt_tunings/Tuning: Stateless compression control
[15:16:20] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[15:16:20] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[15:16:20] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[15:16:20] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[15:16:20] ============== [PASSED] xe_rtp_table_gt_test ===============
[15:16:20] ================== xe_rtp_table_oob_test  ==================
[15:16:20] [PASSED] oob_was/1607983814
[15:16:20] [PASSED] oob_was/16010904313
[15:16:20] [PASSED] oob_was/18022495364
[15:16:20] [PASSED] oob_was/22012773006
[15:16:20] [PASSED] oob_was/14014475959
[15:16:20] [PASSED] oob_was/22011391025
[15:16:20] [PASSED] oob_was/22012727170
[15:16:20] [PASSED] oob_was/22012727685
[15:16:20] [PASSED] oob_was/22016596838
[15:16:20] [PASSED] oob_was/18020744125
[15:16:20] [PASSED] oob_was/1409600907
[15:16:20] [PASSED] oob_was/22014953428
[15:16:20] [PASSED] oob_was/16017236439
[15:16:20] [PASSED] oob_was/14019821291
[15:16:20] [PASSED] oob_was/14015076503
[15:16:20] [PASSED] oob_was/14018913170
[15:16:20] [PASSED] oob_was/14018094691
[15:16:20] [PASSED] oob_was/18024947630
[15:16:20] [PASSED] oob_was/16022287689
[15:16:20] [PASSED] oob_was/13011645652
[15:16:20] [PASSED] oob_was/14022293748
[15:16:20] [PASSED] oob_was/22019794406
[15:16:20] [PASSED] oob_was/22019338487
[15:16:20] [PASSED] oob_was/16023588340
[15:16:20] [PASSED] oob_was/14019789679
[15:16:20] [PASSED] oob_was/14022866841
[15:16:20] [PASSED] oob_was/16021333562
[15:16:20] [PASSED] oob_was/14016712196
[15:16:20] [PASSED] oob_was/14015568240
[15:16:20] [PASSED] oob_was/18013179988
[15:16:20] [PASSED] oob_was/1508761755
[15:16:20] [PASSED] oob_was/16023105232
[15:16:20] [PASSED] oob_was/16026508708
[15:16:20] [PASSED] oob_was/14020001231
[15:16:20] [PASSED] oob_was/16023683509
[15:16:20] [PASSED] oob_was/14025515070
[15:16:20] [PASSED] oob_was/15015404425_disable
[15:16:20] [PASSED] oob_was/16026007364
[15:16:20] [PASSED] oob_was/14020316580
[15:16:20] [PASSED] oob_was/14025883347
[15:16:20] [PASSED] oob_was/16029380221
[15:16:20] [PASSED] oob_was/22022079272
[15:16:20] [PASSED] oob_was/16029897822
[15:16:20] [PASSED] oob_was/14027054324
[15:16:20] ============== [PASSED] xe_rtp_table_oob_test ==============
[15:16:20] ================ xe_rtp_table_dev_oob_test  ================
[15:16:20] [PASSED] device_oob_was/22010954014
[15:16:20] [PASSED] device_oob_was/15015404425
[15:16:20] [PASSED] device_oob_was/22019338487_display
[15:16:20] [PASSED] device_oob_was/14022085890
[15:16:20] [PASSED] device_oob_was/14026539277
[15:16:20] [PASSED] device_oob_was/14026633728
[15:16:20] [PASSED] device_oob_was/14026746987
[15:16:20] [PASSED] device_oob_was/14026779378
[15:16:20] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[15:16:20] ========== xe_rtp_table_missing_upper_bound_test  ==========
[15:16:20] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[15:16:20] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[15:16:20] [PASSED] register_whitelist/1806527549
[15:16:20] [PASSED] register_whitelist/allow_read_ctx_timestamp
[15:16:20] [PASSED] register_whitelist/allow_read_queue_timestamp
[15:16:20] [PASSED] register_whitelist/16014440446
[15:16:20] [PASSED] register_whitelist/16017236439
[15:16:20] [PASSED] register_whitelist/16020183090
[15:16:20] [PASSED] register_whitelist/14024997852
[15:16:20] [PASSED] register_whitelist/14024997852
[15:16:20] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[15:16:20] =============== [PASSED] xe_rtp_tables_test ================
[15:16:20] =================== xe_rtp (3 subtests) ====================
[15:16:20] =================== xe_rtp_rules_tests  ====================
[15:16:20] [PASSED] no
[15:16:20] [PASSED] yes
[15:16:20] [PASSED] no-and-no
[15:16:20] [PASSED] no-and-yes
[15:16:20] [PASSED] yes-and-no
[15:16:20] [PASSED] yes-and-yes
[15:16:20] [PASSED] no-or-no
[15:16:20] [PASSED] no-or-yes
[15:16:20] [PASSED] yes-or-no
[15:16:20] [PASSED] yes-or-yes
[15:16:20] [PASSED] no-yes-or-yes-no
[15:16:20] [PASSED] no-yes-or-yes-yes
[15:16:20] [PASSED] yes-yes-or-no-yes
[15:16:20] [PASSED] yes-yes-or-yes-yes
[15:16:20] [PASSED] no-no-or-yes-or-no
[15:16:20] [PASSED] or
[15:16:20] [PASSED] or-yes
[15:16:20] [PASSED] or-no
[15:16:20] [PASSED] yes-or
[15:16:20] [PASSED] no-or
[15:16:20] [PASSED] no-or-or-yes
[15:16:20] [PASSED] yes-or-or-no
[15:16:20] [PASSED] no-or-or-no
[15:16:20] [PASSED] missing-context-engine-class
[15:16:20] [PASSED] missing-context-engine-class-or-yes
[15:16:20] [PASSED] missing-context-engine-class-or-or-yes
[15:16:20] =============== [PASSED] xe_rtp_rules_tests ================
[15:16:20] =============== xe_rtp_process_to_sr_tests  ================
[15:16:20] [PASSED] coalesce-same-reg
[15:16:20] [PASSED] coalesce-same-reg-literal-and-func
[15:16:20] [PASSED] no-match-no-add
[15:16:20] [PASSED] two-regs-two-entries
[15:16:20] [PASSED] clr-one-set-other
[15:16:20] [PASSED] set-field
[15:16:20] [PASSED] conflict-duplicate
[15:16:20] [PASSED] conflict-not-disjoint
[15:16:20] [PASSED] conflict-not-disjoint-literal-and-func
[15:16:20] [PASSED] conflict-reg-type
[15:16:20] [PASSED] bad-mcr-reg-forced-to-regular
[15:16:20] [PASSED] bad-regular-reg-forced-to-mcr
[15:16:20] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[15:16:20] ================== xe_rtp_process_tests  ===================
[15:16:20] [PASSED] active1
[15:16:20] [PASSED] active2
[15:16:20] [PASSED] active-inactive
[15:16:20] [PASSED] inactive-active
[15:16:20] [PASSED] inactive-active-inactive
[15:16:20] [PASSED] inactive-inactive-inactive
[15:16:20] ============== [PASSED] xe_rtp_process_tests ===============
[15:16:20] ===================== [PASSED] xe_rtp ======================
[15:16:20] ==================== xe_wa (1 subtest) =====================
[15:16:20] ======================== xe_wa_gt  =========================
[15:16:20] [PASSED] TIGERLAKE B0
[15:16:20] [PASSED] DG1 A0
[15:16:20] [PASSED] DG1 B0
[15:16:20] [PASSED] ALDERLAKE_S A0
[15:16:20] [PASSED] ALDERLAKE_S B0
[15:16:20] [PASSED] ALDERLAKE_S C0
[15:16:20] [PASSED] ALDERLAKE_S D0
[15:16:20] [PASSED] ALDERLAKE_P A0
[15:16:20] [PASSED] ALDERLAKE_P B0
[15:16:20] [PASSED] ALDERLAKE_P C0
[15:16:20] [PASSED] ALDERLAKE_S RPLS D0
[15:16:20] [PASSED] ALDERLAKE_P RPLU E0
[15:16:20] [PASSED] DG2 G10 C0
[15:16:20] [PASSED] DG2 G11 B1
[15:16:20] [PASSED] DG2 G12 A1
[15:16:20] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[15:16:20] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[15:16:20] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[15:16:20] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[15:16:20] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[15:16:20] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[15:16:20] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[15:16:20] ==================== [PASSED] xe_wa_gt =====================
[15:16:20] ====================== [PASSED] xe_wa ======================
[15:16:20] ============================================================
[15:16:20] Testing complete. Ran 789 tests: passed: 761, skipped: 28
[15:16:20] Elapsed time: 37.066s total, 4.410s configuring, 31.940s building, 0.668s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[15:16:20] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:16:22] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:16:47] Starting KUnit Kernel (1/1)...
[15:16:47] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:16:47] ============ drm_test_pick_cmdline (2 subtests) ============
[15:16:47] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[15:16:47] =============== drm_test_pick_cmdline_named  ===============
[15:16:47] [PASSED] NTSC
[15:16:47] [PASSED] NTSC-J
[15:16:47] [PASSED] PAL
[15:16:47] [PASSED] PAL-M
[15:16:47] =========== [PASSED] drm_test_pick_cmdline_named ===========
[15:16:47] ============== [PASSED] drm_test_pick_cmdline ==============
[15:16:47] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[15:16:47] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[15:16:47] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[15:16:47] =========== drm_validate_clone_mode (2 subtests) ===========
[15:16:47] ============== drm_test_check_in_clone_mode  ===============
[15:16:47] [PASSED] in_clone_mode
[15:16:47] [PASSED] not_in_clone_mode
[15:16:47] ========== [PASSED] drm_test_check_in_clone_mode ===========
[15:16:47] =============== drm_test_check_valid_clones  ===============
[15:16:47] [PASSED] not_in_clone_mode
[15:16:47] [PASSED] valid_clone
[15:16:47] [PASSED] invalid_clone
[15:16:47] =========== [PASSED] drm_test_check_valid_clones ===========
[15:16:47] ============= [PASSED] drm_validate_clone_mode =============
[15:16:47] ============= drm_validate_modeset (1 subtest) =============
[15:16:47] [PASSED] drm_test_check_connector_changed_modeset
[15:16:47] ============== [PASSED] drm_validate_modeset ===============
[15:16:47] ====== drm_test_bridge_get_current_state (1 subtest) =======
[15:16:47] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[15:16:47] ======== [PASSED] drm_test_bridge_get_current_state ========
[15:16:47] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[15:16:47] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[15:16:47] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[15:16:47] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[15:16:47] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[15:16:47] ============== drm_bridge_alloc (2 subtests) ===============
[15:16:47] [PASSED] drm_test_drm_bridge_alloc_basic
[15:16:47] [PASSED] drm_test_drm_bridge_alloc_get_put
[15:16:47] ================ [PASSED] drm_bridge_alloc =================
[15:16:47] ============= drm_bridge_bus_fmt (5 subtests) ==============
[15:16:47] [PASSED] drm_test_bridge_rgb_yuv_rgb
[15:16:47] [PASSED] drm_test_bridge_must_convert_to_yuv444
[15:16:47] [PASSED] drm_test_bridge_hdmi_auto_rgb
[15:16:47] [PASSED] drm_test_bridge_auto_first
[15:16:47] [PASSED] drm_test_bridge_rgb_yuv_no_path
[15:16:47] =============== [PASSED] drm_bridge_bus_fmt ================
[15:16:47] ============= drm_cmdline_parser (40 subtests) =============
[15:16:47] [PASSED] drm_test_cmdline_force_d_only
[15:16:47] [PASSED] drm_test_cmdline_force_D_only_dvi
[15:16:47] [PASSED] drm_test_cmdline_force_D_only_hdmi
[15:16:47] [PASSED] drm_test_cmdline_force_D_only_not_digital
[15:16:47] [PASSED] drm_test_cmdline_force_e_only
[15:16:47] [PASSED] drm_test_cmdline_res
[15:16:47] [PASSED] drm_test_cmdline_res_vesa
[15:16:47] [PASSED] drm_test_cmdline_res_vesa_rblank
[15:16:47] [PASSED] drm_test_cmdline_res_rblank
[15:16:47] [PASSED] drm_test_cmdline_res_bpp
[15:16:47] [PASSED] drm_test_cmdline_res_refresh
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[15:16:47] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[15:16:47] [PASSED] drm_test_cmdline_res_margins_force_on
[15:16:47] [PASSED] drm_test_cmdline_res_vesa_margins
[15:16:47] [PASSED] drm_test_cmdline_name
[15:16:47] [PASSED] drm_test_cmdline_name_bpp
[15:16:47] [PASSED] drm_test_cmdline_name_option
[15:16:47] [PASSED] drm_test_cmdline_name_bpp_option
[15:16:47] [PASSED] drm_test_cmdline_rotate_0
[15:16:47] [PASSED] drm_test_cmdline_rotate_90
[15:16:47] [PASSED] drm_test_cmdline_rotate_180
[15:16:47] [PASSED] drm_test_cmdline_rotate_270
[15:16:47] [PASSED] drm_test_cmdline_hmirror
[15:16:47] [PASSED] drm_test_cmdline_vmirror
[15:16:47] [PASSED] drm_test_cmdline_margin_options
[15:16:47] [PASSED] drm_test_cmdline_multiple_options
[15:16:47] [PASSED] drm_test_cmdline_bpp_extra_and_option
[15:16:47] [PASSED] drm_test_cmdline_extra_and_option
[15:16:47] [PASSED] drm_test_cmdline_freestanding_options
[15:16:47] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[15:16:47] [PASSED] drm_test_cmdline_panel_orientation
[15:16:47] ================ drm_test_cmdline_invalid  =================
[15:16:47] [PASSED] margin_only
[15:16:47] [PASSED] interlace_only
[15:16:47] [PASSED] res_missing_x
[15:16:47] [PASSED] res_missing_y
[15:16:47] [PASSED] res_bad_y
[15:16:47] [PASSED] res_missing_y_bpp
[15:16:47] [PASSED] res_bad_bpp
[15:16:47] [PASSED] res_bad_refresh
[15:16:47] [PASSED] res_bpp_refresh_force_on_off
[15:16:47] [PASSED] res_invalid_mode
[15:16:47] [PASSED] res_bpp_wrong_place_mode
[15:16:47] [PASSED] name_bpp_refresh
[15:16:47] [PASSED] name_refresh
[15:16:47] [PASSED] name_refresh_wrong_mode
[15:16:47] [PASSED] name_refresh_invalid_mode
[15:16:47] [PASSED] rotate_multiple
[15:16:47] [PASSED] rotate_invalid_val
[15:16:47] [PASSED] rotate_truncated
[15:16:47] [PASSED] invalid_option
[15:16:47] [PASSED] invalid_tv_option
[15:16:47] [PASSED] truncated_tv_option
[15:16:47] ============ [PASSED] drm_test_cmdline_invalid =============
[15:16:47] =============== drm_test_cmdline_tv_options  ===============
[15:16:47] [PASSED] NTSC
[15:16:47] [PASSED] NTSC_443
[15:16:47] [PASSED] NTSC_J
[15:16:47] [PASSED] PAL
[15:16:47] [PASSED] PAL_M
[15:16:47] [PASSED] PAL_N
[15:16:47] [PASSED] SECAM
[15:16:47] [PASSED] MONO_525
[15:16:47] [PASSED] MONO_625
[15:16:47] =========== [PASSED] drm_test_cmdline_tv_options ===========
[15:16:47] =============== [PASSED] drm_cmdline_parser ================
[15:16:47] ========== drmm_connector_hdmi_init (20 subtests) ==========
[15:16:47] [PASSED] drm_test_connector_hdmi_init_valid
[15:16:47] [PASSED] drm_test_connector_hdmi_init_bpc_8
[15:16:47] [PASSED] drm_test_connector_hdmi_init_bpc_10
[15:16:47] [PASSED] drm_test_connector_hdmi_init_bpc_12
[15:16:47] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[15:16:47] [PASSED] drm_test_connector_hdmi_init_bpc_null
[15:16:47] [PASSED] drm_test_connector_hdmi_init_formats_empty
[15:16:47] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[15:16:47] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[15:16:47] [PASSED] supported_formats=0x9 yuv420_allowed=1
[15:16:47] [PASSED] supported_formats=0x9 yuv420_allowed=0
[15:16:47] [PASSED] supported_formats=0x5 yuv420_allowed=1
[15:16:47] [PASSED] supported_formats=0x5 yuv420_allowed=0
[15:16:47] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[15:16:47] [PASSED] drm_test_connector_hdmi_init_null_ddc
[15:16:47] [PASSED] drm_test_connector_hdmi_init_null_product
[15:16:47] [PASSED] drm_test_connector_hdmi_init_null_vendor
[15:16:47] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[15:16:47] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[15:16:47] [PASSED] drm_test_connector_hdmi_init_product_valid
[15:16:47] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[15:16:47] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[15:16:47] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[15:16:47] ========= drm_test_connector_hdmi_init_type_valid  =========
[15:16:47] [PASSED] HDMI-A
[15:16:47] [PASSED] HDMI-B
[15:16:47] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[15:16:47] ======== drm_test_connector_hdmi_init_type_invalid  ========
[15:16:47] [PASSED] Unknown
[15:16:47] [PASSED] VGA
[15:16:47] [PASSED] DVI-I
[15:16:47] [PASSED] DVI-D
[15:16:47] [PASSED] DVI-A
[15:16:47] [PASSED] Composite
[15:16:47] [PASSED] SVIDEO
[15:16:47] [PASSED] LVDS
[15:16:47] [PASSED] Component
[15:16:47] [PASSED] DIN
[15:16:47] [PASSED] DP
[15:16:47] [PASSED] TV
[15:16:47] [PASSED] eDP
[15:16:47] [PASSED] Virtual
[15:16:47] [PASSED] DSI
[15:16:47] [PASSED] DPI
[15:16:47] [PASSED] Writeback
[15:16:47] [PASSED] SPI
[15:16:47] [PASSED] USB
[15:16:47] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[15:16:47] ============ [PASSED] drmm_connector_hdmi_init =============
[15:16:47] ============= drmm_connector_init (3 subtests) =============
[15:16:47] [PASSED] drm_test_drmm_connector_init
[15:16:47] [PASSED] drm_test_drmm_connector_init_null_ddc
[15:16:47] ========= drm_test_drmm_connector_init_type_valid  =========
[15:16:47] [PASSED] Unknown
[15:16:47] [PASSED] VGA
[15:16:47] [PASSED] DVI-I
[15:16:47] [PASSED] DVI-D
[15:16:47] [PASSED] DVI-A
[15:16:47] [PASSED] Composite
[15:16:47] [PASSED] SVIDEO
[15:16:47] [PASSED] LVDS
[15:16:47] [PASSED] Component
[15:16:47] [PASSED] DIN
[15:16:47] [PASSED] DP
[15:16:47] [PASSED] HDMI-A
[15:16:47] [PASSED] HDMI-B
[15:16:47] [PASSED] TV
[15:16:47] [PASSED] eDP
[15:16:47] [PASSED] Virtual
[15:16:47] [PASSED] DSI
[15:16:47] [PASSED] DPI
[15:16:47] [PASSED] Writeback
[15:16:47] [PASSED] SPI
[15:16:47] [PASSED] USB
[15:16:47] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[15:16:47] =============== [PASSED] drmm_connector_init ===============
[15:16:47] ========= drm_connector_dynamic_init (6 subtests) ==========
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_init
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_init_properties
[15:16:47] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[15:16:47] [PASSED] Unknown
[15:16:47] [PASSED] VGA
[15:16:47] [PASSED] DVI-I
[15:16:47] [PASSED] DVI-D
[15:16:47] [PASSED] DVI-A
[15:16:47] [PASSED] Composite
[15:16:47] [PASSED] SVIDEO
[15:16:47] [PASSED] LVDS
[15:16:47] [PASSED] Component
[15:16:47] [PASSED] DIN
[15:16:47] [PASSED] DP
[15:16:47] [PASSED] HDMI-A
[15:16:47] [PASSED] HDMI-B
[15:16:47] [PASSED] TV
[15:16:47] [PASSED] eDP
[15:16:47] [PASSED] Virtual
[15:16:47] [PASSED] DSI
[15:16:47] [PASSED] DPI
[15:16:47] [PASSED] Writeback
[15:16:47] [PASSED] SPI
[15:16:47] [PASSED] USB
[15:16:47] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[15:16:47] ======== drm_test_drm_connector_dynamic_init_name  =========
[15:16:47] [PASSED] Unknown
[15:16:47] [PASSED] VGA
[15:16:47] [PASSED] DVI-I
[15:16:47] [PASSED] DVI-D
[15:16:47] [PASSED] DVI-A
[15:16:47] [PASSED] Composite
[15:16:47] [PASSED] SVIDEO
[15:16:47] [PASSED] LVDS
[15:16:47] [PASSED] Component
[15:16:47] [PASSED] DIN
[15:16:47] [PASSED] DP
[15:16:47] [PASSED] HDMI-A
[15:16:47] [PASSED] HDMI-B
[15:16:47] [PASSED] TV
[15:16:47] [PASSED] eDP
[15:16:47] [PASSED] Virtual
[15:16:47] [PASSED] DSI
[15:16:47] [PASSED] DPI
[15:16:47] [PASSED] Writeback
[15:16:47] [PASSED] SPI
[15:16:47] [PASSED] USB
[15:16:47] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[15:16:47] =========== [PASSED] drm_connector_dynamic_init ============
[15:16:47] ==== drm_connector_dynamic_register_early (4 subtests) =====
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[15:16:47] ====== [PASSED] drm_connector_dynamic_register_early =======
[15:16:47] ======= drm_connector_dynamic_register (7 subtests) ========
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[15:16:47] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[15:16:47] ========= [PASSED] drm_connector_dynamic_register ==========
[15:16:47] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[15:16:47] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[15:16:47] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[15:16:47] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[15:16:47] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[15:16:47] ========== drm_test_get_tv_mode_from_name_valid  ===========
[15:16:47] [PASSED] NTSC
[15:16:47] [PASSED] NTSC-443
[15:16:47] [PASSED] NTSC-J
[15:16:47] [PASSED] PAL
[15:16:47] [PASSED] PAL-M
[15:16:47] [PASSED] PAL-N
[15:16:47] [PASSED] SECAM
[15:16:47] [PASSED] Mono
[15:16:47] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[15:16:47] [PASSED] drm_test_get_tv_mode_from_name_truncated
[15:16:47] ============ [PASSED] drm_get_tv_mode_from_name ============
[15:16:47] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[15:16:47] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[15:16:47] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[15:16:47] [PASSED] VIC 96
[15:16:47] [PASSED] VIC 97
[15:16:47] [PASSED] VIC 101
[15:16:47] [PASSED] VIC 102
[15:16:47] [PASSED] VIC 106
[15:16:47] [PASSED] VIC 107
[15:16:47] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[15:16:47] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[15:16:47] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[15:16:47] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[15:16:47] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[15:16:47] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[15:16:47] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[15:16:47] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[15:16:47] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[15:16:47] [PASSED] Automatic
[15:16:47] [PASSED] Full
[15:16:47] [PASSED] Limited 16:235
[15:16:47] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[15:16:47] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[15:16:47] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[15:16:47] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[15:16:47] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[15:16:47] [PASSED] RGB
[15:16:47] [PASSED] YUV 4:2:0
[15:16:47] [PASSED] YUV 4:2:2
[15:16:47] [PASSED] YUV 4:4:4
[15:16:47] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[15:16:47] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[15:16:47] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[15:16:47] ============= drm_damage_helper (21 subtests) ==============
[15:16:47] [PASSED] drm_test_damage_iter_no_damage
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_src_moved
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_not_visible
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[15:16:47] [PASSED] drm_test_damage_iter_no_damage_no_fb
[15:16:47] [PASSED] drm_test_damage_iter_simple_damage
[15:16:47] [PASSED] drm_test_damage_iter_single_damage
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_outside_src
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_src_moved
[15:16:47] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[15:16:47] [PASSED] drm_test_damage_iter_damage
[15:16:47] [PASSED] drm_test_damage_iter_damage_one_intersect
[15:16:47] [PASSED] drm_test_damage_iter_damage_one_outside
[15:16:47] [PASSED] drm_test_damage_iter_damage_src_moved
[15:16:47] [PASSED] drm_test_damage_iter_damage_not_visible
[15:16:47] ================ [PASSED] drm_damage_helper ================
[15:16:47] ============== drm_dp_mst_helper (3 subtests) ==============
[15:16:47] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[15:16:47] [PASSED] Clock 154000 BPP 30 DSC disabled
[15:16:47] [PASSED] Clock 234000 BPP 30 DSC disabled
[15:16:47] [PASSED] Clock 297000 BPP 24 DSC disabled
[15:16:47] [PASSED] Clock 332880 BPP 24 DSC enabled
[15:16:47] [PASSED] Clock 324540 BPP 24 DSC enabled
[15:16:47] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[15:16:47] ============== drm_test_dp_mst_calc_pbn_div  ===============
[15:16:47] [PASSED] Link rate 2000000 lane count 4
[15:16:47] [PASSED] Link rate 2000000 lane count 2
[15:16:47] [PASSED] Link rate 2000000 lane count 1
[15:16:47] [PASSED] Link rate 1350000 lane count 4
[15:16:47] [PASSED] Link rate 1350000 lane count 2
[15:16:47] [PASSED] Link rate 1350000 lane count 1
[15:16:47] [PASSED] Link rate 1000000 lane count 4
[15:16:47] [PASSED] Link rate 1000000 lane count 2
[15:16:47] [PASSED] Link rate 1000000 lane count 1
[15:16:47] [PASSED] Link rate 810000 lane count 4
[15:16:47] [PASSED] Link rate 810000 lane count 2
[15:16:47] [PASSED] Link rate 810000 lane count 1
[15:16:47] [PASSED] Link rate 540000 lane count 4
[15:16:47] [PASSED] Link rate 540000 lane count 2
[15:16:47] [PASSED] Link rate 540000 lane count 1
[15:16:47] [PASSED] Link rate 270000 lane count 4
[15:16:47] [PASSED] Link rate 270000 lane count 2
[15:16:47] [PASSED] Link rate 270000 lane count 1
[15:16:47] [PASSED] Link rate 162000 lane count 4
[15:16:47] [PASSED] Link rate 162000 lane count 2
[15:16:47] [PASSED] Link rate 162000 lane count 1
[15:16:47] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[15:16:47] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[15:16:47] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[15:16:47] [PASSED] DP_POWER_UP_PHY with port number
[15:16:47] [PASSED] DP_POWER_DOWN_PHY with port number
[15:16:47] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[15:16:47] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[15:16:47] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[15:16:47] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[15:16:47] [PASSED] DP_QUERY_PAYLOAD with port number
[15:16:47] [PASSED] DP_QUERY_PAYLOAD with VCPI
[15:16:47] [PASSED] DP_REMOTE_DPCD_READ with port number
[15:16:47] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[15:16:47] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[15:16:47] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[15:16:47] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[15:16:47] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[15:16:47] [PASSED] DP_REMOTE_I2C_READ with port number
[15:16:47] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[15:16:47] [PASSED] DP_REMOTE_I2C_READ with transactions array
[15:16:47] [PASSED] DP_REMOTE_I2C_WRITE with port number
[15:16:47] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[15:16:47] [PASSED] DP_REMOTE_I2C_WRITE with data array
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[15:16:47] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[15:16:47] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[15:16:47] ================ [PASSED] drm_dp_mst_helper ================
[15:16:47] ================== drm_exec (7 subtests) ===================
[15:16:47] [PASSED] sanitycheck
[15:16:47] [PASSED] test_lock
[15:16:47] [PASSED] test_lock_unlock
[15:16:47] [PASSED] test_duplicates
[15:16:47] [PASSED] test_prepare
[15:16:47] [PASSED] test_prepare_array
[15:16:47] [PASSED] test_multiple_loops
[15:16:47] ==================== [PASSED] drm_exec =====================
[15:16:47] =========== drm_format_helper_test (17 subtests) ===========
[15:16:47] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[15:16:47] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[15:16:47] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[15:16:47] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[15:16:47] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[15:16:47] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[15:16:47] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[15:16:47] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[15:16:47] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[15:16:47] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[15:16:47] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[15:16:47] ============== drm_test_fb_xrgb8888_to_mono  ===============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[15:16:47] ==================== drm_test_fb_swab  =====================
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ================ [PASSED] drm_test_fb_swab =================
[15:16:47] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[15:16:47] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[15:16:47] [PASSED] single_pixel_source_buffer
[15:16:47] [PASSED] single_pixel_clip_rectangle
[15:16:47] [PASSED] well_known_colors
[15:16:47] [PASSED] destination_pitch
[15:16:47] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[15:16:47] ================= drm_test_fb_clip_offset  =================
[15:16:47] [PASSED] pass through
[15:16:47] [PASSED] horizontal offset
[15:16:47] [PASSED] vertical offset
[15:16:47] [PASSED] horizontal and vertical offset
[15:16:47] [PASSED] horizontal offset (custom pitch)
[15:16:47] [PASSED] vertical offset (custom pitch)
[15:16:47] [PASSED] horizontal and vertical offset (custom pitch)
[15:16:47] ============= [PASSED] drm_test_fb_clip_offset =============
[15:16:47] =================== drm_test_fb_memcpy  ====================
[15:16:47] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[15:16:47] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[15:16:47] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[15:16:47] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[15:16:47] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[15:16:47] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[15:16:47] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[15:16:47] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[15:16:47] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[15:16:47] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[15:16:47] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[15:16:47] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[15:16:47] =============== [PASSED] drm_test_fb_memcpy ================
[15:16:47] ============= [PASSED] drm_format_helper_test ==============
[15:16:47] ================= drm_format (18 subtests) =================
[15:16:47] [PASSED] drm_test_format_block_width_invalid
[15:16:47] [PASSED] drm_test_format_block_width_one_plane
[15:16:47] [PASSED] drm_test_format_block_width_two_plane
[15:16:47] [PASSED] drm_test_format_block_width_three_plane
[15:16:47] [PASSED] drm_test_format_block_width_tiled
[15:16:47] [PASSED] drm_test_format_block_height_invalid
[15:16:47] [PASSED] drm_test_format_block_height_one_plane
[15:16:47] [PASSED] drm_test_format_block_height_two_plane
[15:16:47] [PASSED] drm_test_format_block_height_three_plane
[15:16:47] [PASSED] drm_test_format_block_height_tiled
[15:16:47] [PASSED] drm_test_format_min_pitch_invalid
[15:16:47] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[15:16:47] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[15:16:47] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[15:16:47] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[15:16:47] [PASSED] drm_test_format_min_pitch_two_plane
[15:16:47] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[15:16:47] [PASSED] drm_test_format_min_pitch_tiled
[15:16:47] =================== [PASSED] drm_format ====================
[15:16:47] ============== drm_framebuffer (10 subtests) ===============
[15:16:47] ========== drm_test_framebuffer_check_src_coords  ==========
[15:16:47] [PASSED] Success: source fits into fb
[15:16:47] [PASSED] Fail: overflowing fb with x-axis coordinate
[15:16:47] [PASSED] Fail: overflowing fb with y-axis coordinate
[15:16:47] [PASSED] Fail: overflowing fb with source width
[15:16:47] [PASSED] Fail: overflowing fb with source height
[15:16:47] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[15:16:47] [PASSED] drm_test_framebuffer_cleanup
[15:16:47] =============== drm_test_framebuffer_create  ===============
[15:16:47] [PASSED] ABGR8888 normal sizes
[15:16:47] [PASSED] ABGR8888 max sizes
[15:16:47] [PASSED] ABGR8888 pitch greater than min required
[15:16:47] [PASSED] ABGR8888 pitch less than min required
[15:16:47] [PASSED] ABGR8888 Invalid width
[15:16:47] [PASSED] ABGR8888 Invalid buffer handle
[15:16:47] [PASSED] No pixel format
[15:16:47] [PASSED] ABGR8888 Width 0
[15:16:47] [PASSED] ABGR8888 Height 0
[15:16:47] [PASSED] ABGR8888 Out of bound height * pitch combination
[15:16:47] [PASSED] ABGR8888 Large buffer offset
[15:16:47] [PASSED] ABGR8888 Buffer offset for inexistent plane
[15:16:47] [PASSED] ABGR8888 Invalid flag
[15:16:47] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[15:16:47] [PASSED] ABGR8888 Valid buffer modifier
[15:16:47] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[15:16:47] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] NV12 Normal sizes
[15:16:47] [PASSED] NV12 Max sizes
[15:16:47] [PASSED] NV12 Invalid pitch
[15:16:47] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[15:16:47] [PASSED] NV12 different  modifier per-plane
[15:16:47] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[15:16:47] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] NV12 Modifier for inexistent plane
[15:16:47] [PASSED] NV12 Handle for inexistent plane
[15:16:47] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[15:16:47] [PASSED] YVU420 Normal sizes
[15:16:47] [PASSED] YVU420 Max sizes
[15:16:47] [PASSED] YVU420 Invalid pitch
[15:16:47] [PASSED] YVU420 Different pitches
[15:16:47] [PASSED] YVU420 Different buffer offsets/pitches
[15:16:47] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[15:16:47] [PASSED] YVU420 Valid modifier
[15:16:47] [PASSED] YVU420 Different modifiers per plane
[15:16:47] [PASSED] YVU420 Modifier for inexistent plane
[15:16:47] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[15:16:47] [PASSED] X0L2 Normal sizes
[15:16:47] [PASSED] X0L2 Max sizes
[15:16:47] [PASSED] X0L2 Invalid pitch
[15:16:47] [PASSED] X0L2 Pitch greater than minimum required
[15:16:47] [PASSED] X0L2 Handle for inexistent plane
[15:16:47] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[15:16:47] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[15:16:47] [PASSED] X0L2 Valid modifier
[15:16:47] [PASSED] X0L2 Modifier for inexistent plane
[15:16:47] =========== [PASSED] drm_test_framebuffer_create ===========
[15:16:47] [PASSED] drm_test_framebuffer_free
[15:16:47] [PASSED] drm_test_framebuffer_init
[15:16:47] [PASSED] drm_test_framebuffer_init_bad_format
[15:16:47] [PASSED] drm_test_framebuffer_init_dev_mismatch
[15:16:47] [PASSED] drm_test_framebuffer_lookup
[15:16:47] [PASSED] drm_test_framebuffer_lookup_inexistent
[15:16:47] [PASSED] drm_test_framebuffer_modifiers_not_supported
[15:16:47] ================= [PASSED] drm_framebuffer =================
[15:16:47] ================ drm_gem_shmem (8 subtests) ================
[15:16:47] [PASSED] drm_gem_shmem_test_obj_create
[15:16:47] [PASSED] drm_gem_shmem_test_obj_create_private
[15:16:47] [PASSED] drm_gem_shmem_test_pin_pages
[15:16:47] [PASSED] drm_gem_shmem_test_vmap
[15:16:47] [PASSED] drm_gem_shmem_test_get_sg_table
[15:16:47] [PASSED] drm_gem_shmem_test_get_pages_sgt
[15:16:47] [PASSED] drm_gem_shmem_test_madvise
[15:16:47] [PASSED] drm_gem_shmem_test_purge
[15:16:47] ================== [PASSED] drm_gem_shmem ==================
[15:16:47] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[15:16:47] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[15:16:47] [PASSED] Automatic
[15:16:47] [PASSED] Full
[15:16:47] [PASSED] Limited 16:235
[15:16:47] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[15:16:47] [PASSED] drm_test_check_disable_connector
[15:16:47] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[15:16:47] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[15:16:47] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[15:16:47] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[15:16:47] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[15:16:47] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[15:16:47] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[15:16:47] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[15:16:47] [PASSED] drm_test_check_output_bpc_dvi
[15:16:47] [PASSED] drm_test_check_output_bpc_format_vic_1
[15:16:47] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[15:16:47] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[15:16:47] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[15:16:47] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[15:16:47] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[15:16:47] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[15:16:47] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[15:16:47] ============ drm_test_check_hdmi_color_format  =============
[15:16:47] [PASSED] AUTO -> RGB
[15:16:47] [PASSED] YCBCR422 -> YUV422
[15:16:47] [PASSED] YCBCR420 -> YUV420
[15:16:47] [PASSED] YCBCR444 -> YUV444
[15:16:47] [PASSED] RGB -> RGB
[15:16:47] ======== [PASSED] drm_test_check_hdmi_color_format =========
[15:16:47] ======== drm_test_check_hdmi_color_format_420_only  ========
[15:16:47] [PASSED] RGB should fail
[15:16:47] [PASSED] YUV444 should fail
[15:16:47] [PASSED] YUV422 should fail
[15:16:47] [PASSED] YUV420 should work
[15:16:47] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[15:16:47] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[15:16:47] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[15:16:47] [PASSED] drm_test_check_broadcast_rgb_value
[15:16:47] [PASSED] drm_test_check_bpc_8_value
[15:16:47] [PASSED] drm_test_check_bpc_10_value
[15:16:47] [PASSED] drm_test_check_bpc_12_value
[15:16:47] [PASSED] drm_test_check_format_value
[15:16:47] [PASSED] drm_test_check_tmds_char_value
[15:16:47] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[15:16:47] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[15:16:47] [PASSED] drm_test_check_mode_valid
[15:16:47] [PASSED] drm_test_check_mode_valid_reject
[15:16:47] [PASSED] drm_test_check_mode_valid_reject_rate
[15:16:47] [PASSED] drm_test_check_mode_valid_reject_max_clock
[15:16:47] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[15:16:47] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[15:16:47] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[15:16:47] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[15:16:47] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[15:16:47] [PASSED] drm_test_check_infoframes
[15:16:47] [PASSED] drm_test_check_reject_avi_infoframe
[15:16:47] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[15:16:47] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[15:16:47] [PASSED] drm_test_check_reject_audio_infoframe
[15:16:47] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[15:16:47] ================= drm_managed (2 subtests) =================
[15:16:47] [PASSED] drm_test_managed_release_action
[15:16:47] [PASSED] drm_test_managed_run_action
[15:16:47] =================== [PASSED] drm_managed ===================
[15:16:47] =================== drm_mm (6 subtests) ====================
[15:16:47] [PASSED] drm_test_mm_init
[15:16:47] [PASSED] drm_test_mm_debug
[15:16:47] [PASSED] drm_test_mm_align32
[15:16:47] [PASSED] drm_test_mm_align64
[15:16:47] [PASSED] drm_test_mm_lowest
[15:16:47] [PASSED] drm_test_mm_highest
[15:16:47] ===================== [PASSED] drm_mm ======================
[15:16:47] ============= drm_modes_analog_tv (5 subtests) =============
[15:16:47] [PASSED] drm_test_modes_analog_tv_mono_576i
[15:16:47] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[15:16:47] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[15:16:47] [PASSED] drm_test_modes_analog_tv_pal_576i
[15:16:47] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[15:16:47] =============== [PASSED] drm_modes_analog_tv ===============
[15:16:47] ============== drm_plane_helper (2 subtests) ===============
[15:16:47] =============== drm_test_check_plane_state  ================
[15:16:47] [PASSED] clipping_simple
[15:16:47] [PASSED] clipping_rotate_reflect
[15:16:47] [PASSED] positioning_simple
[15:16:47] [PASSED] upscaling
[15:16:47] [PASSED] downscaling
[15:16:47] [PASSED] rounding1
[15:16:47] [PASSED] rounding2
[15:16:47] [PASSED] rounding3
[15:16:47] [PASSED] rounding4
[15:16:47] =========== [PASSED] drm_test_check_plane_state ============
[15:16:47] =========== drm_test_check_invalid_plane_state  ============
[15:16:47] [PASSED] positioning_invalid
[15:16:47] [PASSED] upscaling_invalid
[15:16:47] [PASSED] downscaling_invalid
[15:16:47] ======= [PASSED] drm_test_check_invalid_plane_state ========
[15:16:47] ================ [PASSED] drm_plane_helper =================
[15:16:47] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[15:16:47] ====== drm_test_connector_helper_tv_get_modes_check  =======
[15:16:47] [PASSED] None
[15:16:47] [PASSED] PAL
[15:16:47] [PASSED] NTSC
[15:16:47] [PASSED] Both, NTSC Default
[15:16:47] [PASSED] Both, PAL Default
[15:16:47] [PASSED] Both, NTSC Default, with PAL on command-line
[15:16:47] [PASSED] Both, PAL Default, with NTSC on command-line
[15:16:47] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[15:16:47] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[15:16:47] ================== drm_rect (9 subtests) ===================
[15:16:47] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[15:16:47] [PASSED] drm_test_rect_clip_scaled_not_clipped
[15:16:47] [PASSED] drm_test_rect_clip_scaled_clipped
[15:16:47] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[15:16:47] ================= drm_test_rect_intersect  =================
[15:16:47] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[15:16:47] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[15:16:47] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[15:16:47] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[15:16:47] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[15:16:47] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[15:16:47] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[15:16:47] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[15:16:47] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[15:16:47] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[15:16:47] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[15:16:47] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[15:16:47] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[15:16:47] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[15:16:47] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[15:16:47] ============= [PASSED] drm_test_rect_intersect =============
[15:16:47] ================ drm_test_rect_calc_hscale  ================
[15:16:47] [PASSED] normal use
[15:16:47] [PASSED] out of max range
[15:16:47] [PASSED] out of min range
[15:16:47] [PASSED] zero dst
[15:16:47] [PASSED] negative src
[15:16:47] [PASSED] negative dst
[15:16:47] ============ [PASSED] drm_test_rect_calc_hscale ============
[15:16:47] ================ drm_test_rect_calc_vscale  ================
[15:16:47] [PASSED] normal use
[15:16:47] [PASSED] out of max range
[15:16:47] [PASSED] out of min range
[15:16:47] [PASSED] zero dst
[15:16:47] [PASSED] negative src
[15:16:47] [PASSED] negative dst
[15:16:47] ============ [PASSED] drm_test_rect_calc_vscale ============
[15:16:47] ================== drm_test_rect_rotate  ===================
[15:16:47] [PASSED] reflect-x
[15:16:47] [PASSED] reflect-y
[15:16:47] [PASSED] rotate-0
[15:16:47] [PASSED] rotate-90
[15:16:47] [PASSED] rotate-180
[15:16:47] [PASSED] rotate-270
[15:16:47] ============== [PASSED] drm_test_rect_rotate ===============
[15:16:47] ================ drm_test_rect_rotate_inv  =================
[15:16:47] [PASSED] reflect-x
[15:16:47] [PASSED] reflect-y
[15:16:47] [PASSED] rotate-0
[15:16:47] [PASSED] rotate-90
[15:16:47] [PASSED] rotate-180
[15:16:47] [PASSED] rotate-270
[15:16:47] ============ [PASSED] drm_test_rect_rotate_inv =============
[15:16:47] ==================== [PASSED] drm_rect =====================
[15:16:47] ============ drm_sysfb_modeset_test (1 subtest) ============
[15:16:47] ============ drm_test_sysfb_build_fourcc_list  =============
[15:16:47] [PASSED] no native formats
[15:16:47] [PASSED] XRGB8888 as native format
[15:16:47] [PASSED] remove duplicates
[15:16:47] [PASSED] convert alpha formats
[15:16:47] [PASSED] random formats
[15:16:47] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[15:16:47] ============= [PASSED] drm_sysfb_modeset_test ==============
[15:16:47] ================== drm_fixp (2 subtests) ===================
[15:16:47] [PASSED] drm_test_int2fixp
[15:16:47] [PASSED] drm_test_sm2fixp
[15:16:47] ==================== [PASSED] drm_fixp =====================
[15:16:47] ============================================================
[15:16:47] Testing complete. Ran 637 tests: passed: 637
[15:16:47] Elapsed time: 26.727s total, 1.829s configuring, 24.733s building, 0.137s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[15:16:47] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:16:49] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:16:58] Starting KUnit Kernel (1/1)...
[15:16:58] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:16:59] ================= ttm_device (5 subtests) ==================
[15:16:59] [PASSED] ttm_device_init_basic
[15:16:59] [PASSED] ttm_device_init_multiple
[15:16:59] [PASSED] ttm_device_fini_basic
[15:16:59] [PASSED] ttm_device_init_no_vma_man
[15:16:59] ================== ttm_device_init_pools  ==================
[15:16:59] [PASSED] No DMA allocations, no DMA32 required
[15:16:59] [PASSED] DMA allocations, DMA32 required
[15:16:59] [PASSED] No DMA allocations, DMA32 required
[15:16:59] [PASSED] DMA allocations, no DMA32 required
[15:16:59] ============== [PASSED] ttm_device_init_pools ==============
[15:16:59] =================== [PASSED] ttm_device ====================
[15:16:59] ================== ttm_pool (8 subtests) ===================
[15:16:59] ================== ttm_pool_alloc_basic  ===================
[15:16:59] [PASSED] One page
[15:16:59] [PASSED] More than one page
[15:16:59] [PASSED] Above the allocation limit
[15:16:59] [PASSED] One page, with coherent DMA mappings enabled
[15:16:59] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:16:59] ============== [PASSED] ttm_pool_alloc_basic ===============
[15:16:59] ============== ttm_pool_alloc_basic_dma_addr  ==============
[15:16:59] [PASSED] One page
[15:16:59] [PASSED] More than one page
[15:16:59] [PASSED] Above the allocation limit
[15:16:59] [PASSED] One page, with coherent DMA mappings enabled
[15:16:59] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:16:59] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[15:16:59] [PASSED] ttm_pool_alloc_order_caching_match
[15:16:59] [PASSED] ttm_pool_alloc_caching_mismatch
[15:16:59] [PASSED] ttm_pool_alloc_order_mismatch
[15:16:59] [PASSED] ttm_pool_free_dma_alloc
[15:16:59] [PASSED] ttm_pool_free_no_dma_alloc
[15:16:59] [PASSED] ttm_pool_fini_basic
[15:16:59] ==================== [PASSED] ttm_pool =====================
[15:16:59] ================ ttm_resource (8 subtests) =================
[15:16:59] ================= ttm_resource_init_basic  =================
[15:16:59] [PASSED] Init resource in TTM_PL_SYSTEM
[15:16:59] [PASSED] Init resource in TTM_PL_VRAM
[15:16:59] [PASSED] Init resource in a private placement
[15:16:59] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[15:16:59] ============= [PASSED] ttm_resource_init_basic =============
[15:16:59] [PASSED] ttm_resource_init_pinned
[15:16:59] [PASSED] ttm_resource_fini_basic
[15:16:59] [PASSED] ttm_resource_manager_init_basic
[15:16:59] [PASSED] ttm_resource_manager_usage_basic
[15:16:59] [PASSED] ttm_resource_manager_set_used_basic
[15:16:59] [PASSED] ttm_sys_man_alloc_basic
[15:16:59] [PASSED] ttm_sys_man_free_basic
[15:16:59] ================== [PASSED] ttm_resource ===================
[15:16:59] =================== ttm_tt (15 subtests) ===================
[15:16:59] ==================== ttm_tt_init_basic  ====================
[15:16:59] [PASSED] Page-aligned size
[15:16:59] [PASSED] Extra pages requested
[15:16:59] ================ [PASSED] ttm_tt_init_basic ================
[15:16:59] [PASSED] ttm_tt_init_misaligned
[15:16:59] [PASSED] ttm_tt_fini_basic
[15:16:59] [PASSED] ttm_tt_fini_sg
[15:16:59] [PASSED] ttm_tt_fini_shmem
[15:16:59] [PASSED] ttm_tt_create_basic
[15:16:59] [PASSED] ttm_tt_create_invalid_bo_type
[15:16:59] [PASSED] ttm_tt_create_ttm_exists
[15:16:59] [PASSED] ttm_tt_create_failed
[15:16:59] [PASSED] ttm_tt_destroy_basic
[15:16:59] [PASSED] ttm_tt_populate_null_ttm
[15:16:59] [PASSED] ttm_tt_populate_populated_ttm
[15:16:59] [PASSED] ttm_tt_unpopulate_basic
[15:16:59] [PASSED] ttm_tt_unpopulate_empty_ttm
[15:16:59] [PASSED] ttm_tt_swapin_basic
[15:16:59] ===================== [PASSED] ttm_tt ======================
[15:16:59] =================== ttm_bo (14 subtests) ===================
[15:16:59] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[15:16:59] [PASSED] Cannot be interrupted and sleeps
[15:16:59] [PASSED] Cannot be interrupted, locks straight away
[15:16:59] [PASSED] Can be interrupted, sleeps
[15:16:59] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[15:16:59] [PASSED] ttm_bo_reserve_locked_no_sleep
[15:16:59] [PASSED] ttm_bo_reserve_no_wait_ticket
[15:16:59] [PASSED] ttm_bo_reserve_double_resv
[15:16:59] [PASSED] ttm_bo_reserve_interrupted
[15:16:59] [PASSED] ttm_bo_reserve_deadlock
[15:16:59] [PASSED] ttm_bo_unreserve_basic
[15:16:59] [PASSED] ttm_bo_unreserve_pinned
[15:16:59] [PASSED] ttm_bo_unreserve_bulk
[15:16:59] [PASSED] ttm_bo_fini_basic
[15:16:59] [PASSED] ttm_bo_fini_shared_resv
[15:16:59] [PASSED] ttm_bo_pin_basic
[15:16:59] [PASSED] ttm_bo_pin_unpin_resource
[15:16:59] [PASSED] ttm_bo_multiple_pin_one_unpin
[15:16:59] ===================== [PASSED] ttm_bo ======================
[15:16:59] ============== ttm_bo_validate (22 subtests) ===============
[15:16:59] ============== ttm_bo_init_reserved_sys_man  ===============
[15:16:59] [PASSED] Buffer object for userspace
[15:16:59] [PASSED] Kernel buffer object
[15:16:59] [PASSED] Shared buffer object
[15:16:59] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[15:16:59] ============== ttm_bo_init_reserved_mock_man  ==============
[15:16:59] [PASSED] Buffer object for userspace
[15:16:59] [PASSED] Kernel buffer object
[15:16:59] [PASSED] Shared buffer object
[15:16:59] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[15:16:59] [PASSED] ttm_bo_init_reserved_resv
[15:16:59] ================== ttm_bo_validate_basic  ==================
[15:16:59] [PASSED] Buffer object for userspace
[15:16:59] [PASSED] Kernel buffer object
[15:16:59] [PASSED] Shared buffer object
[15:16:59] ============== [PASSED] ttm_bo_validate_basic ==============
[15:16:59] [PASSED] ttm_bo_validate_invalid_placement
[15:16:59] ============= ttm_bo_validate_same_placement  ==============
[15:16:59] [PASSED] System manager
[15:16:59] [PASSED] VRAM manager
[15:16:59] ========= [PASSED] ttm_bo_validate_same_placement ==========
[15:16:59] [PASSED] ttm_bo_validate_failed_alloc
[15:16:59] [PASSED] ttm_bo_validate_pinned
[15:16:59] [PASSED] ttm_bo_validate_busy_placement
[15:16:59] ================ ttm_bo_validate_multihop  =================
[15:16:59] [PASSED] Buffer object for userspace
[15:16:59] [PASSED] Kernel buffer object
[15:16:59] [PASSED] Shared buffer object
[15:16:59] ============ [PASSED] ttm_bo_validate_multihop =============
[15:16:59] ========== ttm_bo_validate_no_placement_signaled  ==========
[15:16:59] [PASSED] Buffer object in system domain, no page vector
[15:16:59] [PASSED] Buffer object in system domain with an existing page vector
[15:16:59] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[15:16:59] ======== ttm_bo_validate_no_placement_not_signaled  ========
[15:16:59] [PASSED] Buffer object for userspace
[15:16:59] [PASSED] Kernel buffer object
[15:16:59] [PASSED] Shared buffer object
[15:16:59] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[15:16:59] [PASSED] ttm_bo_validate_move_fence_signaled
[15:16:59] ========= ttm_bo_validate_move_fence_not_signaled  =========
[15:16:59] [PASSED] Waits for GPU
[15:16:59] [PASSED] Tries to lock straight away
[15:16:59] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[15:16:59] [PASSED] ttm_bo_validate_swapout
[15:16:59] [PASSED] ttm_bo_validate_happy_evict
[15:16:59] [PASSED] ttm_bo_validate_all_pinned_evict
[15:16:59] [PASSED] ttm_bo_validate_allowed_only_evict
[15:16:59] [PASSED] ttm_bo_validate_deleted_evict
[15:16:59] [PASSED] ttm_bo_validate_busy_domain_evict
[15:16:59] [PASSED] ttm_bo_validate_evict_gutting
[15:16:59] [PASSED] ttm_bo_validate_recrusive_evict
[15:16:59] ================= [PASSED] ttm_bo_validate =================
[15:16:59] ============================================================
[15:16:59] Testing complete. Ran 102 tests: passed: 102
[15:16:59] Elapsed time: 11.847s total, 1.703s configuring, 9.879s building, 0.229s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[15:16:59] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:17:01] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:17:09] Starting KUnit Kernel (1/1)...
[15:17:09] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:17:09] =============== dma-buf-fence (12 subtests) ================
[15:17:09] [PASSED] test_sanitycheck
[15:17:09] [PASSED] test_signaling
[15:17:09] [PASSED] test_add_callback
[15:17:09] [PASSED] test_late_add_callback
[15:17:09] [PASSED] test_rm_callback
[15:17:09] [PASSED] test_late_rm_callback
[15:17:09] [PASSED] test_status
[15:17:09] [PASSED] test_error
[15:17:09] [PASSED] test_wait
[15:17:09] [PASSED] test_wait_timeout
[15:17:09] [PASSED] test_stub
[15:17:09] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[15:17:09] ================== [PASSED] dma-buf-fence ==================
[15:17:09] ============ dma-buf-fence-chain (11 subtests) =============
[15:17:09] [PASSED] test_sanitycheck
[15:17:09] [PASSED] test_find_seqno
[15:17:09] [PASSED] test_find_signaled
[15:17:09] [PASSED] test_find_out_of_order
[15:17:14] [PASSED] test_find_gap
[15:17:14] [PASSED] test_find_race
[15:17:14] [PASSED] test_signal_forward
[15:17:15] [PASSED] test_signal_backward
[15:17:15] [PASSED] test_wait_forward
[15:17:15] [PASSED] test_wait_backward
[15:17:15] [PASSED] test_wait_random
[15:17:15] =============== [PASSED] dma-buf-fence-chain ===============
[15:17:15] ============ dma-buf-fence-unwrap (10 subtests) ============
[15:17:15] [PASSED] test_sanitycheck
[15:17:15] [PASSED] test_unwrap_array
[15:17:15] [PASSED] test_unwrap_chain
[15:17:15] [PASSED] test_unwrap_chain_array
[15:17:15] [PASSED] test_unwrap_merge
[15:17:15] [PASSED] test_unwrap_merge_duplicate
[15:17:15] [PASSED] test_unwrap_merge_seqno
[15:17:15] [PASSED] test_unwrap_merge_order
[15:17:15] [PASSED] test_unwrap_merge_complex
[15:17:15] [PASSED] test_unwrap_merge_complex_seqno
[15:17:15] ============== [PASSED] dma-buf-fence-unwrap ===============
[15:17:15] ================ dma-buf-resv (5 subtests) =================
[15:17:15] [PASSED] test_sanitycheck
[15:17:15] ===================== test_signaling  ======================
[15:17:15] [PASSED] kernel
[15:17:15] [PASSED] write
[15:17:15] [PASSED] read
[15:17:15] [PASSED] bookkeep
[15:17:15] ================= [PASSED] test_signaling ==================
[15:17:15] ====================== test_for_each  ======================
[15:17:15] [PASSED] kernel
[15:17:15] [PASSED] write
[15:17:15] [PASSED] read
[15:17:15] [PASSED] bookkeep
[15:17:15] ================== [PASSED] test_for_each ==================
[15:17:15] ================= test_for_each_unlocked  ==================
[15:17:15] [PASSED] kernel
[15:17:15] [PASSED] write
[15:17:15] [PASSED] read
[15:17:15] [PASSED] bookkeep
[15:17:15] ============= [PASSED] test_for_each_unlocked ==============
[15:17:15] ===================== test_get_fences  =====================
[15:17:15] [PASSED] kernel
[15:17:15] [PASSED] write
[15:17:15] [PASSED] read
[15:17:15] [PASSED] bookkeep
[15:17:15] ================= [PASSED] test_get_fences =================
[15:17:15] ================== [PASSED] dma-buf-resv ===================
[15:17:15] ============================================================
[15:17:15] Testing complete. Ran 50 tests: passed: 49, skipped: 1
[15:17:15] Elapsed time: 15.662s total, 1.747s configuring, 8.543s building, 5.354s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ Xe.CI.BAT: success for Introduce error threshold to drm_ras (rev6)
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (6 preceding siblings ...)
  2026-08-18 15:17 ` ✓ CI.KUnit: success " Patchwork
@ 2026-08-18 16:04 ` Patchwork
  2026-08-18 19:27 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-08-18 16:04 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

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

== Series Details ==

Series: Introduce error threshold to drm_ras (rev6)
URL   : https://patchwork.freedesktop.org/series/165091/
State : success

== Summary ==

CI Bug Log - changes from xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef_BAT -> xe-pw-165091v6_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (12 -> 11)
------------------------------

  Additional (1): bat-bmg-2 
  Missing    (2): bat-nvls-2 bat-nvls-1 

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

  Here are the changes found in xe-pw-165091v6_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@write:
    - bat-bmg-2:          NOTRUN -> [SKIP][1] ([Intel XE#2134]) +4 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@fbdev@write.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-bmg-2:          NOTRUN -> [SKIP][2] ([Intel XE#2233])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - bat-bmg-2:          NOTRUN -> [SKIP][3] ([Intel XE#2489] / [Intel XE#3419]) +13 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-bmg-2:          NOTRUN -> [SKIP][4] ([Intel XE#2482]) +3 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-bmg-2:          NOTRUN -> [SKIP][5] ([Intel XE#2434] / [Intel XE#2548] / [Intel XE#6314])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-bmg-2:          NOTRUN -> [SKIP][6] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@xe_exec_multi_queue@priority:
    - bat-bmg-2:          NOTRUN -> [SKIP][7] ([Intel XE#8364]) +13 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@xe_exec_multi_queue@priority.html

  * igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
    - bat-bmg-2:          NOTRUN -> [SKIP][8] ([Intel XE#2229])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-bmg-2:          NOTRUN -> [SKIP][9] ([Intel XE#1420] / [Intel XE#7590])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-bmg-2:          NOTRUN -> [SKIP][10] ([Intel XE#2245] / [Intel XE#7590])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-bmg-2:          NOTRUN -> [SKIP][11] ([Intel XE#2236] / [Intel XE#7590])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/bat-bmg-2/igt@xe_pat@pat-index-xelpg.html

  
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
  [Intel XE#2434]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2434
  [Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
  [Intel XE#2489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2489
  [Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#3419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3419
  [Intel XE#6314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6314
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364


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

  * Linux: xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef -> xe-pw-165091v6

  IGT_9059: f5a4ff79434df36db1d6b13deb37c90a6602565e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef: 275df33dcf4c5d018717867a0b29ed1d3b62c1ef
  xe-pw-165091v6: 165091v6

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/index.html

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

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

* ✗ Xe.CI.FULL: failure for Introduce error threshold to drm_ras (rev6)
  2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
                   ` (7 preceding siblings ...)
  2026-08-18 16:04 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-08-18 19:27 ` Patchwork
  8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-08-18 19:27 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

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

== Series Details ==

Series: Introduce error threshold to drm_ras (rev6)
URL   : https://patchwork.freedesktop.org/series/165091/
State : failure

== Summary ==

CI Bug Log - changes from xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef_FULL -> xe-pw-165091v6_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-165091v6_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-165091v6_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-165091v6_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_setmode@basic@pipe-c-dp-2-pipe-a-hdmi-a-3:
    - shard-bmg:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-5/igt@kms_setmode@basic@pipe-c-dp-2-pipe-a-hdmi-a-3.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-10/igt@kms_setmode@basic@pipe-c-dp-2-pipe-a-hdmi-a-3.html

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

  Here are the changes found in xe-pw-165091v6_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@hotunbind-rebind:
    - shard-bmg:          [PASS][3] -> [ABORT][4] ([Intel XE#8007]) +1 other test abort
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-10/igt@core_hotunplug@hotunbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-9/igt@core_hotunplug@hotunbind-rebind.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#1124])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#2252]) +1 other test skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc-bigjoiner:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#8265])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_dsc@dsc-fractional-bpp-with-bpc-bigjoiner.html

  * igt@kms_feature_discovery@display-4x:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#1138] / [Intel XE#7344])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@kms_feature_discovery@display-4x.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
    - shard-lnl:          [PASS][9] -> [FAIL][10] ([Intel XE#301])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [PASS][11] -> [FAIL][12] ([Intel XE#301] / [Intel XE#3149])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#4141])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#7061] / [Intel XE#7356])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2311]) +2 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-modesetfrombusy:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2313]) +5 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_frontbuffer_tracking@psrhdr-modesetfrombusy.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#6911] / [Intel XE#7378])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#2938] / [Intel XE#7376] / [Intel XE#7760])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_psr@fbc-psr-cursor-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#2234] / [Intel XE#2850])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_psr@fbc-psr-cursor-plane-onoff.html

  * igt@kms_sharpness_filter@invalid-filter-with-plane:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#6503])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@kms_sharpness_filter@invalid-filter-with-plane.html

  * igt@sriov_basic@pf-unbind-with-vf-probed:
    - shard-bmg:          NOTRUN -> [ABORT][21] ([Intel XE#8868])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@sriov_basic@pf-unbind-with-vf-probed.html

  * igt@xe_evict@evict-small-multi-queue-priority:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#8370])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@xe_evict@evict-small-multi-queue-priority.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-imm:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#8374]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-imm.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#8364]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-fd-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#8378]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-mixed-fd-rebind.html

  * igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#4733] / [Intel XE#7417])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-2/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html

  
#### Possible fixes ####

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-bmg:          [INCOMPLETE][27] ([Intel XE#6819] / [Intel XE#8174]) -> [PASS][28] +1 other test pass
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
    - shard-lnl:          [FAIL][29] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][30]
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html

  * igt@kms_setmode@basic@pipe-a-dp-2-pipe-c-hdmi-a-3:
    - shard-bmg:          [FAIL][31] ([Intel XE#8618]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-5/igt@kms_setmode@basic@pipe-a-dp-2-pipe-c-hdmi-a-3.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-10/igt@kms_setmode@basic@pipe-a-dp-2-pipe-c-hdmi-a-3.html

  * igt@kms_setmode@basic@pipe-c-hdmi-a-3:
    - shard-bmg:          [FAIL][33] -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-5/igt@kms_setmode@basic@pipe-c-hdmi-a-3.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-10/igt@kms_setmode@basic@pipe-c-hdmi-a-3.html

  * igt@xe_pmu@engine-activity-accuracy-50:
    - shard-bmg:          [FAIL][35] ([Intel XE#8555]) -> [PASS][36] +7 other tests pass
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-2/igt@xe_pmu@engine-activity-accuracy-50.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-5/igt@xe_pmu@engine-activity-accuracy-50.html

  
#### Warnings ####

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
    - shard-lnl:          [SKIP][37] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935]) -> [SKIP][38] ([Intel XE#309] / [Intel XE#7343])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-5/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-lnl:          [FAIL][39] ([Intel XE#301]) -> [FAIL][40] ([Intel XE#301] / [Intel XE#3149])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [FAIL][41] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][42] ([Intel XE#301])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][43] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][44] ([Intel XE#3544])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#6819]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6819
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
  [Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8174
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8555]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8555
  [Intel XE#8618]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8618
  [Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868


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

  * Linux: xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef -> xe-pw-165091v6

  IGT_9059: f5a4ff79434df36db1d6b13deb37c90a6602565e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5610-275df33dcf4c5d018717867a0b29ed1d3b62c1ef: 275df33dcf4c5d018717867a0b29ed1d3b62c1ef
  xe-pw-165091v6: 165091v6

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165091v6/index.html

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

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

* Re: [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks
  2026-08-18 13:52 ` [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks Raag Jadav
@ 2026-08-19 13:54   ` sashiko-bot
  0 siblings, 0 replies; 13+ messages in thread
From: sashiko-bot @ 2026-08-19 13:54 UTC (permalink / raw)
  To: Raag Jadav; +Cc: dri-devel, intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Missing bounds validation for the user-provided `threshold` value in `set_correctable_error_threshold()`, violating the DRM RAS core API contract.
--

--- Patch [4]: [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks ---
commit 07d0b2b18f83648184a377e573f78e416567ad07
Author: Raag Jadav <raag.jadav@intel.com>

drm/xe/drm_ras: Wire up error threshold callbacks

This commit wires up the get/set error threshold support in the xe driver to
drm_ras, allowing userspace to make use of this functionality via netlink.

> diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
> index 78184b6ea7d48..7f3695707611c 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras.c
> +++ b/drivers/gpu/drm/xe/xe_drm_ras.c

[ ... ]

> +static int set_correctable_error_threshold(struct drm_ras_node *ep, u32 error_id, u32 threshold)
> +{
> +	struct xe_device *xe = ep->priv;
> +	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
> +
> +	if (!info || !info[error_id].name)
> +		return -ENOENT;
> +
> +	if (!xe->info.has_sysctrl)
> +		return -EOPNOTSUPP;
> +
> +	return xe_ras_set_threshold(xe, DRM_XE_RAS_ERR_SEV_CORRECTABLE, error_id, threshold);

[Severity: Medium]
Does this code need to validate the threshold bounds before passing it to the
firmware?

The set_error_threshold documentation in include/drm/drm_ras.h explicitly
states: "Driver is responsible for error threshold bounds checking."

Passing an unvalidated user-provided threshold directly to
xe_ras_set_threshold() and the system controller firmware might cause
unexpected behavior or denial-of-service conditions if the firmware does not
robustly handle edge cases like extremely large values or a threshold of 0.

> +}

[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260818135304.497098-1-raag.jadav@intel.com?part=4

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

* Re: [PATCH v6 2/5] drm/ras: Introduce error threshold
  2026-08-18 13:52 ` [PATCH v6 2/5] drm/ras: Introduce error threshold Raag Jadav
@ 2026-08-19 13:54   ` sashiko-bot
  0 siblings, 0 replies; 13+ messages in thread
From: sashiko-bot @ 2026-08-19 13:54 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] The drm_ras_node pointer returned by xa_load() is used without RCU protection or locking, leading to a Use-After-Free if the node is concurrently unregistered.
--

--- Patch [2]: [PATCH v6 2/5] drm/ras: Introduce error threshold ---
commit 4fde8387621a92c01fa74b45df16200c6e02bd2a
Author: Raag Jadav <raag.jadav@intel.com>

drm/ras: Introduce error threshold

Add get-error-threshold and set-error-threshold command support which
allows querying/setting error threshold of the counter. Threshold in RAS
context means the number of errors the hardware is expected to accumulate
before it raises them to software.

> diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
> --- a/drivers/gpu/drm/drm_ras.c
> +++ b/drivers/gpu/drm/drm_ras.c
[ ... ]
> +static int get_node_error_threshold(u32 node_id, u32 error_id, const char **name, u32 *threshold)
> +{
> +	struct drm_ras_node *node;
> +
> +	node = xa_load(&drm_ras_xa, node_id);
> +	if (!node)
> +		return -ENOENT;
> +
> +	if (!node->query_error_threshold)
> +		return -EOPNOTSUPP;
> +
> +	if (error_id < node->error_counter_range.first || error_id > node->error_counter_range.last)
> +		return -EINVAL;
> +
> +	return node->query_error_threshold(node, error_id, name, threshold);

[Severity: High]
This is a pre-existing issue, but can this cause a use-after-free?

The drm_ras_node pointer returned by xa_load() is used without RCU protection 
or locking. If the node is concurrently unregistered and freed, for example 
during driver unbind, the node memory could be freed before we invoke 
node->query_error_threshold(). This would result in a use-after-free on the 
node pointer.

> +}
> +
> +static int set_node_error_threshold(u32 node_id, u32 error_id, u32 threshold)
> +{
> +	struct drm_ras_node *node;
> +
> +	node = xa_load(&drm_ras_xa, node_id);
> +	if (!node)
> +		return -ENOENT;
> +
> +	if (!node->set_error_threshold)
> +		return -EOPNOTSUPP;
> +
> +	if (error_id < node->error_counter_range.first || error_id > node->error_counter_range.last)
> +		return -EINVAL;
> +
> +	return node->set_error_threshold(node, error_id, threshold);

[Severity: High]
This is a pre-existing issue, but does this suffer from the same concurrent 
unregistration race? 

If the node pointer from xa_load() is freed before we call 
node->set_error_threshold(), this dereference could also access freed memory.

> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260818135304.497098-1-raag.jadav@intel.com?part=2

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

* Re: [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure
  2026-08-18 13:52 ` [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure Raag Jadav
@ 2026-08-19 13:54   ` sashiko-bot
  0 siblings, 0 replies; 13+ messages in thread
From: sashiko-bot @ 2026-08-19 13:54 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

Pre-existing issues:
- [Critical] Concurrent device teardown causes Use-After-Free and potential Control-Flow Hijack due to unprotected `drm_ras_node` access via XArray.
- [High] Uninitialized variable `ret` is returned if the node iteration loops do not execute, corrupting netlink dump responses.
--

--- Patch [1]: [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure ---
commit 967dffc71497d8878a77ecf0c72775277b0ce183
Author: Raag Jadav <raag.jadav@intel.com>

drm/ras: Cancel and free message on get counter failure
    
doit_reply_value() directly returns on get counter failure, which results
in stale sk_buff and genetlink header that aren't cleaned up. Fix it and
while at it, consolidate error handling using goto.

> diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
> index 39155fb514de3..4fa1a257b0ed1 100644
> --- a/drivers/gpu/drm/drm_ras.c
> +++ b/drivers/gpu/drm/drm_ras.c
> @@ -234,25 +234,28 @@ static int doit_reply_value(struct genl_info *info, u32 node_id,
>  
>  	hdr = genlmsg_iput(msg, info);
>  	if (!hdr) {
> -		nlmsg_free(msg);
> -		return -EMSGSIZE;
> +		ret = -EMSGSIZE;
> +		goto free_msg;
>  	}
>  
>  	ret = get_node_error_counter(node_id, error_id,
>  				     &error_name, &value);
>  	if (ret)
> -		return ret;
> +		goto cancel_msg;
>  
>  	ret = msg_reply_value(msg, error_id, error_name, value);
> -	if (ret) {
> -		genlmsg_cancel(msg, hdr);
> -		nlmsg_free(msg);
> -		return ret;
> -	}
> +	if (ret)
> +		goto cancel_msg;
>  
>  	genlmsg_end(msg, hdr);
>  
>  	return genlmsg_reply(msg, info);
> +
> +cancel_msg:
> +	genlmsg_cancel(msg, hdr);
> +free_msg:
> +	nlmsg_free(msg);
> +	return ret;
>  }

[Severity: Critical]
This is a pre-existing issue, but does get_node_error_counter() have a
use-after-free risk during concurrent device teardown?

Since drm_ras_nl_family is configured with parallel_ops = true, these handlers
run concurrently without genl_mutex. If the device is concurrently unregistered
(e.g., driver unbind or hot-unplug), drm_ras_node_unregister() removes the node
from the xarray and the driver frees its memory while the netlink handler is
still executing.

This can happen in get_node_error_counter():

drivers/gpu/drm/drm_ras.c:get_node_error_counter() {
	...
	node = xa_load(&drm_ras_xa, node_id);
	if (!node || !node->query_error_counter)
		return -ENOENT;

	if (error_id < node->error_counter_range.first ||
	...
}

Here xa_load() retrieves the node pointer locklessly, but it is dereferenced
without holding an RCU read lock or taking a reference count. Could this result
in a use-after-free and potential control-flow hijack when executing
node->query_error_counter()?

This same pattern appears in drm_ras_nl_list_nodes_dumpit():

drivers/gpu/drm/drm_ras.c:drm_ras_nl_list_nodes_dumpit() {
	...
	xa_for_each_start(&drm_ras_xa, id, node, ctx->restart) {
		hdr = genlmsg_iput(skb, info);
	...
}

And in drm_ras_nl_clear_error_counter_doit():

drivers/gpu/drm/drm_ras.c:drm_ras_nl_clear_error_counter_doit() {
	...
	node = xa_load(&drm_ras_xa, node_id);
	if (!node || !node->clear_error_counter)
		return -ENOENT;
	...
}

[Severity: High]
This is also a pre-existing issue, but can drm_ras_nl_list_nodes_dumpit()
return an uninitialized value?

drivers/gpu/drm/drm_ras.c:drm_ras_nl_list_nodes_dumpit() {
	...
	int ret;

	xa_for_each_start(&drm_ras_xa, id, node, ctx->restart) {
		...
		ret = nla_put_u32(skb, DRM_RAS_A_NODE_ATTRS_NODE_ID, node->id);
		...
	}

	if (ret == -EMSGSIZE)
		ctx->restart = id;

	return ret;
}

If the xarray is empty, or on the final recvmsg() call where ctx->restart is
past the end of the items (signifying EOF), the iteration loop will not execute.
This leaves ret uninitialized. The function then checks if (ret == -EMSGSIZE),
which reads uninitialized stack memory, and then returns ret. This could cause
the dump to fail sporadically with arbitrary error codes.

A similar issue appears in drm_ras_nl_get_error_counter_dumpit():

drivers/gpu/drm/drm_ras.c:drm_ras_nl_get_error_counter_dumpit() {
	...
	int ret;

	if (!info->attrs || GENL_REQ_ATTR_CHECK(info, DRM_RAS_A_ERROR_COUNTER_ATTRS_NODE_ID))
		return -EINVAL;
	...
	for (error_id = max(node->error_counter_range.first, ctx->restart);
	     error_id <= node->error_counter_range.last;
	     error_id++) {
		ret = get_node_error_counter(...);
		...
	}

	if (ret == -EMSGSIZE)
		ctx->restart = error_id;

	return ret;
}

If the requested error range iteration does not execute, ret remains
uninitialized here as well.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260818135304.497098-1-raag.jadav@intel.com?part=1

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

end of thread, other threads:[~2026-08-19 13:54 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-18 13:52 [PATCH v6 0/5] Introduce error threshold to drm_ras Raag Jadav
2026-08-18 13:52 ` [PATCH v6 1/5] drm/ras: Cancel and free message on get counter failure Raag Jadav
2026-08-19 13:54   ` sashiko-bot
2026-08-18 13:52 ` [PATCH v6 2/5] drm/ras: Introduce error threshold Raag Jadav
2026-08-19 13:54   ` sashiko-bot
2026-08-18 13:52 ` [PATCH v6 3/5] drm/xe/ras: Add support for " Raag Jadav
2026-08-18 13:52 ` [PATCH v6 4/5] drm/xe/drm_ras: Wire up error threshold callbacks Raag Jadav
2026-08-19 13:54   ` sashiko-bot
2026-08-18 13:52 ` [PATCH v6 5/5] drm/xe/sysctrl: Reuse xe_sysctrl_create_command() Raag Jadav
2026-08-18 15:15 ` ✗ CI.checkpatch: warning for Introduce error threshold to drm_ras (rev6) Patchwork
2026-08-18 15:17 ` ✓ CI.KUnit: success " Patchwork
2026-08-18 16:04 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-18 19:27 ` ✗ Xe.CI.FULL: failure " Patchwork

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.