[PATCH v5 7/9] drm/xe: Move lrc snapshot capturing to xe_lrc.c

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Wed Feb 21 19:27:28 UTC 2024


Hey,

On 2024-02-21 18:56, Souza, Jose wrote:
> On Wed, 2024-02-21 at 14:30 +0100, Maarten Lankhorst wrote:
>> This allows the dumping of HWSP and HW Context without exporting more
>> functions.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_guc_submit.c       | 33 ++++++-----------
>>   drivers/gpu/drm/xe/xe_guc_submit_types.h | 13 +------
>>   drivers/gpu/drm/xe/xe_lrc.c              | 45 ++++++++++++++++++++++++
>>   drivers/gpu/drm/xe/xe_lrc.h              |  4 +++
>>   drivers/gpu/drm/xe/xe_lrc_types.h        |  2 ++
>>   5 files changed, 63 insertions(+), 34 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
>> index ff77bc8da1b27..7348689ec5aef 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>> @@ -1814,21 +1814,14 @@ xe_guc_exec_queue_snapshot_capture(struct xe_sched_job *job)
>>   	snapshot->sched_props.preempt_timeout_us =
>>   		q->sched_props.preempt_timeout_us;
>>   
>> -	snapshot->lrc = kmalloc_array(q->width, sizeof(struct lrc_snapshot),
>> +	snapshot->lrc = kmalloc_array(q->width, sizeof(struct xe_lrc_snapshot *),
>>   				      GFP_ATOMIC);
>>   
>>   	if (snapshot->lrc) {
>>   		for (i = 0; i < q->width; ++i) {
>>   			struct xe_lrc *lrc = q->lrc + i;
>>   
>> -			snapshot->lrc[i].context_desc =
>> -				lower_32_bits(xe_lrc_ggtt_addr(lrc));
>> -			snapshot->lrc[i].head = xe_lrc_ring_head(lrc);
>> -			snapshot->lrc[i].tail.internal = lrc->ring.tail;
>> -			snapshot->lrc[i].tail.memory =
>> -				xe_lrc_read_ctx_reg(lrc, CTX_RING_TAIL);
>> -			snapshot->lrc[i].start_seqno = xe_lrc_start_seqno(lrc);
>> -			snapshot->lrc[i].seqno = xe_lrc_seqno(lrc);
>> +			snapshot->lrc[i] = xe_lrc_snapshot_capture(lrc);
>>   		}
>>   	}
>>   
>> @@ -1894,18 +1887,9 @@ xe_guc_exec_queue_snapshot_print(struct xe_guc_submit_exec_queue_snapshot *snaps
>>   	drm_printf(p, "\tPreempt timeout: %u (us)\n",
>>   		   snapshot->sched_props.preempt_timeout_us);
>>   
>> -	for (i = 0; snapshot->lrc && i < snapshot->width; ++i) {
>> -		drm_printf(p, "\tHW Context Desc: 0x%08x\n",
>> -			   snapshot->lrc[i].context_desc);
>> -		drm_printf(p, "\tLRC Head: (memory) %u\n",
>> -			   snapshot->lrc[i].head);
>> -		drm_printf(p, "\tLRC Tail: (internal) %u, (memory) %u\n",
>> -			   snapshot->lrc[i].tail.internal,
>> -			   snapshot->lrc[i].tail.memory);
>> -		drm_printf(p, "\tStart seqno: (memory) %d\n",
>> -			   snapshot->lrc[i].start_seqno);
>> -		drm_printf(p, "\tSeqno: (memory) %d\n", snapshot->lrc[i].seqno);
>> -	}
>> +	for (i = 0; snapshot->lrc && i < snapshot->width; ++i)
>> +		xe_lrc_snapshot_print(snapshot->lrc[i], p);
>> +
>>   	drm_printf(p, "\tSchedule State: 0x%x\n", snapshot->schedule_state);
>>   	drm_printf(p, "\tFlags: 0x%lx\n", snapshot->exec_queue_flags);
> 
> can you please print this before xe_lrc_snapshot_print()? to make the file easier to read.
Yeah, will do so.

I've pushed patches 1-6, that should at least be in time for merge 
window closing now.

Cheers,
~Maarten


More information about the Intel-xe mailing list