drm/amd/display: Populate hostvm parameter before DML calculation
authorSung Lee <sung.lee@amd.com>
Fri, 30 Oct 2020 23:31:51 +0000 (19:31 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 16 Nov 2020 17:18:44 +0000 (12:18 -0500)
[Why]
If the system does not have hostvm enabled, disabling it for
DML validation will allow more modes to pass at lower voltage
levels.

[How]
When initializing HostVM save state to hubbub and read back
when populating DML pipes from context.

Signed-off-by: Sung Lee <sung.lee@amd.com>
Acked-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h

index 129f0b6..42fbb5e 100644 (file)
@@ -99,6 +99,8 @@ void dcn21_dchvm_init(struct hubbub *hubbub)
 
                //Poll until HOSTVM_PREFETCH_DONE = 1
                REG_WAIT(DCHVM_RIOMMU_STAT0, HOSTVM_PREFETCH_DONE, 1, 5, 100);
+
+               hubbub->riommu_active = true;
        }
 }
 
index ed3f625..1c88d2e 100644 (file)
@@ -1886,7 +1886,7 @@ static int dcn21_populate_dml_pipes_from_context(
 
        for (i = 0; i < pipe_cnt; i++) {
 
-               pipes[i].pipe.src.hostvm = 1;
+               pipes[i].pipe.src.hostvm = dc->res_pool->hubbub->riommu_active;
                pipes[i].pipe.src.gpuvm = 1;
        }
 
index 5425e92..d9fd28b 100644 (file)
@@ -157,6 +157,7 @@ struct hubbub_funcs {
 struct hubbub {
        const struct hubbub_funcs *funcs;
        struct dc_context *ctx;
+       bool riommu_active;
 };
 
 #endif