[PATCH v2 2/2] drm/xe: Add a WARN_ON for NULL job in xe_sync_entry_signal
Nirmoy Das
nirmoy.das at linux.intel.com
Wed Mar 20 13:07:26 UTC 2024
On 3/20/2024 4:20 AM, Lucas De Marchi wrote:
> On Mon, Mar 18, 2024 at 07:41:56PM +0100, Nirmoy Das wrote:
>>
>> On 3/18/2024 6:41 PM, Michal Wajdeczko wrote:
>>>
>>> On 18.03.2024 17:43, Nirmoy Das wrote:
>>>> Add a warn for NULL job when sync->type is
>>>> DRM_XE_SYNC_TYPE_USER_FENCE. This should be a programming
>>>> error and should never happen so warn and let the kernel crash
>>>> if that ever happens.
>>> IMO adding WARN and then let kernel crash is pointless as you will have
>>> almost exactly the same report as from NPD
>>
>> WARN should give us the line number which is not the case for NDP I
>> think.
>
> and a NPD will put the line with the NPD straight in the RIP line.
I always observed NPD to be func name + offset, not the line number.
> So,
> to second what Michal said, what's the point?
>
> it would make sense if you were adding the warning earlier and make the
> driver still behave. The place it was added, not so much
I will not defend this patch much :) now that I think I have a better one
https://patchwork.freedesktop.org/series/131371/
Regards,
Nirmoy
>
> Lucas De Marchi
>
>>
>>
>> Regards,
>>
>> Nirmoy
>>
>>>
>>> for programming errors we should xe_assert() that will provide
>>> necessary
>>> hint during code refactor but will be compiled on production builds
>>>
>>> only if you feel that that job could be still (but unlikely) NULL then
>>> you should use drm_WARN/xe_gt_WARN and provide necessary fallback
>>>
>>>> Cc: Matthew Auld <matthew.auld at intel.com>
>>>> Cc: Matthew Brost <matthew.brost at intel.com>
>>>> Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/xe_sync.c | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_sync.c
>>>> b/drivers/gpu/drm/xe/xe_sync.c
>>>> index 02c9577fe418..247505c3478d 100644
>>>> --- a/drivers/gpu/drm/xe/xe_sync.c
>>>> +++ b/drivers/gpu/drm/xe/xe_sync.c
>>>> @@ -255,6 +255,7 @@ void xe_sync_entry_signal(struct xe_sync_entry
>>>> *sync, struct xe_sched_job *job,
>>>> dma_fence_put(fence);
>>>> }
>>>> } else if (sync->type == DRM_XE_SYNC_TYPE_USER_FENCE) {
>>>> + XE_WARN_ON(!job);
>>>> job->user_fence.used = true;
>>>> job->user_fence.addr = sync->addr;
>>>> job->user_fence.value = sync->timeline_value;
More information about the Intel-xe
mailing list