• Chengming Gui's avatar
    drm/amdgpu: fix pstate setting issue · 79610d30
    Chengming Gui authored
    [WHY]
    0, original pstate X
    1, ctx_A_create -> ctx_A->stable_pstate = X
    2, ctx_A_set_pstate (Y) -> current pstate is Y (PEAK or STANDARD)
    3, ctx_B_create -> ctx_B->stable_pstate =  Y
    4, ctx_A_destroy -> restore pstate to X
    5, ctx_B_destroy -> restore pstate to Y
    Above sequence will cause final pstate is wrong (Y), should be original X.
    
    [HOW]
    When ctx_B create,
    if  ctx_A touched pstate setting
    (not auto, stable_pstate_ctx != NULL),
    set ctx_B->stable_pstate the same value as ctx_A saved,
    if stable_pstate_ctx == NULL,
    fetch current pstate to fill
    ctx_B->stable_pstate.
    Signed-off-by: default avatarChengming Gui <Jack.Gui@amd.com>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    79610d30
amdgpu_ctx.c 23.5 KB