Skip to content

Commit 18c411e

Browse files
committed
add debug log
Signed-off-by: Xue, Bosheng <bosheng.xue@intel.com>
1 parent d76fdbe commit 18c411e

5 files changed

Lines changed: 69 additions & 10 deletions

File tree

drivers/dma-buf/dma-fence.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ EXPORT_TRACEPOINT_SYMBOL(dma_fence_signaled);
2727
static DEFINE_SPINLOCK(dma_fence_stub_lock);
2828
static struct dma_fence dma_fence_stub;
2929

30+
static u64 seqno_crtc_0 = 0;
31+
static u64 seqno_crtc_1 = 0;
3032
/*
3133
* fence context counter: each execution context should have its own
3234
* fence context, this allows checking if fences belong to the same
@@ -369,6 +371,27 @@ int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
369371
{
370372
struct dma_fence_cb *cur, *tmp;
371373
struct list_head cb_list;
374+
char *timeline = NULL;
375+
376+
timeline = fence->ops->get_timeline_name(fence);
377+
if (timeline) {
378+
if (strstr(timeline, "crtc-0")) {
379+
if (seqno_crtc_0 == 0)
380+
seqno_crtc_0 = fence->seqno;
381+
if (fence->seqno != (seqno_crtc_0 +1)) {
382+
trace_printk("crtc-0 miss seq from %llx to %llx\n", seqno_crtc_0, fence->seqno);
383+
}
384+
seqno_crtc_0 = fence->seqno;
385+
}
386+
if (strstr(timeline, "crtc-1")) {
387+
if (seqno_crtc_1 == 0)
388+
seqno_crtc_1 = fence->seqno;
389+
if (fence->seqno != (seqno_crtc_1 +1)) {
390+
trace_printk("crtc-1 miss seq from %llx to %llx\n", seqno_crtc_1, fence->seqno);
391+
}
392+
seqno_crtc_1 = fence->seqno;
393+
}
394+
}
372395

373396
lockdep_assert_held(fence->lock);
374397

drivers/gpu/drm/drm_atomic_helper.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ drm_atomic_helper_check_wb_encoder_state(struct drm_encoder *encoder,
827827
if (fb->format->format == formats[i])
828828
return 0;
829829

830-
drm_dbg_kms(encoder->dev, "Invalid pixel format %p4cc\n", &fb->format->format);
830+
drm_warn(encoder->dev, "Invalid pixel format %p4cc\n", &fb->format->format);
831831

832832
return -EINVAL;
833833
}
@@ -885,7 +885,7 @@ int drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state,
885885
}
886886

887887
if (!crtc_state->enable && !can_update_disabled) {
888-
drm_dbg_kms(plane_state->plane->dev,
888+
drm_warn(plane_state->plane->dev,
889889
"Cannot update plane of a disabled CRTC.\n");
890890
return -EINVAL;
891891
}
@@ -896,7 +896,7 @@ int drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state,
896896
hscale = drm_rect_calc_hscale(src, dst, min_scale, max_scale);
897897
vscale = drm_rect_calc_vscale(src, dst, min_scale, max_scale);
898898
if (hscale < 0 || vscale < 0) {
899-
drm_dbg_kms(plane_state->plane->dev,
899+
drm_warn(plane_state->plane->dev,
900900
"Invalid scaling of plane\n");
901901
drm_rect_debug_print("src: ", &plane_state->src, true);
902902
drm_rect_debug_print("dst: ", &plane_state->dst, false);
@@ -921,7 +921,7 @@ int drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state,
921921
return 0;
922922

923923
if (!can_position && !drm_rect_equals(dst, &clip)) {
924-
drm_dbg_kms(plane_state->plane->dev,
924+
drm_warn(plane_state->plane->dev,
925925
"Plane must cover entire CRTC\n");
926926
drm_rect_debug_print("dst: ", dst, false);
927927
drm_rect_debug_print("clip: ", &clip, false);
@@ -1612,9 +1612,17 @@ int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
16121612
* still interrupt the operation. Instead of blocking until the
16131613
* timer expires, make the wait interruptible.
16141614
*/
1615-
ret = dma_fence_wait(new_plane_state->fence, pre_swap);
1616-
if (ret)
1615+
// ret = dma_fence_wait(new_plane_state->fence, pre_swap);
1616+
// if (ret)
1617+
// return ret;
1618+
ret = dma_fence_wait_timeout(fence, pre_swap, msecs_to_jiffies(5000));
1619+
if (ret = 0) {
1620+
DRM_ERROR("drm_atomic_helper_wait_for_fences timeout\n");
1621+
}
1622+
if (ret < 0) {
1623+
DRM_ERROR("drm_atomic_helper_wait_for_fences error:%d\n", ret);
16171624
return ret;
1625+
}
16181626

16191627
dma_fence_put(new_plane_state->fence);
16201628
new_plane_state->fence = NULL;

drivers/gpu/drm/drm_atomic_uapi.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1313,6 +1313,7 @@ static void complete_signaling(struct drm_device *dev,
13131313
* to prevent a double free in drm_atomic_state_clear.
13141314
*/
13151315
if (event && (event->base.fence || event->base.file_priv)) {
1316+
DRM_ERROR("complete_signaling event cancel\n")
13161317
drm_event_cancel_free(dev, &event->base);
13171318
crtc_state->event = NULL;
13181319
}
@@ -1330,7 +1331,7 @@ static void complete_signaling(struct drm_device *dev,
13301331
/* If this fails log error to the user */
13311332
if (fence_state[i].out_fence_ptr &&
13321333
put_user(-1, fence_state[i].out_fence_ptr))
1333-
drm_dbg_atomic(dev, "Couldn't clear out_fence_ptr\n");
1334+
drm_warn(dev, "Couldn't clear out_fence_ptr\n");
13341335
}
13351336

13361337
kfree(fence_state);

drivers/gpu/drm/drm_framebuffer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ static void drm_mode_rmfb_work_fn(struct work_struct *w)
404404
struct drm_framebuffer *fb =
405405
list_first_entry(&arg->fbs, typeof(*fb), filp_head);
406406

407-
drm_dbg_kms(fb->dev,
407+
drm_warn(fb->dev,
408408
"Removing [FB:%d] from all active usage due to RMFB ioctl\n",
409409
fb->base.id);
410410
list_del_init(&fb->filp_head);
@@ -984,7 +984,7 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
984984
if (plane->state->fb != fb)
985985
continue;
986986

987-
drm_dbg_kms(dev,
987+
drm_warn(dev,
988988
"Disabling [PLANE:%d:%s] because [FB:%d] is removed\n",
989989
plane->base.id, plane->name, fb->base.id);
990990

@@ -997,7 +997,7 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
997997
if (disable_crtcs && plane_state->crtc->primary == plane) {
998998
struct drm_crtc_state *crtc_state;
999999

1000-
drm_dbg_kms(dev,
1000+
drm_warn(dev,
10011001
"Disabling [CRTC:%d:%s] because [FB:%d] is removed\n",
10021002
plane_state->crtc->base.id,
10031003
plane_state->crtc->name, fb->base.id);

drivers/gpu/drm/virtio/virtgpu_display.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ static void virtio_gpu_crtc_atomic_disable(struct drm_crtc *crtc,
147147
virtio_gpu_notify(vgdev);
148148
}
149149

150+
static u64 seqno_crtc_0 = 0;
151+
static u64 seqno_crtc_1 = 0;
152+
150153
static void virtio_gpu_crtc_atomic_begin(struct drm_crtc *crtc,
151154
struct drm_atomic_state *state)
152155
{
@@ -158,6 +161,30 @@ static void virtio_gpu_crtc_atomic_begin(struct drm_crtc *crtc,
158161
if (!vgdev->has_vblank || !crtc->state->event)
159162
return;
160163

164+
char *timeline = NULL;
165+
struct dma_fence *fence = NULL;
166+
fence = e->base.fence;
167+
if (fence)
168+
timeline = fence->ops->get_timeline_name(fence);
169+
if (timeline) {
170+
if (strstr(timeline, "crtc-0")) {
171+
if (seqno_crtc_0 == 0)
172+
seqno_crtc_0 = fence->seqno;
173+
if (fence->seqno != (seqno_crtc_0 +1)) {
174+
trace_printk("atomic begin crtc-0 miss seq from %llx to %llx\n", seqno_crtc_0, fence->seqno);
175+
}
176+
seqno_crtc_0 = fence->seqno;
177+
}
178+
if (strstr(timeline, "crtc-1")) {
179+
if (seqno_crtc_1 == 0)
180+
seqno_crtc_1 = fence->seqno;
181+
if (fence->seqno != (seqno_crtc_1 +1)) {
182+
trace_printk("atomic begin crtc-1 miss seq from %llx to %llx\n", seqno_crtc_1, fence->seqno);
183+
}
184+
seqno_crtc_1 = fence->seqno;
185+
}
186+
}
187+
161188
if (drm_crtc_vblank_get(crtc)) {
162189
/* Cannot enable vblank, send it right now. */
163190
spin_lock_irq(&drm->event_lock);

0 commit comments

Comments
 (0)