aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-09-17 05:38:03 -0400
committerDave Airlie <airlied@redhat.com>2012-10-01 19:29:37 -0400
commit3184009c36da413724f283e3c7ac9cc60c623bc4 (patch)
tree787dacdeff158c4d7e56365a97b87d724d5d9446 /drivers/gpu/drm/drm_crtc.c
parent259a290e78d639bd02d0e408ceb72967318abb13 (diff)
drm: Destroy the planes prior to destroying the associated CRTC
As during the plane cleanup, we wish to disable the hardware and so may modify state on the associated CRTC, that CRTC must continue to exist until we are finished. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54101 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: stable@vger.kernel.org Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Tested-by: lu hua <huax.lu@intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index c317f721a8d..c418c772a7e 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -1034,15 +1034,15 @@ void drm_mode_config_cleanup(struct drm_device *dev)
1034 fb->funcs->destroy(fb); 1034 fb->funcs->destroy(fb);
1035 } 1035 }
1036 1036
1037 list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) {
1038 crtc->funcs->destroy(crtc);
1039 }
1040
1041 list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, 1037 list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list,
1042 head) { 1038 head) {
1043 plane->funcs->destroy(plane); 1039 plane->funcs->destroy(plane);
1044 } 1040 }
1045 1041
1042 list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) {
1043 crtc->funcs->destroy(crtc);
1044 }
1045
1046 idr_remove_all(&dev->mode_config.crtc_idr); 1046 idr_remove_all(&dev->mode_config.crtc_idr);
1047 idr_destroy(&dev->mode_config.crtc_idr); 1047 idr_destroy(&dev->mode_config.crtc_idr);
1048} 1048}