@@ -404,6 +404,9 @@ static void drm_mode_rmfb_work_fn(struct work_struct *w)
404
404
struct drm_framebuffer * fb =
405
405
list_first_entry (& arg -> fbs , typeof (* fb ), filp_head );
406
406
407
+ drm_dbg_kms (fb -> dev ,
408
+ "Removing [FB:%d] from all active usage due to RMFB ioctl\n" ,
409
+ fb -> base .id );
407
410
list_del_init (& fb -> filp_head );
408
411
drm_framebuffer_remove (fb );
409
412
}
@@ -981,6 +984,10 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
981
984
if (plane -> state -> fb != fb )
982
985
continue ;
983
986
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
+
984
991
plane_state = drm_atomic_get_plane_state (state , plane );
985
992
if (IS_ERR (plane_state )) {
986
993
ret = PTR_ERR (plane_state );
@@ -990,6 +997,11 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
990
997
if (disable_crtcs && plane_state -> crtc -> primary == plane ) {
991
998
struct drm_crtc_state * crtc_state ;
992
999
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
+
993
1005
crtc_state = drm_atomic_get_existing_crtc_state (state , plane_state -> crtc );
994
1006
995
1007
ret = drm_atomic_add_affected_connectors (state , plane_state -> crtc );
@@ -1052,15 +1064,23 @@ static void legacy_remove_fb(struct drm_framebuffer *fb)
1052
1064
/* remove from any CRTC */
1053
1065
drm_for_each_crtc (crtc , dev ) {
1054
1066
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
+
1055
1071
/* should turn off the crtc */
1056
1072
if (drm_crtc_force_disable (crtc ))
1057
1073
DRM_ERROR ("failed to reset crtc %p when fb was deleted\n" , crtc );
1058
1074
}
1059
1075
}
1060
1076
1061
1077
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 );
1063
1082
drm_plane_force_disable (plane );
1083
+ }
1064
1084
}
1065
1085
drm_modeset_unlock_all (dev );
1066
1086
}
0 commit comments