[PATCH 2/2] drm/i915/pxp: Do not support PXP if CSME is not available

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Tue Jul 15 23:00:02 UTC 2025


The PXP flow requires us to communicate with CSME, which we do via a
mei component. Since the mei component binding is async and can take
a bit to complete, we don't wait for it during i915 load. If userspace
queries the state before the async binding is complete, we return an
"init in progress" state, with the expectation that it will eventually
transition to "init complete" if the CSME device is functional.

Mesa CI is flashing a custom coreboot on their Chromebooks that hides
the CSME device, which means that we never transition to the "init
complete" state. While from an interface POV it is not incorrect to not
end up in "init complete" if the CSME is missing, we can mitigate the
impact of this by simply checking if the CSME device is available at
all before attempting to initialize PXP.

Reported-by: Valentine Burley <valentine.burley at collabora.com>
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14516
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
Cc: Alexander Usyskin <alexander.usyskin at intel.com>
Cc: Alan Previn <alan.previn.teres.alexis at intel.com>
---
 drivers/gpu/drm/i915/i915_module.c   | 1 +
 drivers/gpu/drm/i915/pxp/intel_pxp.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_module.c b/drivers/gpu/drm/i915/i915_module.c
index 5862754c662c..07118a1ea14d 100644
--- a/drivers/gpu/drm/i915/i915_module.c
+++ b/drivers/gpu/drm/i915/i915_module.c
@@ -126,3 +126,4 @@ MODULE_AUTHOR("Intel Corporation");
 
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE("GPL and additional rights");
+
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c
index c077a1c464cf..e476c1d82c2f 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
@@ -2,6 +2,7 @@
 /*
  * Copyright(c) 2020 Intel Corporation.
  */
+#include <linux/mei_me.h>
 #include <linux/workqueue.h>
 
 #include "gem/i915_gem_context.h"
@@ -203,6 +204,10 @@ int intel_pxp_init(struct drm_i915_private *i915)
 	if (intel_gt_is_wedged(to_gt(i915)))
 		return -ENOTCONN;
 
+	/* iGPUs require CSME to be available to use PXP */
+	if (!IS_DGFX(i915) && !mei_me_device_present())
+		return -ENODEV;
+
 	/*
 	 * NOTE: Get the ctrl_gt before checking intel_pxp_is_supported since
 	 * we still need it if PXP's backend tee transport is needed.
-- 
2.43.0



More information about the Intel-gfx mailing list