• YiPeng Chai's avatar
    drm/amdgpu: TA unload messages are not actually sent to psp when amdgpu is uninstalled · fac53471
    YiPeng Chai authored
    V1:
      The psp_cmd_submit_buf function is called by psp_hw_fini to send
    TA unload messages to psp to terminate ras, asd and tmr. But when
    amdgpu is uninstalled, drm_dev_unplug is called earlier than
    psp_hw_fini in amdgpu_pci_remove, the calling order as follows:
    static void amdgpu_pci_remove(struct pci_dev *pdev) {
    	drm_dev_unplug
    	......
    	amdgpu_driver_unload_kms->amdgpu_device_fini_hw->...
    		->.hw_fini->psp_hw_fini->...
    		->psp_ta_unload->psp_cmd_submit_buf
    	......
    }
    The program will return when calling drm_dev_enter in psp_cmd_submit_buf.
    
    So the call to drm_dev_enter in psp_cmd_submit_buf should be
    removed, so that the TA unload messages can be sent to the psp
    when amdgpu is uninstalled.
    
    V2:
    1. Restore psp_cmd_submit_buf to its original code.
    2. Move drm_dev_unplug call after amdgpu_driver_unload_kms in
       amdgpu_pci_remove.
    3. Since amdgpu_device_fini_hw is called by amdgpu_driver_unload_kms,
       remove the unplug check to release device mmio resource in
       amdgpu_device_fini_hw before calling drm_dev_unplug.
    Signed-off-by: default avatarYiPeng Chai <YiPeng.Chai@amd.com>
    Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    fac53471
amdgpu_device.c 159 KB