@@ -2928,6 +2928,14 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)
29282928 amdgpu_device_set_pg_state (adev , AMD_PG_STATE_UNGATE );
29292929 amdgpu_device_set_cg_state (adev , AMD_CG_STATE_UNGATE );
29302930
2931+ /*
2932+ * Per PMFW team's suggestion, driver needs to handle gfxoff
2933+ * and df cstate features disablement for gpu reset(e.g. Mode1Reset)
2934+ * scenario. Add the missing df cstate disablement here.
2935+ */
2936+ if (amdgpu_dpm_set_df_cstate (adev , DF_CSTATE_DISALLOW ))
2937+ dev_warn (adev -> dev , "Failed to disallow df cstate" );
2938+
29312939 for (i = adev -> num_ip_blocks - 1 ; i >= 0 ; i -- ) {
29322940 if (!adev -> ip_blocks [i ].status .valid )
29332941 continue ;
@@ -5210,7 +5218,6 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
52105218
52115219 reset_context -> job = job ;
52125220 reset_context -> hive = hive ;
5213-
52145221 /*
52155222 * Build list of devices to reset.
52165223 * In case we are in XGMI hive mode, resort the device list
@@ -5337,11 +5344,8 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
53375344 amdgpu_ras_resume (adev );
53385345 } else {
53395346 r = amdgpu_do_asic_reset (device_list_handle , reset_context );
5340- if (r && r == - EAGAIN ) {
5341- set_bit (AMDGPU_SKIP_MODE2_RESET , & reset_context -> flags );
5342- adev -> asic_reset_res = 0 ;
5347+ if (r && r == - EAGAIN )
53435348 goto retry ;
5344- }
53455349
53465350 if (!r && gpu_reset_for_dev_remove )
53475351 goto recover_end ;
@@ -5777,7 +5781,6 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev)
57775781 reset_context .reset_req_dev = adev ;
57785782 set_bit (AMDGPU_NEED_FULL_RESET , & reset_context .flags );
57795783 set_bit (AMDGPU_SKIP_HW_RESET , & reset_context .flags );
5780- set_bit (AMDGPU_SKIP_MODE2_RESET , & reset_context .flags );
57815784
57825785 adev -> no_hw_access = true;
57835786 r = amdgpu_device_pre_asic_reset (adev , & reset_context );
0 commit comments