Skip to content

Commit df26600

Browse files
committed
drm: add logging for RMFB ioctl
We already have logging for ADDFB2. Add some logging for RMFB as well. This can be handy when trying to find out why a CRTC gets magically disabled. v2: make log message more explicit, add log messages to drm_framebuffer_remove (Daniel) Signed-off-by: Simon Ser <[email protected]> Reviewed-by: Daniel Vetter <[email protected]> Acked-by: Sam Ravnborg <[email protected]> Acked-by: Pekka Paalanen <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent ca31fef commit df26600

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

drivers/gpu/drm/drm_framebuffer.c

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,9 @@ 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,
408+
"Removing [FB:%d] from all active usage due to RMFB ioctl\n",
409+
fb->base.id);
407410
list_del_init(&fb->filp_head);
408411
drm_framebuffer_remove(fb);
409412
}
@@ -981,6 +984,10 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
981984
if (plane->state->fb != fb)
982985
continue;
983986

987+
drm_dbg_kms(dev,
988+
"Disabling [PLANE:%d:%s] because [FB:%d] is removed\n",
989+
plane->base.id, plane->name, fb->base.id);
990+
984991
plane_state = drm_atomic_get_plane_state(state, plane);
985992
if (IS_ERR(plane_state)) {
986993
ret = PTR_ERR(plane_state);
@@ -990,6 +997,11 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
990997
if (disable_crtcs && plane_state->crtc->primary == plane) {
991998
struct drm_crtc_state *crtc_state;
992999

1000+
drm_dbg_kms(dev,
1001+
"Disabling [CRTC:%d:%s] because [FB:%d] is removed\n",
1002+
plane_state->crtc->base.id,
1003+
plane_state->crtc->name, fb->base.id);
1004+
9931005
crtc_state = drm_atomic_get_existing_crtc_state(state, plane_state->crtc);
9941006

9951007
ret = drm_atomic_add_affected_connectors(state, plane_state->crtc);
@@ -1052,15 +1064,23 @@ static void legacy_remove_fb(struct drm_framebuffer *fb)
10521064
/* remove from any CRTC */
10531065
drm_for_each_crtc(crtc, dev) {
10541066
if (crtc->primary->fb == fb) {
1067+
drm_dbg_kms(dev,
1068+
"Disabling [CRTC:%d:%s] because [FB:%d] is removed\n",
1069+
crtc->base.id, crtc->name, fb->base.id);
1070+
10551071
/* should turn off the crtc */
10561072
if (drm_crtc_force_disable(crtc))
10571073
DRM_ERROR("failed to reset crtc %p when fb was deleted\n", crtc);
10581074
}
10591075
}
10601076

10611077
drm_for_each_plane(plane, dev) {
1062-
if (plane->fb == fb)
1078+
if (plane->fb == fb) {
1079+
drm_dbg_kms(dev,
1080+
"Disabling [PLANE:%d:%s] because [FB:%d] is removed\n",
1081+
plane->base.id, plane->name, fb->base.id);
10631082
drm_plane_force_disable(plane);
1083+
}
10641084
}
10651085
drm_modeset_unlock_all(dev);
10661086
}

0 commit comments

Comments
 (0)