1. 27 Aug, 2019 3 commits
    • Dan Carpenter's avatar
      drm/amd/powerplay: Fix an off by one in navi10_get_smu_msg_index() · 5556b9fe
      Dan Carpenter authored
      The navi10_message_map[] array has SMU_MSG_MAX_COUNT elements so the ">"
      has to be changed to ">=" to prevent reading one element beyond the end
      of the array.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      5556b9fe
    • Andrey Grodzovsky's avatar
      drm/amd/display: Fix error message · ed8a5fb2
      Andrey Grodzovsky authored
      Since reservation_object_wait_timeout_rcu is called with
      interruptable set to false it's wrong to say
      'or interrupted' in the error message.
      Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
      Reviewed-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      ed8a5fb2
    • Xiaojie Yuan's avatar
      drm/amdgpu: add dummy read for some GCVM status registers · 53499173
      Xiaojie Yuan authored
      The GRBM register interface is now capable of bursting 1 cycle per
      register wr->wr, wr->rd much faster than previous muticycle per
      transaction done interface.  This has caused a problem where status
      registers requiring HW to update have a 1 cycle delay, due to the
      register update having to go through GRBM.
      
      SW may operate on an incorrect value if they write a register and
      immediately check the corresponding status register.
      
      Registers requiring HW to clear or set fields may be delayed by 1 cycle.
      For example,
      
      1. write VM_INVALIDATE_ENG0_REQ mask = 5a
      2. read VM_INVALIDATE_ENG0_ACK till the ack is same as the request mask = 5a
          a. HW will reset VM_INVALIDATE_ENG0_ACK = 0 until invalidation is complete
      3. write VM_INVALIDATE_ENG0_REQ mask = 5a
      4. read VM_INVALIDATE_ENG0_ACK till the ack is same as the request mask = 5a
          a. First read of VM_INVALIDATE_ENG0_ACK = 5a instead of 0
          b. Second read of VM_INVALIDATE_ENG0_ACK = 0 because
             the remote GRBM h/w register takes one extra cycle to be cleared
          c. In this case, SW will see a false ACK if they exit on first read
      
      Affected registers (only GC variant)  |  Recommended Dummy Read
      --------------------------------------+----------------------------
      VM_INVALIDATE_ENG*_ACK                |  VM_INVALIDATE_ENG*_REQ
      VM_L2_STATUS                          |  VM_L2_STATUS
      VM_L2_PROTECTION_FAULT_STATUS         |  VM_L2_PROTECTION_FAULT_STATUS
      VM_L2_PROTECTION_FAULT_ADDR_HI/LO32   |  VM_L2_PROTECTION_FAULT_ADDR_HI/LO32
      VM_L2_IH_LOG_BUSY                     |  VM_L2_IH_LOG_BUSY
      MC_VM_L2_PERFCOUNTER_HI/LO            |  MC_VM_L2_PERFCOUNTER_HI/LO
      ATC_L2_PERFCOUNTER_HI/LO              |  ATC_L2_PERFCOUNTER_HI/LO
      ATC_L2_PERFCOUNTER2_HI/LO             |  ATC_L2_PERFCOUNTER2_HI/LO
      Signed-off-by: default avatarXiaojie Yuan <xiaojie.yuan@amd.com>
      Reviewed-by: default avatarJack Xiao <Jack.Xiao@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      53499173
  2. 23 Aug, 2019 37 commits