[PATCH v2] drm/xe/pxp: do not queue unneeded terminations from debugfs

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Wed Apr 16 20:19:02 UTC 2025



On 4/16/2025 1:16 PM, Daniele Ceraolo Spurio wrote:
> The PXP terminate debugfs currently unconditionally simulates a
> termination, no matter what the HW status is. This is unneeded if PXP is
> not in use and can cause errors if the HW init hasn't completed yet.
> To solve these issues, we can simply limit the terminations to the cases
> where PXP is fully initialized and in use.
>
> v2: s/pxp_status/ready/ to avoid confusion with pxp->status (John)
>
> Fixes: 385a8015b214 ("drm/xe/pxp: Add PXP debugfs support")
> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4749
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: John Harrison <John.C.Harrison at Intel.com>
> Reviewed-by: John Harrison <John.C.Harrison at Intel.com>

I've accidentally posted this to the i915 ML first and John gave his r-b 
in reply to that email 
(https://patchwork.freedesktop.org/patch/648930/?series=147840&rev=1) . 
Just clarifying in case anyone is looking for where the r-b came from.

Daniele

> ---
>   drivers/gpu/drm/xe/xe_pxp_debugfs.c | 13 +++++++++++--
>   1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pxp_debugfs.c b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
> index ccfbacf08efc..525a2f6bb076 100644
> --- a/drivers/gpu/drm/xe/xe_pxp_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
> @@ -66,9 +66,18 @@ static int pxp_terminate(struct seq_file *m, void *data)
>   {
>   	struct xe_pxp *pxp = node_to_pxp(m->private);
>   	struct drm_printer p = drm_seq_file_printer(m);
> +	int ready = xe_pxp_get_readiness_status(pxp);
>   
> -	if (!xe_pxp_is_enabled(pxp))
> -		return -ENODEV;
> +	if (ready < 0)
> +		return ready; /* disabled or error occurred */
> +	else if (!ready)
> +		return -EBUSY; /* init still in progress */
> +
> +	/* no need for a termination if PXP is not active */
> +	if (pxp->status != XE_PXP_ACTIVE) {
> +		drm_printf(&p, "PXP not active\n");
> +		return 0;
> +	}
>   
>   	/* simulate a termination interrupt */
>   	spin_lock_irq(&pxp->xe->irq.lock);



More information about the Intel-xe mailing list