• Danijel Slivka's avatar
    drm/amd/pm: Ignore initial value in smu response register · 708f2205
    Danijel Slivka authored
    Why:
    If the reg mmMP1_SMN_C2PMSG_90 is being written to during amdgpu driver
    load or driver unload, subsequent amdgpu driver load will fail at
    smu_hw_init. The default of mmMP1_SMN_C2PMSG_90 register at a clean
    environment is 0x1 and if value differs from expected, amdgpu driver
    load will fail.
    
    How to fix:
    Ignore the initial value in smu response register before the first smu
    message is sent,if smc in SMU_FW_INIT state, just proceed further to
    send the message. If register holds an unexpected value after smu message
    was sent set, smc_state to SMU_FW_HANG state and no further smu messages
    will be sent.
    
    v2:
    Set SMU_FW_INIT state at the start of smu hw_init/resume.
    Check smc_fw_state before sending smu message if in hang state skip
    sending message.
    Set SMU_FW_HANG only in case unexpected value is detected
    Signed-off-by: default avatarDanijel Slivka <danijel.slivka@amd.com>
    Reviewed-by: default avatarKenneth Feng <kenneth.feng@amd.com>
    Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
    Reviewed-by: default avatarAsad Kamal <asad.kamal@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    708f2205
amdgpu_smu.c 95.2 KB