All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
@ 2023-03-14 17:58 ` Alan Previn
  0 siblings, 0 replies; 11+ messages in thread
From: Alan Previn @ 2023-03-14 17:58 UTC (permalink / raw)
  To: intel-gfx
  Cc: Alan Previn, Spurio, Tamminen, dri-devel, Ceraolo, Daniele, Eero T

MESA driver is creating protected context on every driver handle
creation to query caps bits for app. So when running CI tests,
they are observing hundreds of drm_errors when enabling PXP
in .config but using SOC fusing or BIOS configuration that cannot
support PXP sessions.

The fixes tag referenced below was to resolve a related issue
where we wanted to silence error messages, but that case was due
to outdated IFWI (firmware) that definitely needed an upgrade and
was, at that point, considered a one-off case as opposed to today's
realization that default CI was enabling PXP in kernel config for
all testing.

So with this patch, let's strike a balance between issues that is
critical but are root-caused from HW/platform gaps (louder drm-warn
but just ONCE) vs other cases where it could also come from session
state machine (which cannot be a WARN_ONCE since it can be triggered
due to runtime operation events).

Let's use helpers for these so as more functions are added in future
features / HW (or as FW designers continue to bless upstreaming of
the error codes and meanings), we only need to update the helpers.

NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
apps that really needs to know that content protection failed won't
be aware of it.

v2: - Add fixes tag (Trvtko)
v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
    - Fix couple of typecasting nits (Daniele)

Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed due to fw version")
Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
---
 .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
 drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
 drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
 3 files changed, 67 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
index ae9b151b7cb7..6f6541d5e49a 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
@@ -18,6 +18,9 @@
 enum pxp_status {
 	PXP_STATUS_SUCCESS = 0x0,
 	PXP_STATUS_ERROR_API_VERSION = 0x1002,
+	PXP_STATUS_NOT_READY = 0x100e,
+	PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
+	PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
 	PXP_STATUS_OP_NOT_PERMITTED = 0x4013
 };
 
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
index 448cacb0465d..7de849cb6c47 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
@@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp *pxp)
 
 	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
 	if (ret) {
-		drm_err(&gt->i915->drm, "arb session failed to go in play\n");
+		drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
 		return ret;
 	}
 	drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
index d9d248b48093..6f89cd850251 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
@@ -19,6 +19,37 @@
 #include "intel_pxp_tee.h"
 #include "intel_pxp_types.h"
 
+static bool
+is_fw_err_platform_config(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+		return true;
+	default:
+		break;
+	}
+	return false;
+}
+
+static const char *
+fw_err_to_string(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+		return "ERR_API_VERSION";
+	case PXP_STATUS_NOT_READY:
+		return "ERR_NOT_READY";
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+		return "ERR_PLATFORM_CONFIG";
+	default:
+		break;
+	}
+	return NULL;
+}
+
 static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
 				    void *msg_in, u32 msg_in_size,
 				    void *msg_out, u32 msg_out_max_size,
@@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp,
 				       &msg_out, sizeof(msg_out),
 				       NULL);
 
-	if (ret)
-		drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
-	else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
-		drm_dbg(&i915->drm, "PXP firmware version unsupported, requested: "
-			"CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
-			msg_in.header.command_id, msg_in.header.api_version);
-	else if (msg_out.header.status != 0x0)
-		drm_warn(&i915->drm, "PXP firmware failed arb session init request ret=[0x%08x]\n",
-			 msg_out.header.status);
+	if (ret) {
+		drm_err(&i915->drm, "Failed to send tee msg init arb session, ret=[%d]\n", ret);
+	} else if (msg_out.header.status != 0) {
+		if (is_fw_err_platform_config(msg_out.header.status)) {
+			drm_WARN_ONCE(&i915->drm, true,
+				      "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n",
+				      arb_session_id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		} else {
+			drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 0x%08x:%st:\n",
+				arb_session_id, msg_out.header.status,
+				fw_err_to_string(msg_out.header.status));
+			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
+				msg_in.header.command_id, msg_in.header.api_version);
+		}
+	}
 
 	return ret;
 }
@@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct intel_pxp *pxp, u32 session_id)
 	if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
 		goto try_again;
 
-	if (ret)
-		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%d, ret=[%d]\n",
+	if (ret) {
+		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%u, ret=[%d]\n",
 			session_id, ret);
-	else if (msg_out.header.status != 0x0)
-		drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d with status 0x%08x\n",
-			 session_id, msg_out.header.status);
+	} else if (msg_out.header.status != 0) {
+		if (is_fw_err_platform_config(msg_out.header.status)) {
+			drm_WARN_ONCE(&i915->drm, true,
+				      "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n",
+				      session_id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		} else {
+			drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 0x%08x:%s:\n",
+				session_id, msg_out.header.status,
+				fw_err_to_string(msg_out.header.status));
+			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
+				msg_in.header.command_id, msg_in.header.api_version);
+		}
+	}
 }

base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b
-- 
2.39.0


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

* [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
@ 2023-03-14 17:58 ` Alan Previn
  0 siblings, 0 replies; 11+ messages in thread
From: Alan Previn @ 2023-03-14 17:58 UTC (permalink / raw)
  To: intel-gfx; +Cc: Alan Previn, Spurio, Tamminen, dri-devel, Ceraolo, Eero T

MESA driver is creating protected context on every driver handle
creation to query caps bits for app. So when running CI tests,
they are observing hundreds of drm_errors when enabling PXP
in .config but using SOC fusing or BIOS configuration that cannot
support PXP sessions.

The fixes tag referenced below was to resolve a related issue
where we wanted to silence error messages, but that case was due
to outdated IFWI (firmware) that definitely needed an upgrade and
was, at that point, considered a one-off case as opposed to today's
realization that default CI was enabling PXP in kernel config for
all testing.

So with this patch, let's strike a balance between issues that is
critical but are root-caused from HW/platform gaps (louder drm-warn
but just ONCE) vs other cases where it could also come from session
state machine (which cannot be a WARN_ONCE since it can be triggered
due to runtime operation events).

Let's use helpers for these so as more functions are added in future
features / HW (or as FW designers continue to bless upstreaming of
the error codes and meanings), we only need to update the helpers.

NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
apps that really needs to know that content protection failed won't
be aware of it.

v2: - Add fixes tag (Trvtko)
v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
    - Fix couple of typecasting nits (Daniele)

Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed due to fw version")
Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
---
 .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
 drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
 drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
 3 files changed, 67 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
index ae9b151b7cb7..6f6541d5e49a 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
@@ -18,6 +18,9 @@
 enum pxp_status {
 	PXP_STATUS_SUCCESS = 0x0,
 	PXP_STATUS_ERROR_API_VERSION = 0x1002,
+	PXP_STATUS_NOT_READY = 0x100e,
+	PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
+	PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
 	PXP_STATUS_OP_NOT_PERMITTED = 0x4013
 };
 
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
index 448cacb0465d..7de849cb6c47 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
@@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp *pxp)
 
 	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
 	if (ret) {
-		drm_err(&gt->i915->drm, "arb session failed to go in play\n");
+		drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
 		return ret;
 	}
 	drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
index d9d248b48093..6f89cd850251 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
@@ -19,6 +19,37 @@
 #include "intel_pxp_tee.h"
 #include "intel_pxp_types.h"
 
+static bool
+is_fw_err_platform_config(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+		return true;
+	default:
+		break;
+	}
+	return false;
+}
+
+static const char *
+fw_err_to_string(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+		return "ERR_API_VERSION";
+	case PXP_STATUS_NOT_READY:
+		return "ERR_NOT_READY";
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+		return "ERR_PLATFORM_CONFIG";
+	default:
+		break;
+	}
+	return NULL;
+}
+
 static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
 				    void *msg_in, u32 msg_in_size,
 				    void *msg_out, u32 msg_out_max_size,
@@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp,
 				       &msg_out, sizeof(msg_out),
 				       NULL);
 
-	if (ret)
-		drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
-	else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
-		drm_dbg(&i915->drm, "PXP firmware version unsupported, requested: "
-			"CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
-			msg_in.header.command_id, msg_in.header.api_version);
-	else if (msg_out.header.status != 0x0)
-		drm_warn(&i915->drm, "PXP firmware failed arb session init request ret=[0x%08x]\n",
-			 msg_out.header.status);
+	if (ret) {
+		drm_err(&i915->drm, "Failed to send tee msg init arb session, ret=[%d]\n", ret);
+	} else if (msg_out.header.status != 0) {
+		if (is_fw_err_platform_config(msg_out.header.status)) {
+			drm_WARN_ONCE(&i915->drm, true,
+				      "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n",
+				      arb_session_id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		} else {
+			drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 0x%08x:%st:\n",
+				arb_session_id, msg_out.header.status,
+				fw_err_to_string(msg_out.header.status));
+			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
+				msg_in.header.command_id, msg_in.header.api_version);
+		}
+	}
 
 	return ret;
 }
@@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct intel_pxp *pxp, u32 session_id)
 	if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
 		goto try_again;
 
-	if (ret)
-		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%d, ret=[%d]\n",
+	if (ret) {
+		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%u, ret=[%d]\n",
 			session_id, ret);
-	else if (msg_out.header.status != 0x0)
-		drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d with status 0x%08x\n",
-			 session_id, msg_out.header.status);
+	} else if (msg_out.header.status != 0) {
+		if (is_fw_err_platform_config(msg_out.header.status)) {
+			drm_WARN_ONCE(&i915->drm, true,
+				      "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n",
+				      session_id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		} else {
+			drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 0x%08x:%s:\n",
+				session_id, msg_out.header.status,
+				fw_err_to_string(msg_out.header.status));
+			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
+				msg_in.header.command_id, msg_in.header.api_version);
+		}
+	}
 }

base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b
-- 
2.39.0


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

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2)
  2023-03-14 17:58 ` [Intel-gfx] " Alan Previn
  (?)
@ 2023-03-14 18:37 ` Patchwork
  -1 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-03-14 18:37 UTC (permalink / raw)
  To: Alan Previn; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2)
URL   : https://patchwork.freedesktop.org/series/113680/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12857 -> Patchwork_113680v2
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (36 -> 35)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@execlists:
    - fi-bsw-nick:        [PASS][1] -> [ABORT][2] ([i915#7911] / [i915#7913])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/fi-bsw-nick/igt@i915_selftest@live@execlists.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/fi-bsw-nick/igt@i915_selftest@live@execlists.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - bat-adlp-9:         NOTRUN -> [SKIP][3] ([i915#7828])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/bat-adlp-9/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - bat-rpls-1:         NOTRUN -> [SKIP][4] ([i915#7828])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/bat-rpls-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - bat-rpls-1:         NOTRUN -> [SKIP][5] ([i915#1845])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/bat-rpls-1/igt@kms_pipe_crc_basic@suspend-read-crc.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_heartbeat:
    - fi-cfl-8109u:       [DMESG-FAIL][6] ([i915#5334]) -> [PASS][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/fi-cfl-8109u/igt@i915_selftest@live@gt_heartbeat.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/fi-cfl-8109u/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@requests:
    - bat-rpls-1:         [ABORT][8] ([i915#4983] / [i915#7694] / [i915#7911] / [i915#7981]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/bat-rpls-1/igt@i915_selftest@live@requests.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/bat-rpls-1/igt@i915_selftest@live@requests.html
    - bat-adlp-9:         [ABORT][10] ([i915#7982]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/bat-adlp-9/igt@i915_selftest@live@requests.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/bat-adlp-9/igt@i915_selftest@live@requests.html

  
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#7694]: https://gitlab.freedesktop.org/drm/intel/issues/7694
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911
  [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
  [i915#7981]: https://gitlab.freedesktop.org/drm/intel/issues/7981
  [i915#7982]: https://gitlab.freedesktop.org/drm/intel/issues/7982


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

  * Linux: CI_DRM_12857 -> Patchwork_113680v2

  CI-20190529: 20190529
  CI_DRM_12857: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7194: d22d66efd6211a22d301649b63d58c8c293e0817 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_113680v2: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux


### Linux commits

8f16d25d2855 drm/i915/pxp: limit drm-errors or warning on firmware API failures

== Logs ==

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

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

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

* Re: [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-14 17:58 ` [Intel-gfx] " Alan Previn
@ 2023-03-15  9:16   ` Eero Tamminen
  -1 siblings, 0 replies; 11+ messages in thread
From: Eero Tamminen @ 2023-03-15  9:16 UTC (permalink / raw)
  To: Alan Previn, intel-gfx; +Cc: Daniele, dri-devel

Hi,

Tested the patch with Ubuntu 22.04 desktop + Linux 6.2-rc3 (drm-tip) 
kernel, on TGL-H HW.

With it, this log spam has disappeared:
----------------------------------------------------
[ 8691.608933] i915 0000:00:02.0: [drm] PXP firmware failed arb session 
init request ret=[0x0000101f]
[ 8691.709442] i915 0000:00:02.0: [drm] *ERROR* arb session failed to go 
in play
----------------------------------------------------

There's now just a single message on boot:
----------------------------------------------------
[   11.674177] ------------[ cut here ]------------
[   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due to 
BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
[   11.674222] WARNING: CPU: 12 PID: 123 at 
drivers/gpu/drm/i915/pxp/intel_pxp_tee.c:345 
intel_pxp_tee_cmd_create_arb_session+0x19a/0x1e0 [i915]
...
[   11.674961] Call Trace:
[   11.674966]  <TASK>
[   11.674970]  ? pxp_session_work+0x123/0x1d0 [i915]
[   11.675130]  pxp_session_work+0x123/0x1d0 [i915]
[   11.675286]  process_one_work+0x1d9/0x3e0
[   11.675295]  worker_thread+0x21b/0x3d0
[   11.675301]  ? __pfx_worker_thread+0x10/0x10
[   11.675307]  kthread+0xe9/0x110
[   11.675311]  ? __pfx_kthread+0x10/0x10
[   11.675315]  ret_from_fork+0x29/0x50
[   11.675323]  </TASK>
[   11.675325] ---[ end trace 0000000000000000 ]---
----------------------------------------------------


	- Eero

On 14.3.2023 19.58, Alan Previn wrote:
> MESA driver is creating protected context on every driver handle
> creation to query caps bits for app. So when running CI tests,
> they are observing hundreds of drm_errors when enabling PXP
> in .config but using SOC fusing or BIOS configuration that cannot
> support PXP sessions.
> 
> The fixes tag referenced below was to resolve a related issue
> where we wanted to silence error messages, but that case was due
> to outdated IFWI (firmware) that definitely needed an upgrade and
> was, at that point, considered a one-off case as opposed to today's
> realization that default CI was enabling PXP in kernel config for
> all testing.
> 
> So with this patch, let's strike a balance between issues that is
> critical but are root-caused from HW/platform gaps (louder drm-warn
> but just ONCE) vs other cases where it could also come from session
> state machine (which cannot be a WARN_ONCE since it can be triggered
> due to runtime operation events).
> 
> Let's use helpers for these so as more functions are added in future
> features / HW (or as FW designers continue to bless upstreaming of
> the error codes and meanings), we only need to update the helpers.
> 
> NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
> apps that really needs to know that content protection failed won't
> be aware of it.
> 
> v2: - Add fixes tag (Trvtko)
> v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
>      - Fix couple of typecasting nits (Daniele)
> 
> Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed due to fw version")
> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
> ---
>   .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
>   drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
>   drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
>   3 files changed, 67 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> index ae9b151b7cb7..6f6541d5e49a 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> @@ -18,6 +18,9 @@
>   enum pxp_status {
>   	PXP_STATUS_SUCCESS = 0x0,
>   	PXP_STATUS_ERROR_API_VERSION = 0x1002,
> +	PXP_STATUS_NOT_READY = 0x100e,
> +	PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
> +	PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
>   	PXP_STATUS_OP_NOT_PERMITTED = 0x4013
>   };
>   
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> index 448cacb0465d..7de849cb6c47 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> @@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp *pxp)
>   
>   	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
>   	if (ret) {
> -		drm_err(&gt->i915->drm, "arb session failed to go in play\n");
> +		drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
>   		return ret;
>   	}
>   	drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> index d9d248b48093..6f89cd850251 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> @@ -19,6 +19,37 @@
>   #include "intel_pxp_tee.h"
>   #include "intel_pxp_types.h"
>   
> +static bool
> +is_fw_err_platform_config(u32 type)
> +{
> +	switch (type) {
> +	case PXP_STATUS_ERROR_API_VERSION:
> +	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
> +	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
> +		return true;
> +	default:
> +		break;
> +	}
> +	return false;
> +}
> +
> +static const char *
> +fw_err_to_string(u32 type)
> +{
> +	switch (type) {
> +	case PXP_STATUS_ERROR_API_VERSION:
> +		return "ERR_API_VERSION";
> +	case PXP_STATUS_NOT_READY:
> +		return "ERR_NOT_READY";
> +	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
> +	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
> +		return "ERR_PLATFORM_CONFIG";
> +	default:
> +		break;
> +	}
> +	return NULL;
> +}
> +
>   static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
>   				    void *msg_in, u32 msg_in_size,
>   				    void *msg_out, u32 msg_out_max_size,
> @@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp,
>   				       &msg_out, sizeof(msg_out),
>   				       NULL);
>   
> -	if (ret)
> -		drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
> -	else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
> -		drm_dbg(&i915->drm, "PXP firmware version unsupported, requested: "
> -			"CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
> -			msg_in.header.command_id, msg_in.header.api_version);
> -	else if (msg_out.header.status != 0x0)
> -		drm_warn(&i915->drm, "PXP firmware failed arb session init request ret=[0x%08x]\n",
> -			 msg_out.header.status);
> +	if (ret) {
> +		drm_err(&i915->drm, "Failed to send tee msg init arb session, ret=[%d]\n", ret);
> +	} else if (msg_out.header.status != 0) {
> +		if (is_fw_err_platform_config(msg_out.header.status)) {
> +			drm_WARN_ONCE(&i915->drm, true,
> +				      "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n",
> +				      arb_session_id, msg_out.header.status,
> +				      fw_err_to_string(msg_out.header.status));
> +		} else {
> +			drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 0x%08x:%st:\n",
> +				arb_session_id, msg_out.header.status,
> +				fw_err_to_string(msg_out.header.status));
> +			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
> +				msg_in.header.command_id, msg_in.header.api_version);
> +		}
> +	}
>   
>   	return ret;
>   }
> @@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct intel_pxp *pxp, u32 session_id)
>   	if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
>   		goto try_again;
>   
> -	if (ret)
> -		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%d, ret=[%d]\n",
> +	if (ret) {
> +		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%u, ret=[%d]\n",
>   			session_id, ret);
> -	else if (msg_out.header.status != 0x0)
> -		drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d with status 0x%08x\n",
> -			 session_id, msg_out.header.status);
> +	} else if (msg_out.header.status != 0) {
> +		if (is_fw_err_platform_config(msg_out.header.status)) {
> +			drm_WARN_ONCE(&i915->drm, true,
> +				      "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n",
> +				      session_id, msg_out.header.status,
> +				      fw_err_to_string(msg_out.header.status));
> +		} else {
> +			drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 0x%08x:%s:\n",
> +				session_id, msg_out.header.status,
> +				fw_err_to_string(msg_out.header.status));
> +			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
> +				msg_in.header.command_id, msg_in.header.api_version);
> +		}
> +	}
>   }
> 
> base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b

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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
@ 2023-03-15  9:16   ` Eero Tamminen
  0 siblings, 0 replies; 11+ messages in thread
From: Eero Tamminen @ 2023-03-15  9:16 UTC (permalink / raw)
  To: Alan Previn, intel-gfx; +Cc: dri-devel

Hi,

Tested the patch with Ubuntu 22.04 desktop + Linux 6.2-rc3 (drm-tip) 
kernel, on TGL-H HW.

With it, this log spam has disappeared:
----------------------------------------------------
[ 8691.608933] i915 0000:00:02.0: [drm] PXP firmware failed arb session 
init request ret=[0x0000101f]
[ 8691.709442] i915 0000:00:02.0: [drm] *ERROR* arb session failed to go 
in play
----------------------------------------------------

There's now just a single message on boot:
----------------------------------------------------
[   11.674177] ------------[ cut here ]------------
[   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due to 
BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
[   11.674222] WARNING: CPU: 12 PID: 123 at 
drivers/gpu/drm/i915/pxp/intel_pxp_tee.c:345 
intel_pxp_tee_cmd_create_arb_session+0x19a/0x1e0 [i915]
...
[   11.674961] Call Trace:
[   11.674966]  <TASK>
[   11.674970]  ? pxp_session_work+0x123/0x1d0 [i915]
[   11.675130]  pxp_session_work+0x123/0x1d0 [i915]
[   11.675286]  process_one_work+0x1d9/0x3e0
[   11.675295]  worker_thread+0x21b/0x3d0
[   11.675301]  ? __pfx_worker_thread+0x10/0x10
[   11.675307]  kthread+0xe9/0x110
[   11.675311]  ? __pfx_kthread+0x10/0x10
[   11.675315]  ret_from_fork+0x29/0x50
[   11.675323]  </TASK>
[   11.675325] ---[ end trace 0000000000000000 ]---
----------------------------------------------------


	- Eero

On 14.3.2023 19.58, Alan Previn wrote:
> MESA driver is creating protected context on every driver handle
> creation to query caps bits for app. So when running CI tests,
> they are observing hundreds of drm_errors when enabling PXP
> in .config but using SOC fusing or BIOS configuration that cannot
> support PXP sessions.
> 
> The fixes tag referenced below was to resolve a related issue
> where we wanted to silence error messages, but that case was due
> to outdated IFWI (firmware) that definitely needed an upgrade and
> was, at that point, considered a one-off case as opposed to today's
> realization that default CI was enabling PXP in kernel config for
> all testing.
> 
> So with this patch, let's strike a balance between issues that is
> critical but are root-caused from HW/platform gaps (louder drm-warn
> but just ONCE) vs other cases where it could also come from session
> state machine (which cannot be a WARN_ONCE since it can be triggered
> due to runtime operation events).
> 
> Let's use helpers for these so as more functions are added in future
> features / HW (or as FW designers continue to bless upstreaming of
> the error codes and meanings), we only need to update the helpers.
> 
> NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
> apps that really needs to know that content protection failed won't
> be aware of it.
> 
> v2: - Add fixes tag (Trvtko)
> v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
>      - Fix couple of typecasting nits (Daniele)
> 
> Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed due to fw version")
> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
> ---
>   .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
>   drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
>   drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
>   3 files changed, 67 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> index ae9b151b7cb7..6f6541d5e49a 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
> @@ -18,6 +18,9 @@
>   enum pxp_status {
>   	PXP_STATUS_SUCCESS = 0x0,
>   	PXP_STATUS_ERROR_API_VERSION = 0x1002,
> +	PXP_STATUS_NOT_READY = 0x100e,
> +	PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
> +	PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
>   	PXP_STATUS_OP_NOT_PERMITTED = 0x4013
>   };
>   
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> index 448cacb0465d..7de849cb6c47 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
> @@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp *pxp)
>   
>   	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
>   	if (ret) {
> -		drm_err(&gt->i915->drm, "arb session failed to go in play\n");
> +		drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
>   		return ret;
>   	}
>   	drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> index d9d248b48093..6f89cd850251 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> @@ -19,6 +19,37 @@
>   #include "intel_pxp_tee.h"
>   #include "intel_pxp_types.h"
>   
> +static bool
> +is_fw_err_platform_config(u32 type)
> +{
> +	switch (type) {
> +	case PXP_STATUS_ERROR_API_VERSION:
> +	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
> +	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
> +		return true;
> +	default:
> +		break;
> +	}
> +	return false;
> +}
> +
> +static const char *
> +fw_err_to_string(u32 type)
> +{
> +	switch (type) {
> +	case PXP_STATUS_ERROR_API_VERSION:
> +		return "ERR_API_VERSION";
> +	case PXP_STATUS_NOT_READY:
> +		return "ERR_NOT_READY";
> +	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
> +	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
> +		return "ERR_PLATFORM_CONFIG";
> +	default:
> +		break;
> +	}
> +	return NULL;
> +}
> +
>   static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
>   				    void *msg_in, u32 msg_in_size,
>   				    void *msg_out, u32 msg_out_max_size,
> @@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp,
>   				       &msg_out, sizeof(msg_out),
>   				       NULL);
>   
> -	if (ret)
> -		drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
> -	else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
> -		drm_dbg(&i915->drm, "PXP firmware version unsupported, requested: "
> -			"CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
> -			msg_in.header.command_id, msg_in.header.api_version);
> -	else if (msg_out.header.status != 0x0)
> -		drm_warn(&i915->drm, "PXP firmware failed arb session init request ret=[0x%08x]\n",
> -			 msg_out.header.status);
> +	if (ret) {
> +		drm_err(&i915->drm, "Failed to send tee msg init arb session, ret=[%d]\n", ret);
> +	} else if (msg_out.header.status != 0) {
> +		if (is_fw_err_platform_config(msg_out.header.status)) {
> +			drm_WARN_ONCE(&i915->drm, true,
> +				      "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n",
> +				      arb_session_id, msg_out.header.status,
> +				      fw_err_to_string(msg_out.header.status));
> +		} else {
> +			drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 0x%08x:%st:\n",
> +				arb_session_id, msg_out.header.status,
> +				fw_err_to_string(msg_out.header.status));
> +			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
> +				msg_in.header.command_id, msg_in.header.api_version);
> +		}
> +	}
>   
>   	return ret;
>   }
> @@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct intel_pxp *pxp, u32 session_id)
>   	if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
>   		goto try_again;
>   
> -	if (ret)
> -		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%d, ret=[%d]\n",
> +	if (ret) {
> +		drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%u, ret=[%d]\n",
>   			session_id, ret);
> -	else if (msg_out.header.status != 0x0)
> -		drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d with status 0x%08x\n",
> -			 session_id, msg_out.header.status);
> +	} else if (msg_out.header.status != 0) {
> +		if (is_fw_err_platform_config(msg_out.header.status)) {
> +			drm_WARN_ONCE(&i915->drm, true,
> +				      "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n",
> +				      session_id, msg_out.header.status,
> +				      fw_err_to_string(msg_out.header.status));
> +		} else {
> +			drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 0x%08x:%s:\n",
> +				session_id, msg_out.header.status,
> +				fw_err_to_string(msg_out.header.status));
> +			drm_dbg(&i915->drm, "     cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n",
> +				msg_in.header.command_id, msg_in.header.api_version);
> +		}
> +	}
>   }
> 
> base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b

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

* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2)
  2023-03-14 17:58 ` [Intel-gfx] " Alan Previn
                   ` (2 preceding siblings ...)
  (?)
@ 2023-03-15 21:23 ` Patchwork
  -1 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-03-15 21:23 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2)
URL   : https://patchwork.freedesktop.org/series/113680/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12857_full -> Patchwork_113680v2_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (8 -> 8)
------------------------------

  Additional (1): shard-rkl0 
  Missing    (1): shard-tglu0 

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

  Here are the unknown changes that may have been introduced in Patchwork_113680v2_full:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_suspend@basic-s2idle-without-i915:
    - {shard-dg1}:        [PASS][1] -> [DMESG-WARN][2] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-dg1-12/igt@i915_suspend@basic-s2idle-without-i915.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-dg1-14/igt@i915_suspend@basic-s2idle-without-i915.html

  * igt@i915_suspend@basic-s3-without-i915:
    - {shard-tglu}:       NOTRUN -> [INCOMPLETE][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-2/igt@i915_suspend@basic-s3-without-i915.html

  * {igt@kms_plane_scaling@planes-downscale-factor-0-75-unity-scaling}:
    - {shard-tglu}:       NOTRUN -> [SKIP][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-10/igt@kms_plane_scaling@planes-downscale-factor-0-75-unity-scaling.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [PASS][5] -> [ABORT][6] ([i915#5566])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl7/igt@gen9_exec_parse@allowed-single.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-apl3/igt@gen9_exec_parse@allowed-single.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          [PASS][7] -> [FAIL][8] ([i915#2346])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - {shard-rkl}:        [FAIL][9] ([i915#4778]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@device_reset@unbind-reset-rebind.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-4/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@idle@rcs0:
    - {shard-rkl}:        [FAIL][11] ([i915#7742]) -> [PASS][12] +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@drm_fdinfo@idle@rcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-3/igt@drm_fdinfo@idle@rcs0.html

  * igt@drm_read@short-buffer-nonblock:
    - {shard-rkl}:        [SKIP][13] ([i915#4098]) -> [PASS][14] +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@drm_read@short-buffer-nonblock.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@drm_read@short-buffer-nonblock.html

  * igt@fbdev@unaligned-read:
    - {shard-rkl}:        [SKIP][15] ([i915#2582]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@fbdev@unaligned-read.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@fbdev@unaligned-read.html

  * igt@gem_bad_reloc@negative-reloc:
    - {shard-rkl}:        [SKIP][17] ([i915#3281]) -> [PASS][18] +8 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-6/igt@gem_bad_reloc@negative-reloc.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-5/igt@gem_bad_reloc@negative-reloc.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - {shard-rkl}:        [FAIL][19] ([i915#6268]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@gem_ctx_exec@basic-nohangcheck.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-5/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_persistence@engines-hang@bcs0:
    - {shard-rkl}:        [SKIP][21] ([i915#6252]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@gem_ctx_persistence@engines-hang@bcs0.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-4/igt@gem_ctx_persistence@engines-hang@bcs0.html

  * igt@gem_exec_fair@basic-deadline:
    - {shard-rkl}:        [FAIL][23] ([i915#2846]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - {shard-rkl}:        [FAIL][25] ([i915#2842]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-3/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-none@rcs0:
    - shard-glk:          [FAIL][27] ([i915#2842]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk8/igt@gem_exec_fair@basic-none@rcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-glk1/igt@gem_exec_fair@basic-none@rcs0.html

  * igt@gem_exec_suspend@basic-s4-devices@lmem0:
    - {shard-dg1}:        [ABORT][29] ([i915#7975]) -> [PASS][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-dg1-14/igt@gem_exec_suspend@basic-s4-devices@lmem0.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-dg1-17/igt@gem_exec_suspend@basic-s4-devices@lmem0.html

  * igt@gem_mmap_wc@set-cache-level:
    - {shard-tglu}:       [SKIP][31] ([i915#1850]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@gem_mmap_wc@set-cache-level.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-8/igt@gem_mmap_wc@set-cache-level.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
    - {shard-rkl}:        [SKIP][33] ([i915#3282]) -> [PASS][34] +3 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html

  * igt@gen9_exec_parse@bb-start-param:
    - {shard-rkl}:        [SKIP][35] ([i915#2527]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-6/igt@gen9_exec_parse@bb-start-param.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-5/igt@gen9_exec_parse@bb-start-param.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
    - {shard-tglu}:       [FAIL][37] ([i915#3825]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-5/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-1/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html

  * igt@i915_pm_rpm@fences:
    - {shard-rkl}:        [SKIP][39] ([i915#1849]) -> [PASS][40] +3 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@i915_pm_rpm@fences.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@i915_pm_rpm@fences.html

  * igt@i915_pm_rpm@modeset-lpsp:
    - {shard-tglu}:       [SKIP][41] ([i915#1397]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@i915_pm_rpm@modeset-lpsp.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-3/igt@i915_pm_rpm@modeset-lpsp.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
    - {shard-rkl}:        [SKIP][43] ([i915#1397]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@i915_selftest@live@dmabuf:
    - shard-apl:          [DMESG-FAIL][45] ([i915#7562]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl2/igt@i915_selftest@live@dmabuf.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-apl1/igt@i915_selftest@live@dmabuf.html

  * igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs:
    - {shard-tglu}:       [SKIP][47] ([i915#1845] / [i915#7651]) -> [PASS][48] +38 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-8/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs.html

  * igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions:
    - {shard-rkl}:        [SKIP][49] ([i915#1845] / [i915#4098]) -> [PASS][50] +22 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-apl:          [FAIL][51] ([i915#4767]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl6/igt@kms_fbcon_fbt@fbc-suspend.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-apl6/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-rkl}:        [SKIP][53] ([fdo#110189] / [i915#3955]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_fbcon_fbt@psr-suspend.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_fence_pin_leak:
    - {shard-tglu}:       [SKIP][55] ([fdo#109274] / [i915#1845]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_fence_pin_leak.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-8/igt@kms_fence_pin_leak.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-linear:
    - {shard-tglu}:       [SKIP][57] ([i915#1849]) -> [PASS][58] +6 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-8/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html

  * igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
    - {shard-rkl}:        [SKIP][59] ([i915#1849] / [i915#4098]) -> [PASS][60] +17 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html

  * {igt@kms_plane@invalid-pixel-format-settings}:
    - {shard-rkl}:        [SKIP][61] ([i915#8152]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_plane@invalid-pixel-format-settings.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_plane@invalid-pixel-format-settings.html

  * igt@kms_psr@cursor_plane_onoff:
    - {shard-rkl}:        [SKIP][63] ([i915#1072]) -> [PASS][64] +1 similar issue
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_psr@cursor_plane_onoff.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_psr@cursor_plane_onoff.html

  * igt@kms_rotation_crc@cursor-rotation-180:
    - {shard-tglu}:       [SKIP][65] ([i915#1845]) -> [PASS][66] +3 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_rotation_crc@cursor-rotation-180.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-7/igt@kms_rotation_crc@cursor-rotation-180.html

  * igt@kms_universal_plane@cursor-fb-leak-pipe-a:
    - {shard-rkl}:        [SKIP][67] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html

  * igt@kms_universal_plane@universal-plane-pageflip-windowed-pipe-b:
    - {shard-rkl}:        [SKIP][69] ([i915#4070] / [i915#4098]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_universal_plane@universal-plane-pageflip-windowed-pipe-b.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-6/igt@kms_universal_plane@universal-plane-pageflip-windowed-pipe-b.html

  * igt@kms_universal_plane@universal-plane-pipe-d-functional:
    - {shard-tglu}:       [SKIP][71] ([fdo#109274]) -> [PASS][72] +2 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_universal_plane@universal-plane-pipe-d-functional.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-tglu-7/igt@kms_universal_plane@universal-plane-pipe-d-functional.html

  * igt@prime_self_import@basic-with_one_bo:
    - {shard-rkl}:        [SKIP][73] ([fdo#109315]) -> [PASS][74] +3 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@prime_self_import@basic-with_one_bo.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-4/igt@prime_self_import@basic-with_one_bo.html

  * igt@prime_vgem@basic-read:
    - {shard-rkl}:        [SKIP][75] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][76]
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@prime_vgem@basic-read.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-5/igt@prime_vgem@basic-read.html

  * igt@syncobj_timeline@wait-all-for-submit-delayed-submit:
    - {shard-rkl}:        [SKIP][77] ([i915#2575]) -> [PASS][78] +2 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@syncobj_timeline@wait-all-for-submit-delayed-submit.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113680v2/shard-rkl-4/igt@syncobj_timeline@wait-all-for-submit-delayed-submit.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1850]: https://gitlab.freedesktop.org/drm/intel/issues/1850
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2532]: https://gitlab.freedesktop.org/drm/intel/issues/2532
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3547]: https://gitlab.freedesktop.org/drm/intel/issues/3547
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4258]: https://gitlab.freedesktop.org/drm/intel/issues/4258
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4778]: https://gitlab.freedesktop.org/drm/intel/issues/4778
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6259]: https://gitlab.freedesktop.org/drm/intel/issues/6259
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037
  [i915#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128
  [i915#7294]: https://gitlab.freedesktop.org/drm/intel/issues/7294
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7562]: https://gitlab.freedesktop.org/drm/intel/issues/7562
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949
  [i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152
  [i915#8154]: https://gitlab.freedesktop.org/drm/intel/issues/8154
  [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8273]: https://gitlab.freedesktop.org/drm/intel/issues/8273
  [i915#8282]: https://gitlab.freedesktop.org/drm/intel/issues/8282


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

  * Linux: CI_DRM_12857 -> Patchwork_113680v2

  CI-20190529: 20190529
  CI_DRM_12857: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7194: d22d66efd6211a22d301649b63d58c8c293e0817 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_113680v2: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-15  9:16   ` [Intel-gfx] " Eero Tamminen
  (?)
@ 2023-03-16  8:50   ` Tvrtko Ursulin
  2023-03-17 11:37     ` Eero Tamminen
  -1 siblings, 1 reply; 11+ messages in thread
From: Tvrtko Ursulin @ 2023-03-16  8:50 UTC (permalink / raw)
  To: Eero Tamminen, Alan Previn, intel-gfx; +Cc: dri-devel


On 15/03/2023 09:16, Eero Tamminen wrote:
> Hi,
> 
> Tested the patch with Ubuntu 22.04 desktop + Linux 6.2-rc3 (drm-tip) 
> kernel, on TGL-H HW.
> 
> With it, this log spam has disappeared:
> ----------------------------------------------------
> [ 8691.608933] i915 0000:00:02.0: [drm] PXP firmware failed arb session 
> init request ret=[0x0000101f]
> [ 8691.709442] i915 0000:00:02.0: [drm] *ERROR* arb session failed to go 
> in play
> ----------------------------------------------------
> 
> There's now just a single message on boot:
> ----------------------------------------------------
> [   11.674177] ------------[ cut here ]------------
> [   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due to 
> BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
> [   11.674222] WARNING: CPU: 12 PID: 123 at 
> drivers/gpu/drm/i915/pxp/intel_pxp_tee.c:345 
> intel_pxp_tee_cmd_create_arb_session+0x19a/0x1e0 [i915]
> ...
> [   11.674961] Call Trace:
> [   11.674966]  <TASK>
> [   11.674970]  ? pxp_session_work+0x123/0x1d0 [i915]
> [   11.675130]  pxp_session_work+0x123/0x1d0 [i915]
> [   11.675286]  process_one_work+0x1d9/0x3e0
> [   11.675295]  worker_thread+0x21b/0x3d0
> [   11.675301]  ? __pfx_worker_thread+0x10/0x10
> [   11.675307]  kthread+0xe9/0x110
> [   11.675311]  ? __pfx_kthread+0x10/0x10
> [   11.675315]  ret_from_fork+0x29/0x50
> [   11.675323]  </TASK>
> [   11.675325] ---[ end trace 0000000000000000 ]---
> ----------------------------------------------------

Alan - is this expected during normal operation on some parts, or it's 
something truly unexpected/unexplained? If the former then I think it 
would be good to downgrade away from drm_WARN so it is less scary.

Commit message talks about "HW/platform gaps" - if it is like a missing 
BIOS support or so then I think WARN_ON is too much.

Regards,

Tvrtko

> 
> 
>      - Eero
> 
> On 14.3.2023 19.58, Alan Previn wrote:
>> MESA driver is creating protected context on every driver handle
>> creation to query caps bits for app. So when running CI tests,
>> they are observing hundreds of drm_errors when enabling PXP
>> in .config but using SOC fusing or BIOS configuration that cannot
>> support PXP sessions.
>>
>> The fixes tag referenced below was to resolve a related issue
>> where we wanted to silence error messages, but that case was due
>> to outdated IFWI (firmware) that definitely needed an upgrade and
>> was, at that point, considered a one-off case as opposed to today's
>> realization that default CI was enabling PXP in kernel config for
>> all testing.
>>
>> So with this patch, let's strike a balance between issues that is
>> critical but are root-caused from HW/platform gaps (louder drm-warn
>> but just ONCE) vs other cases where it could also come from session
>> state machine (which cannot be a WARN_ONCE since it can be triggered
>> due to runtime operation events).
>>
>> Let's use helpers for these so as more functions are added in future
>> features / HW (or as FW designers continue to bless upstreaming of
>> the error codes and meanings), we only need to update the helpers.
>>
>> NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
>> apps that really needs to know that content protection failed won't
>> be aware of it.
>>
>> v2: - Add fixes tag (Trvtko)
>> v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
>>      - Fix couple of typecasting nits (Daniele)
>>
>> Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed 
>> due to fw version")
>> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
>> ---
>>   .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
>>   drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
>>   drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
>>   3 files changed, 67 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h 
>> b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>> index ae9b151b7cb7..6f6541d5e49a 100644
>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>> @@ -18,6 +18,9 @@
>>   enum pxp_status {
>>       PXP_STATUS_SUCCESS = 0x0,
>>       PXP_STATUS_ERROR_API_VERSION = 0x1002,
>> +    PXP_STATUS_NOT_READY = 0x100e,
>> +    PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
>> +    PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
>>       PXP_STATUS_OP_NOT_PERMITTED = 0x4013
>>   };
>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c 
>> b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>> index 448cacb0465d..7de849cb6c47 100644
>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>> @@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp 
>> *pxp)
>>       ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
>>       if (ret) {
>> -        drm_err(&gt->i915->drm, "arb session failed to go in play\n");
>> +        drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
>>           return ret;
>>       }
>>       drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c 
>> b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>> index d9d248b48093..6f89cd850251 100644
>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>> @@ -19,6 +19,37 @@
>>   #include "intel_pxp_tee.h"
>>   #include "intel_pxp_types.h"
>> +static bool
>> +is_fw_err_platform_config(u32 type)
>> +{
>> +    switch (type) {
>> +    case PXP_STATUS_ERROR_API_VERSION:
>> +    case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
>> +    case PXP_STATUS_PLATFCONFIG_KF1_BAD:
>> +        return true;
>> +    default:
>> +        break;
>> +    }
>> +    return false;
>> +}
>> +
>> +static const char *
>> +fw_err_to_string(u32 type)
>> +{
>> +    switch (type) {
>> +    case PXP_STATUS_ERROR_API_VERSION:
>> +        return "ERR_API_VERSION";
>> +    case PXP_STATUS_NOT_READY:
>> +        return "ERR_NOT_READY";
>> +    case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
>> +    case PXP_STATUS_PLATFCONFIG_KF1_BAD:
>> +        return "ERR_PLATFORM_CONFIG";
>> +    default:
>> +        break;
>> +    }
>> +    return NULL;
>> +}
>> +
>>   static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
>>                       void *msg_in, u32 msg_in_size,
>>                       void *msg_out, u32 msg_out_max_size,
>> @@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct 
>> intel_pxp *pxp,
>>                          &msg_out, sizeof(msg_out),
>>                          NULL);
>> -    if (ret)
>> -        drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
>> -    else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
>> -        drm_dbg(&i915->drm, "PXP firmware version unsupported, 
>> requested: "
>> -            "CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
>> -            msg_in.header.command_id, msg_in.header.api_version);
>> -    else if (msg_out.header.status != 0x0)
>> -        drm_warn(&i915->drm, "PXP firmware failed arb session init 
>> request ret=[0x%08x]\n",
>> -             msg_out.header.status);
>> +    if (ret) {
>> +        drm_err(&i915->drm, "Failed to send tee msg init arb session, 
>> ret=[%d]\n", ret);
>> +    } else if (msg_out.header.status != 0) {
>> +        if (is_fw_err_platform_config(msg_out.header.status)) {
>> +            drm_WARN_ONCE(&i915->drm, true,
>> +                      "PXP init-arb-session-%d failed due to 
>> BIOS/SOC:0x%08x:%s\n",
>> +                      arb_session_id, msg_out.header.status,
>> +                      fw_err_to_string(msg_out.header.status));
>> +        } else {
>> +            drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 
>> 0x%08x:%st:\n",
>> +                arb_session_id, msg_out.header.status,
>> +                fw_err_to_string(msg_out.header.status));
>> +            drm_dbg(&i915->drm, "     cmd-detail: 
>> ID=[0x%08x],API-Ver-[0x%08x]\n",
>> +                msg_in.header.command_id, msg_in.header.api_version);
>> +        }
>> +    }
>>       return ret;
>>   }
>> @@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct 
>> intel_pxp *pxp, u32 session_id)
>>       if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
>>           goto try_again;
>> -    if (ret)
>> -        drm_err(&i915->drm, "Failed to send tee msg for 
>> inv-stream-key-%d, ret=[%d]\n",
>> +    if (ret) {
>> +        drm_err(&i915->drm, "Failed to send tee msg for 
>> inv-stream-key-%u, ret=[%d]\n",
>>               session_id, ret);
>> -    else if (msg_out.header.status != 0x0)
>> -        drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d 
>> with status 0x%08x\n",
>> -             session_id, msg_out.header.status);
>> +    } else if (msg_out.header.status != 0) {
>> +        if (is_fw_err_platform_config(msg_out.header.status)) {
>> +            drm_WARN_ONCE(&i915->drm, true,
>> +                      "PXP inv-stream-key-%u failed due to BIOS/SOC 
>> :0x%08x:%s\n",
>> +                      session_id, msg_out.header.status,
>> +                      fw_err_to_string(msg_out.header.status));
>> +        } else {
>> +            drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 
>> 0x%08x:%s:\n",
>> +                session_id, msg_out.header.status,
>> +                fw_err_to_string(msg_out.header.status));
>> +            drm_dbg(&i915->drm, "     cmd-detail: 
>> ID=[0x%08x],API-Ver-[0x%08x]\n",
>> +                msg_in.header.command_id, msg_in.header.api_version);
>> +        }
>> +    }
>>   }
>>
>> base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b

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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-16  8:50   ` Tvrtko Ursulin
@ 2023-03-17 11:37     ` Eero Tamminen
  2023-03-23  0:27       ` Teres Alexis, Alan Previn
  0 siblings, 1 reply; 11+ messages in thread
From: Eero Tamminen @ 2023-03-17 11:37 UTC (permalink / raw)
  To: Tvrtko Ursulin, Alan Previn, intel-gfx; +Cc: dri-devel

Hi,

On 16.3.2023 10.50, Tvrtko Ursulin wrote:
>> [   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due 
>> to BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
...
> Alan - is this expected during normal operation on some parts, or it's 
> something truly unexpected/unexplained? If the former then I think it 
> would be good to downgrade away from drm_WARN so it is less scary.
> 
> Commit message talks about "HW/platform gaps" - if it is like a missing 
> BIOS support or so then I think WARN_ON is too much.

Note that this was on pre-production TGL-H HW with BIOS from April 2021.

(I don't know where to get update, nor interested to update it.)


	- Eero

>> On 14.3.2023 19.58, Alan Previn wrote:
>>> MESA driver is creating protected context on every driver handle
>>> creation to query caps bits for app. So when running CI tests,
>>> they are observing hundreds of drm_errors when enabling PXP
>>> in .config but using SOC fusing or BIOS configuration that cannot
>>> support PXP sessions.
>>>
>>> The fixes tag referenced below was to resolve a related issue
>>> where we wanted to silence error messages, but that case was due
>>> to outdated IFWI (firmware) that definitely needed an upgrade and
>>> was, at that point, considered a one-off case as opposed to today's
>>> realization that default CI was enabling PXP in kernel config for
>>> all testing.
>>>
>>> So with this patch, let's strike a balance between issues that is
>>> critical but are root-caused from HW/platform gaps (louder drm-warn
>>> but just ONCE) vs other cases where it could also come from session
>>> state machine (which cannot be a WARN_ONCE since it can be triggered
>>> due to runtime operation events).
>>>
>>> Let's use helpers for these so as more functions are added in future
>>> features / HW (or as FW designers continue to bless upstreaming of
>>> the error codes and meanings), we only need to update the helpers.
>>>
>>> NOTE: Don't completely remove FW errors (via drm_debug) or else cusomer
>>> apps that really needs to know that content protection failed won't
>>> be aware of it.
>>>
>>> v2: - Add fixes tag (Trvtko)
>>> v3: - Break multi-line drm_dbg strings into separate drm_dbg (Daniele)
>>>      - Fix couple of typecasting nits (Daniele)
>>>
>>> Fixes: b762787bf767 ("drm/i915/pxp: Use drm_dbg if arb session failed 
>>> due to fw version")
>>> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
>>> ---
>>>   .../i915/pxp/intel_pxp_cmd_interface_cmn.h    |  3 +
>>>   drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |  2 +-
>>>   drivers/gpu/drm/i915/pxp/intel_pxp_tee.c      | 77 +++++++++++++++----
>>>   3 files changed, 67 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h 
>>> b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>>> index ae9b151b7cb7..6f6541d5e49a 100644
>>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
>>> @@ -18,6 +18,9 @@
>>>   enum pxp_status {
>>>       PXP_STATUS_SUCCESS = 0x0,
>>>       PXP_STATUS_ERROR_API_VERSION = 0x1002,
>>> +    PXP_STATUS_NOT_READY = 0x100e,
>>> +    PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
>>> +    PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
>>>       PXP_STATUS_OP_NOT_PERMITTED = 0x4013
>>>   };
>>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c 
>>> b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>>> index 448cacb0465d..7de849cb6c47 100644
>>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
>>> @@ -74,7 +74,7 @@ static int pxp_create_arb_session(struct intel_pxp 
>>> *pxp)
>>>       ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
>>>       if (ret) {
>>> -        drm_err(&gt->i915->drm, "arb session failed to go in play\n");
>>> +        drm_dbg(&gt->i915->drm, "arb session failed to go in play\n");
>>>           return ret;
>>>       }
>>>       drm_dbg(&gt->i915->drm, "PXP ARB session is alive\n");
>>> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c 
>>> b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>>> index d9d248b48093..6f89cd850251 100644
>>> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>>> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
>>> @@ -19,6 +19,37 @@
>>>   #include "intel_pxp_tee.h"
>>>   #include "intel_pxp_types.h"
>>> +static bool
>>> +is_fw_err_platform_config(u32 type)
>>> +{
>>> +    switch (type) {
>>> +    case PXP_STATUS_ERROR_API_VERSION:
>>> +    case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
>>> +    case PXP_STATUS_PLATFCONFIG_KF1_BAD:
>>> +        return true;
>>> +    default:
>>> +        break;
>>> +    }
>>> +    return false;
>>> +}
>>> +
>>> +static const char *
>>> +fw_err_to_string(u32 type)
>>> +{
>>> +    switch (type) {
>>> +    case PXP_STATUS_ERROR_API_VERSION:
>>> +        return "ERR_API_VERSION";
>>> +    case PXP_STATUS_NOT_READY:
>>> +        return "ERR_NOT_READY";
>>> +    case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
>>> +    case PXP_STATUS_PLATFCONFIG_KF1_BAD:
>>> +        return "ERR_PLATFORM_CONFIG";
>>> +    default:
>>> +        break;
>>> +    }
>>> +    return NULL;
>>> +}
>>> +
>>>   static int intel_pxp_tee_io_message(struct intel_pxp *pxp,
>>>                       void *msg_in, u32 msg_in_size,
>>>                       void *msg_out, u32 msg_out_max_size,
>>> @@ -307,15 +338,22 @@ int intel_pxp_tee_cmd_create_arb_session(struct 
>>> intel_pxp *pxp,
>>>                          &msg_out, sizeof(msg_out),
>>>                          NULL);
>>> -    if (ret)
>>> -        drm_err(&i915->drm, "Failed to send tee msg ret=[%d]\n", ret);
>>> -    else if (msg_out.header.status == PXP_STATUS_ERROR_API_VERSION)
>>> -        drm_dbg(&i915->drm, "PXP firmware version unsupported, 
>>> requested: "
>>> -            "CMD-ID-[0x%08x] on API-Ver-[0x%08x]\n",
>>> -            msg_in.header.command_id, msg_in.header.api_version);
>>> -    else if (msg_out.header.status != 0x0)
>>> -        drm_warn(&i915->drm, "PXP firmware failed arb session init 
>>> request ret=[0x%08x]\n",
>>> -             msg_out.header.status);
>>> +    if (ret) {
>>> +        drm_err(&i915->drm, "Failed to send tee msg init arb 
>>> session, ret=[%d]\n", ret);
>>> +    } else if (msg_out.header.status != 0) {
>>> +        if (is_fw_err_platform_config(msg_out.header.status)) {
>>> +            drm_WARN_ONCE(&i915->drm, true,
>>> +                      "PXP init-arb-session-%d failed due to 
>>> BIOS/SOC:0x%08x:%s\n",
>>> +                      arb_session_id, msg_out.header.status,
>>> +                      fw_err_to_string(msg_out.header.status));
>>> +        } else {
>>> +            drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 
>>> 0x%08x:%st:\n",
>>> +                arb_session_id, msg_out.header.status,
>>> +                fw_err_to_string(msg_out.header.status));
>>> +            drm_dbg(&i915->drm, "     cmd-detail: 
>>> ID=[0x%08x],API-Ver-[0x%08x]\n",
>>> +                msg_in.header.command_id, msg_in.header.api_version);
>>> +        }
>>> +    }
>>>       return ret;
>>>   }
>>> @@ -347,10 +385,21 @@ void intel_pxp_tee_end_arb_fw_session(struct 
>>> intel_pxp *pxp, u32 session_id)
>>>       if ((ret || msg_out.header.status != 0x0) && ++trials < 3)
>>>           goto try_again;
>>> -    if (ret)
>>> -        drm_err(&i915->drm, "Failed to send tee msg for 
>>> inv-stream-key-%d, ret=[%d]\n",
>>> +    if (ret) {
>>> +        drm_err(&i915->drm, "Failed to send tee msg for 
>>> inv-stream-key-%u, ret=[%d]\n",
>>>               session_id, ret);
>>> -    else if (msg_out.header.status != 0x0)
>>> -        drm_warn(&i915->drm, "PXP firmware failed inv-stream-key-%d 
>>> with status 0x%08x\n",
>>> -             session_id, msg_out.header.status);
>>> +    } else if (msg_out.header.status != 0) {
>>> +        if (is_fw_err_platform_config(msg_out.header.status)) {
>>> +            drm_WARN_ONCE(&i915->drm, true,
>>> +                      "PXP inv-stream-key-%u failed due to BIOS/SOC 
>>> :0x%08x:%s\n",
>>> +                      session_id, msg_out.header.status,
>>> +                      fw_err_to_string(msg_out.header.status));
>>> +        } else {
>>> +            drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 
>>> 0x%08x:%s:\n",
>>> +                session_id, msg_out.header.status,
>>> +                fw_err_to_string(msg_out.header.status));
>>> +            drm_dbg(&i915->drm, "     cmd-detail: 
>>> ID=[0x%08x],API-Ver-[0x%08x]\n",
>>> +                msg_in.header.command_id, msg_in.header.api_version);
>>> +        }
>>> +    }
>>>   }
>>>
>>> base-commit: 07f982ec08c9bfc4aa82d98022111126cd638a0b

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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-17 11:37     ` Eero Tamminen
@ 2023-03-23  0:27       ` Teres Alexis, Alan Previn
  2023-03-23  8:35         ` Tvrtko Ursulin
  0 siblings, 1 reply; 11+ messages in thread
From: Teres Alexis, Alan Previn @ 2023-03-23  0:27 UTC (permalink / raw)
  To: Tamminen, Eero T, tvrtko.ursulin, intel-gfx; +Cc: dri-devel

On Fri, 2023-03-17 at 13:37 +0200, Tamminen, Eero T wrote:
> Hi,
> 
> On 16.3.2023 10.50, Tvrtko Ursulin wrote:
> > > [   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due 
> > > to BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
> ...
> > Alan - is this expected during normal operation on some parts, or it's 
> > something truly unexpected/unexplained? If the former then I think it 
> > would be good to downgrade away from drm_WARN so it is less scary.
> > 
> > Commit message talks about "HW/platform gaps" - if it is like a missing 
> > BIOS support or so then I think WARN_ON is too much.
> 
> Note that this was on pre-production TGL-H HW with BIOS from April 2021.
> 
> (I don't know where to get update, nor interested to update it.)
> 
> 
> 	- Eero

Alan: Hi Tvrtko, thanks for the feedback -i shall change from WARN_ONCE to drm_info_once.
Alan: snip


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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-23  0:27       ` Teres Alexis, Alan Previn
@ 2023-03-23  8:35         ` Tvrtko Ursulin
  2023-03-23 18:33           ` Teres Alexis, Alan Previn
  0 siblings, 1 reply; 11+ messages in thread
From: Tvrtko Ursulin @ 2023-03-23  8:35 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn, Tamminen, Eero T, intel-gfx; +Cc: dri-devel


On 23/03/2023 00:27, Teres Alexis, Alan Previn wrote:
> On Fri, 2023-03-17 at 13:37 +0200, Tamminen, Eero T wrote:
>> Hi,
>>
>> On 16.3.2023 10.50, Tvrtko Ursulin wrote:
>>>> [   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due
>>>> to BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG
>> ...
>>> Alan - is this expected during normal operation on some parts, or it's
>>> something truly unexpected/unexplained? If the former then I think it
>>> would be good to downgrade away from drm_WARN so it is less scary.
>>>
>>> Commit message talks about "HW/platform gaps" - if it is like a missing
>>> BIOS support or so then I think WARN_ON is too much.
>>
>> Note that this was on pre-production TGL-H HW with BIOS from April 2021.
>>
>> (I don't know where to get update, nor interested to update it.)
>>
>>
>> 	- Eero
> 
> Alan: Hi Tvrtko, thanks for the feedback -i shall change from WARN_ONCE to drm_info_once.

Maybe it deserves to be a warning? Or a notice? I was just thinking it 
does not need a call trace and all since it is not a driver issue. Your 
call on the level and whether or not there is any chance for it to 
happen in the field to make the discussion relevant or not.

Regards,

Tvrtko

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

* Re: [Intel-gfx] [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures
  2023-03-23  8:35         ` Tvrtko Ursulin
@ 2023-03-23 18:33           ` Teres Alexis, Alan Previn
  0 siblings, 0 replies; 11+ messages in thread
From: Teres Alexis, Alan Previn @ 2023-03-23 18:33 UTC (permalink / raw)
  To: Tamminen, Eero T, tvrtko.ursulin, intel-gfx; +Cc: dri-devel

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


On Thu, 2023-03-23 at 08:35 +0000, Tvrtko Ursulin wrote:

On 23/03/2023 00:27, Teres Alexis, Alan Previn wrote:

On Fri, 2023-03-17 at 13:37 +0200, Tamminen, Eero T wrote:

Hi,


On 16.3.2023 10.50, Tvrtko Ursulin wrote:

[   11.674183] i915 0000:00:02.0: PXP init-arb-session-15 failed due

to BIOS/SOC:0x0000101a:ERR_PLATFORM_CONFIG

...

Alan - is this expected during normal operation on some parts, or it's

something truly unexpected/unexplained? If the former then I think it

would be good to downgrade away from drm_WARN so it is less scary.


Commit message talks about "HW/platform gaps" - if it is like a missing

BIOS support or so then I think WARN_ON is too much.


Note that this was on pre-production TGL-H HW with BIOS from April 2021.


(I don't know where to get update, nor interested to update it.)



        - Eero


Alan: Hi Tvrtko, thanks for the feedback -i shall change from WARN_ONCE to drm_info_once.


Maybe it deserves to be a warning? Or a notice? I was just thinking it

does not need a call trace and all since it is not a driver issue. Your

call on the level and whether or not there is any chance for it to

happen in the field to make the discussion relevant or not.

I agree we don't need a call trace. I can't say how often this can happen in the field as it would depend on
when the platform was purchased, whether the owner had been updating the firwmware releases and whether
the bios settings were configured correctly. I'm okay with the drm_info_once - it could be ignored which is fine.

If customers seeing protected rendering/decoding fail when they actually DO need it, I am expecting they  will
provide the dmesg that shows above new message at compositor startup (mesa attempting to establish caps)
along with more serious complaints such as their application getting a failure when attempting to create a
protected context via I915 ioctl (which aligns with existing PXP UAPI behavior).

Any chance for an r-b? :)

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

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

end of thread, other threads:[~2023-03-23 18:33 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-14 17:58 [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures Alan Previn
2023-03-14 17:58 ` [Intel-gfx] " Alan Previn
2023-03-14 18:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2) Patchwork
2023-03-15  9:16 ` [PATCH v3] drm/i915/pxp: limit drm-errors or warning on firmware API failures Eero Tamminen
2023-03-15  9:16   ` [Intel-gfx] " Eero Tamminen
2023-03-16  8:50   ` Tvrtko Ursulin
2023-03-17 11:37     ` Eero Tamminen
2023-03-23  0:27       ` Teres Alexis, Alan Previn
2023-03-23  8:35         ` Tvrtko Ursulin
2023-03-23 18:33           ` Teres Alexis, Alan Previn
2023-03-15 21:23 ` [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/pxp: limit drm-errors or warning on firmware API failures (rev2) 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.