drm/i915: Clear the stolen fb before enabling
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 16 Dec 2012 12:15:41 +0000 (12:15 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 17 Dec 2012 13:40:15 +0000 (14:40 +0100)
As the stolen memory region will contain the contents of whatever was
last there, it invariably contains garbage. To be consistent with the
shmemfs backed fb and the expectations of the fb layer, we need to clear
the fb prior to installing it as an fbcon.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58111
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Fixup sparse __iomem confusion reported by Wu Fengguang.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_fb.c

index 822896782cd089486a3de555213d1779a749b604..71d55801c0d97a4569afab58054882819336fef0 100644 (file)
@@ -155,6 +155,13 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
        drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
        drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height);
 
+       /* If the object is shmemfs backed, it will have given us zeroed pages.
+        * If the object is stolen however, it will be full of whatever
+        * garbage was left in there.
+        */
+       if (ifbdev->ifb.obj->stolen)
+               memset_io(info->screen_base, 0, info->screen_size);
+
        /* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
 
        DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08x, bo %p\n",