@@ -3504,9 +3504,6 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
35043504 }
35053505 }
35063506
3507- amdgpu_device_set_pg_state (adev , AMD_PG_STATE_UNGATE );
3508- amdgpu_device_set_cg_state (adev , AMD_CG_STATE_UNGATE );
3509-
35103507 amdgpu_amdkfd_suspend (adev , true);
35113508 amdgpu_amdkfd_teardown_processes (adev );
35123509 amdgpu_userq_suspend (adev );
@@ -4902,6 +4899,9 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
49024899 amdgpu_virt_fini_data_exchange (adev );
49034900 }
49044901
4902+ amdgpu_device_set_pg_state (adev , AMD_PG_STATE_UNGATE );
4903+ amdgpu_device_set_cg_state (adev , AMD_CG_STATE_UNGATE );
4904+
49054905 /* disable all interrupts */
49064906 amdgpu_irq_disable_all (adev );
49074907 if (adev -> mode_info .mode_config_initialized ) {
@@ -4924,7 +4924,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
49244924 * before ip_fini_early to prevent kfd locking refcount issues by calling
49254925 * amdgpu_amdkfd_suspend()
49264926 */
4927- if (drm_dev_is_unplugged ( adev_to_drm ( adev ) ))
4927+ if (pci_dev_is_disconnected ( adev -> pdev ))
49284928 amdgpu_amdkfd_device_fini_sw (adev );
49294929
49304930 amdgpu_device_ip_fini_early (adev );
@@ -4936,7 +4936,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
49364936
49374937 amdgpu_gart_dummy_page_fini (adev );
49384938
4939- if (drm_dev_is_unplugged ( adev_to_drm ( adev ) ))
4939+ if (pci_dev_is_disconnected ( adev -> pdev ))
49404940 amdgpu_device_unmap_mmio (adev );
49414941
49424942}
@@ -5733,6 +5733,9 @@ int amdgpu_device_mode1_reset(struct amdgpu_device *adev)
57335733 /* enable mmio access after mode 1 reset completed */
57345734 adev -> no_hw_access = false;
57355735
5736+ /* ensure no_hw_access is updated before we access hw */
5737+ smp_mb ();
5738+
57365739 amdgpu_device_load_pci_state (adev -> pdev );
57375740 ret = amdgpu_psp_wait_for_bootloader (adev );
57385741 if (ret )
@@ -7357,6 +7360,9 @@ void amdgpu_device_halt(struct amdgpu_device *adev)
73577360 amdgpu_xcp_dev_unplug (adev );
73587361 drm_dev_unplug (ddev );
73597362
7363+ amdgpu_device_set_pg_state (adev , AMD_PG_STATE_UNGATE );
7364+ amdgpu_device_set_cg_state (adev , AMD_CG_STATE_UNGATE );
7365+
73607366 amdgpu_irq_disable_all (adev );
73617367
73627368 amdgpu_fence_driver_hw_fini (adev );
0 commit comments