Thank you for the fix! This worked around the issue and disabled PXP,
which allowed our virtual machine to boot.

Tested-by: Valentine Burley < mailto:valentine.bur...@collabora.com >







---- On Wed, 16 Jul 2025 01:00:02 +0200 Daniele Ceraolo Spurio 
<daniele.ceraolospu...@intel.com> wrote ---



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 < mailto:valentine.bur...@collabora.com > 
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14516  
Signed-off-by: Daniele Ceraolo Spurio < mailto:daniele.ceraolospu...@intel.com 
> 
Cc: Rodrigo Vivi < mailto:rodrigo.v...@intel.com > 
Cc: Alexander Usyskin < mailto:alexander.usys...@intel.com > 
Cc: Alan Previn < mailto:alan.previn.teres.ale...@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

Reply via email to