drm/amd/display: Only flush inst_fb if backdoor loading
authorAlvin Lee <alvin.lee2@amd.com>
Sat, 26 Sep 2020 16:46:34 +0000 (12:46 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Oct 2020 19:17:32 +0000 (15:17 -0400)
[Why]
DAL resume from BACO time is longer if we always flush inst_fb

[How]
Check if backdoor loading to flush inst_fb

Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Acked-by: Eryk Brol <eryk.brol@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c

index 8ba7ecd..f50d26a 100644 (file)
@@ -418,15 +418,16 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
                cw1.region.base = DMUB_CW1_BASE;
                cw1.region.top = cw1.region.base + stack_fb->size - 1;
 
-               /**
-                * Read back all the instruction memory so we don't hang the
-                * DMCUB when backdoor loading if the write from x86 hasn't been
-                * flushed yet. This only occurs in backdoor loading.
-                */
-               dmub_flush_buffer_mem(inst_fb);
+               if (params->load_inst_const && dmub->hw_funcs.backdoor_load) {
+                   /**
+                    * Read back all the instruction memory so we don't hang the
+                    * DMCUB when backdoor loading if the write from x86 hasn't been
+                    * flushed yet. This only occurs in backdoor loading.
+                    */
+                   dmub_flush_buffer_mem(inst_fb);
+                   dmub->hw_funcs.backdoor_load(dmub, &cw0, &cw1);
+               }
 
-               if (params->load_inst_const && dmub->hw_funcs.backdoor_load)
-                       dmub->hw_funcs.backdoor_load(dmub, &cw0, &cw1);
        }
 
        if (dmub->hw_funcs.reset)