Skip to content

Commit ac1c793

Browse files
hoshinolinajannau
authored andcommitted
drm/asahi: workqueue,queue: More debug
Signed-off-by: Asahi Lina <lina@asahilina.net>
1 parent 3a7b0c3 commit ac1c793

2 files changed

Lines changed: 51 additions & 9 deletions

File tree

drivers/gpu/drm/asahi/queue/mod.rs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ impl QueueJob::ver {
204204
}
205205

206206
fn commit(&mut self) -> Result {
207-
mod_dev_dbg!(self.dev, "QueueJob: Committing\n");
207+
mod_dev_dbg!(self.dev, "QueueJob {}: Committing\n", self.id);
208208

209209
self.sj_vtx.as_mut().map(|a| a.commit()).unwrap_or(Ok(()))?;
210210
self.sj_frag
@@ -794,16 +794,31 @@ impl Queue for Queue::ver {
794794
}
795795
}
796796

797-
mod_dev_dbg!(self.dev, "Queue: Committing job\n");
797+
mod_dev_dbg!(
798+
self.dev,
799+
"Queue {}: Committing job {}\n",
800+
self.inner.id,
801+
job.id
802+
);
798803
job.commit()?;
799804

800-
mod_dev_dbg!(self.dev, "Queue: Arming job\n");
805+
mod_dev_dbg!(self.dev, "Queue {}: Arming job {}\n", self.inner.id, job.id);
801806
let job = job.arm();
802807
let out_fence = job.fences().finished();
803-
mod_dev_dbg!(self.dev, "Queue: Pushing job\n");
808+
mod_dev_dbg!(
809+
self.dev,
810+
"Queue {}: Pushing job {}\n",
811+
self.inner.id,
812+
job.id
813+
);
804814
job.push();
805815

806-
mod_dev_dbg!(self.dev, "Queue: Adding {} out_syncs\n", out_syncs.len());
816+
mod_dev_dbg!(
817+
self.dev,
818+
"Queue {}: Adding {} out_syncs\n",
819+
self.inner.id,
820+
out_syncs.len()
821+
);
807822
for mut sync in out_syncs {
808823
if let Some(chain) = sync.chain_fence.take() {
809824
sync.syncobj

drivers/gpu/drm/asahi/workqueue.rs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ impl Job::ver {
378378
Some(work.get_fence())
379379
} else {
380380
pr_err!(
381-
"WorkQueue: Cannot submit, but queue is empty? {} > {}, {} > {} (pend={} ls={:#x?} lc={:#x?}) ev={:#x?}\n",
381+
"WorkQueue: Cannot submit, but queue is empty? {} > {}, {} > {} (pend={} ls={:#x?} lc={:#x?}) ev={:#x?} cur={:#x?} slot {:?}\n",
382382
inner.free_slots(),
383383
self.event_count,
384384
inner.free_space(),
@@ -387,6 +387,8 @@ impl Job::ver {
387387
inner.last_submitted,
388388
inner.last_completed,
389389
inner.event.as_ref().map(|a| a.1),
390+
inner.event.as_ref().map(|a| a.0.current()),
391+
inner.event.as_ref().map(|a| a.0.slot()),
390392
);
391393
None
392394
}
@@ -439,6 +441,16 @@ impl Job::ver {
439441
inner.pending.reserve(command_count, GFP_KERNEL)?;
440442

441443
inner.last_submitted = inner.event.as_ref().map(|e| e.1);
444+
mod_dev_dbg!(
445+
inner.dev,
446+
"WorkQueue: submitting {} cmds at {:#x?}, lc {:#x?}, cur {:#x?}, pending {}, events {}\n",
447+
self.pending.len(),
448+
inner.last_submitted,
449+
inner.last_completed,
450+
inner.event.as_ref().map(|a| a.0.current()),
451+
inner.pending.len(),
452+
self.event_count,
453+
);
442454

443455
for mut command in self.pending.drain(..) {
444456
command.set_wptr(wptr);
@@ -514,6 +526,13 @@ impl Drop for Job::ver {
514526
mod_pr_debug!("WorkQueue: Dropping Job\n");
515527
let mut inner = self.wq.inner.lock();
516528

529+
if !self.committed {
530+
pr_info!(
531+
"WorkQueue: Dropping uncommitted job with {} events\n",
532+
self.event_count
533+
);
534+
}
535+
517536
if self.committed && !self.submitted {
518537
let pipe_type = inner.pipe_type;
519538
let event = inner.event.as_mut().expect("Job lost its event");
@@ -732,7 +751,12 @@ impl WorkQueue::ver {
732751

733752
let ev = &inner.event.as_ref().unwrap();
734753

735-
mod_pr_debug!("WorkQueue({:?}): New job\n", inner.pipe_type);
754+
mod_pr_debug!(
755+
"WorkQueue({:?}): New job at value {:#x?} slot {}\n",
756+
inner.pipe_type,
757+
ev.1,
758+
ev.0.slot()
759+
);
736760
Ok(Job::ver {
737761
wq: self.clone(),
738762
event_info: QueueEventInfo::ver {
@@ -876,9 +900,12 @@ impl WorkQueue for WorkQueue::ver {
876900
}
877901

878902
mod_pr_debug!(
879-
"WorkQueue({:?}): Completed {} commands\n",
903+
"WorkQueue({:?}): Completed {} commands, left pending {}, ls {:#x?}, lc {:#x?}\n",
880904
inner.pipe_type,
881-
completed_commands
905+
completed_commands,
906+
inner.pending.len(),
907+
inner.last_submitted,
908+
inner.last_completed,
882909
);
883910

884911
if let Some(i) = completed.last() {

0 commit comments

Comments
 (0)