• Bokun Zhang's avatar
    drm/amdgpu: Fix SDMA engine resume issue under SRIOV · e5da6519
    Bokun Zhang authored
    
    
    - Under SRIOV, SDMA engine is shared between VFs. Therefore,
      we will not stop SDMA during hw_fini. This is not an issue
      with normal dirver loading and unloading.
    
    - However, when we put the SDMA engine to suspend state and resume
      it, the issue starts to show up. Something could attempt to use
      that SDMA engine to clear or move memory before the engine is
      initialized since the DRM entity is still there.
    
    - Therefore, we will call sdma_v5_2_enable(false) during hw_fini,
      and if we are under SRIOV, we will call sdma_v5_2_enable(true)
      afterwards to allow other VFs to use SDMA. This way, the DRM
      entity of SDMA engine is emptied and it will follow the flow
      of resume code path.
    Tested-by: default avatarBokun Zhang <Bokun.Zhang@amd.com>
    Signed-off-by: default avatarBokun Zhang <Bokun.Zhang@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    e5da6519
sdma_v5_2.c 54.9 KB