Skip to content

Commit 1e4b90c

Browse files
committed
drm/asahi: workqueue,queue: More debug
Signed-off-by: Asahi Lina <lina@asahilina.net>
1 parent 974528c commit 1e4b90c

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
@@ -205,7 +205,7 @@ impl QueueJob::ver {
205205
}
206206

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

210210
self.sj_vtx.as_mut().map(|a| a.commit()).unwrap_or(Ok(()))?;
211211
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
@@ -379,7 +379,7 @@ impl Job::ver {
379379
Some(work.get_fence())
380380
} else {
381381
pr_err!(
382-
"WorkQueue: Cannot submit, but queue is empty? {} > {}, {} > {} (pend={} ls={:#x?} lc={:#x?}) ev={:#x?}\n",
382+
"WorkQueue: Cannot submit, but queue is empty? {} > {}, {} > {} (pend={} ls={:#x?} lc={:#x?}) ev={:#x?} cur={:#x?} slot {:?}\n",
383383
inner.free_slots(),
384384
self.event_count,
385385
inner.free_space(),
@@ -388,6 +388,8 @@ impl Job::ver {
388388
inner.last_submitted,
389389
inner.last_completed,
390390
inner.event.as_ref().map(|a| a.1),
391+
inner.event.as_ref().map(|a| a.0.current()),
392+
inner.event.as_ref().map(|a| a.0.slot()),
391393
);
392394
None
393395
}
@@ -440,6 +442,16 @@ impl Job::ver {
440442
inner.pending.reserve(command_count, GFP_KERNEL)?;
441443

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

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

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

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

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

879903
mod_pr_debug!(
880-
"WorkQueue({:?}): Completed {} commands\n",
904+
"WorkQueue({:?}): Completed {} commands, left pending {}, ls {:#x?}, lc {:#x?}\n",
881905
inner.pipe_type,
882-
completed_commands
906+
completed_commands,
907+
inner.pending.len(),
908+
inner.last_submitted,
909+
inner.last_completed,
883910
);
884911

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

0 commit comments

Comments
 (0)