On Fri, May 31, 2013 at 08:07:04PM +0300, ville.syrjala@linux.intel.com wrote:
From: Ville Syrjälä ville.syrjala@linux.intel.com
Disable sprite planes and cursors when restoring the fbdev mode.
Should makes oopses more readable if they're not covered by sprites and cursors.
v2: Rebased due to changes earlier in the series
Nice, this should fix the issue of the rogue cursor and the like if X exits abnormally. Explicitly disabling it feels wrong, but as the cursor is not integrated into the modesetting sequence I have no better suggestion. Reviewed-by: Chris Wilson chris@chris-wilson.co.uk
Comment inline.
Signed-off-by: Ville Syrjälä ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/intel_fb.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index b34ccf3..e8389df 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c @@ -183,11 +183,25 @@ out: return ret; }
+static bool intel_fb_restore_fbdev_mode(struct drm_fb_helper *helper) +{
- struct drm_device *dev = helper->dev;
- bool ret;
- intel_disable_cursors_and_sprites(dev);
- ret = drm_fb_helper_restore_fbdev_mode(helper);
- if (ret)
DRM_DEBUG("failed to restore crtc mode\n");
Just return without the DBG here, and keep the DBG up a level where we discard the error code.
- return ret;
+}
static struct drm_fb_helper_funcs intel_fb_helper_funcs = { .gamma_set = intel_crtc_fb_gamma_set, .gamma_get = intel_crtc_fb_gamma_get, .fb_probe = intelfb_create,
- .restore_fbdev_mode = drm_fb_helper_restore_fbdev_mode,
- .restore_fbdev_mode = intel_fb_restore_fbdev_mode,
};
static void intel_fbdev_destroy(struct drm_device *dev, @@ -291,7 +305,6 @@ void intel_fb_output_poll_changed(struct drm_device *dev)
void intel_fb_restore_mode(struct drm_device *dev) {
int ret; drm_i915_private_t *dev_priv = dev->dev_private;
if (INTEL_INFO(dev)->num_pipes == 0)
@@ -299,11 +312,7 @@ void intel_fb_restore_mode(struct drm_device *dev)
drm_modeset_lock_all(dev);
- intel_disable_cursors_and_sprites(dev);
- ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper);
- if (ret)
DRM_DEBUG("failed to restore crtc mode\n");
As above, I think this is the better location for the DBG. -Chris