mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/amd/display: Fix multi-thread writing to 1 state
[Why] Multiple threads were writing back to one global VBA in DC resulting in multiple threads overwriting eachother's data [How] Add an instance of DML (which contains VBA) to each context and change all calls that used dc->dml to use context->dml. Created a seperate copy constructor for linux in a case where there is no access to DC. Signed-off-by: Aidan Wood <Aidan.Wood@amd.com> Reviewed-by: Jun Lei <Jun.Lei@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -823,7 +823,7 @@ bool dce112_validate_bandwidth(
|
||||
dc->bw_vbios,
|
||||
context->res_ctx.pipe_ctx,
|
||||
dc->res_pool->pipe_count,
|
||||
&context->bw.dce))
|
||||
&context->bw_ctx.bw.dce))
|
||||
result = true;
|
||||
|
||||
if (!result)
|
||||
@@ -831,8 +831,8 @@ bool dce112_validate_bandwidth(
|
||||
"%s: Bandwidth validation failed!",
|
||||
__func__);
|
||||
|
||||
if (memcmp(&dc->current_state->bw.dce,
|
||||
&context->bw.dce, sizeof(context->bw.dce))) {
|
||||
if (memcmp(&dc->current_state->bw_ctx.bw.dce,
|
||||
&context->bw_ctx.bw.dce, sizeof(context->bw_ctx.bw.dce))) {
|
||||
|
||||
DC_LOG_BANDWIDTH_CALCS(
|
||||
"%s: finish,\n"
|
||||
@@ -846,34 +846,34 @@ bool dce112_validate_bandwidth(
|
||||
"sclk: %d sclk_sleep: %d yclk: %d blackout_recovery_time_us: %d\n"
|
||||
,
|
||||
__func__,
|
||||
context->bw.dce.nbp_state_change_wm_ns[0].b_mark,
|
||||
context->bw.dce.nbp_state_change_wm_ns[0].a_mark,
|
||||
context->bw.dce.urgent_wm_ns[0].b_mark,
|
||||
context->bw.dce.urgent_wm_ns[0].a_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[0].b_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[0].a_mark,
|
||||
context->bw.dce.nbp_state_change_wm_ns[1].b_mark,
|
||||
context->bw.dce.nbp_state_change_wm_ns[1].a_mark,
|
||||
context->bw.dce.urgent_wm_ns[1].b_mark,
|
||||
context->bw.dce.urgent_wm_ns[1].a_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[1].b_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[1].a_mark,
|
||||
context->bw.dce.nbp_state_change_wm_ns[2].b_mark,
|
||||
context->bw.dce.nbp_state_change_wm_ns[2].a_mark,
|
||||
context->bw.dce.urgent_wm_ns[2].b_mark,
|
||||
context->bw.dce.urgent_wm_ns[2].a_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[2].b_mark,
|
||||
context->bw.dce.stutter_exit_wm_ns[2].a_mark,
|
||||
context->bw.dce.stutter_mode_enable,
|
||||
context->bw.dce.cpuc_state_change_enable,
|
||||
context->bw.dce.cpup_state_change_enable,
|
||||
context->bw.dce.nbp_state_change_enable,
|
||||
context->bw.dce.all_displays_in_sync,
|
||||
context->bw.dce.dispclk_khz,
|
||||
context->bw.dce.sclk_khz,
|
||||
context->bw.dce.sclk_deep_sleep_khz,
|
||||
context->bw.dce.yclk_khz,
|
||||
context->bw.dce.blackout_recovery_time_us);
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[0].b_mark,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[0].a_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[0].b_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[0].a_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[0].b_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[0].a_mark,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[1].b_mark,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[1].a_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[1].b_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[1].a_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[1].b_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[1].a_mark,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[2].b_mark,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_wm_ns[2].a_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[2].b_mark,
|
||||
context->bw_ctx.bw.dce.urgent_wm_ns[2].a_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[2].b_mark,
|
||||
context->bw_ctx.bw.dce.stutter_exit_wm_ns[2].a_mark,
|
||||
context->bw_ctx.bw.dce.stutter_mode_enable,
|
||||
context->bw_ctx.bw.dce.cpuc_state_change_enable,
|
||||
context->bw_ctx.bw.dce.cpup_state_change_enable,
|
||||
context->bw_ctx.bw.dce.nbp_state_change_enable,
|
||||
context->bw_ctx.bw.dce.all_displays_in_sync,
|
||||
context->bw_ctx.bw.dce.dispclk_khz,
|
||||
context->bw_ctx.bw.dce.sclk_khz,
|
||||
context->bw_ctx.bw.dce.sclk_deep_sleep_khz,
|
||||
context->bw_ctx.bw.dce.yclk_khz,
|
||||
context->bw_ctx.bw.dce.blackout_recovery_time_us);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user