drm/amdgpu: clean framebuffer with GPU
authorPixel Ding <Pixel.Ding@amd.com>
Tue, 24 Jan 2017 03:39:48 +0000 (11:39 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:52:40 +0000 (23:52 -0400)
CPU is not efficient to clean framebuffer especially under
virtualization, then loading driver takes long time which causes
timeout of mailbox handshake.

Signed-off-by: Pixel Ding <Pixel.Ding@amd.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c

index 72505b15dd13ea6f0fc36f8a1b4c19c942f14ebd..bab109e46d228a2c5d01743acdd82df235a39ba3 100644 (file)
@@ -147,7 +147,8 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,
        ret = amdgpu_gem_object_create(adev, aligned_size, 0,
                                       AMDGPU_GEM_DOMAIN_VRAM,
                                       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
-                                      AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS,
+                                      AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS |
+                                      AMDGPU_GEM_CREATE_VRAM_CLEARED,
                                       true, &gobj);
        if (ret) {
                printk(KERN_ERR "failed to allocate framebuffer (%d)\n",
@@ -241,8 +242,6 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
        /* setup helper */
        rfbdev->helper.fb = fb;
 
-       memset_io(abo->kptr, 0x0, amdgpu_bo_size(abo));
-
        strcpy(info->fix.id, "amdgpudrmfb");
 
        drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format->depth);