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

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



On 4/16/2025 12:31 PM, John Harrison wrote:
> On 4/16/2025 9:04 AM, 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>

Thanks for the review. I just realized I've sent this to the i915 ML 
instead of the Xe one, so I'll include your r-b and re-post over there.

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-gfx mailing list