[PATCH 2/2] drm/i915/pxp: Do not support PXP if CSME is not available
Valentine Burley
valentine.burley at collabora.com
Wed Jul 16 11:34:08 UTC 2025
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.burley at collabora.com >
---- On Wed, 16 Jul 2025 01:00:02 +0200 Daniele Ceraolo Spurio <daniele.ceraolospurio at 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.burley at collabora.com >
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14516
Signed-off-by: Daniele Ceraolo Spurio < mailto:daniele.ceraolospurio at intel.com >
Cc: Rodrigo Vivi < mailto:rodrigo.vivi at intel.com >
Cc: Alexander Usyskin < mailto:alexander.usyskin at intel.com >
Cc: Alan Previn < mailto: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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20250716/da829618/attachment.htm>
More information about the Intel-gfx
mailing list