For triggering the dpc event with a single device, we still need
to set the in_link_reset flag and the dpc status.

Signed-off-by: Ce Sun <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index deb41c095b59..0bdb54ab9a53 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -6291,6 +6291,9 @@ pci_ers_result_t amdgpu_pci_error_detected(struct pci_dev 
*pdev, pci_channel_sta
                        amdgpu_reset_set_dpc_status(adev, true);
 
                        mutex_lock(&hive->hive_lock);
+               } else {
+                       if (amdgpu_device_bus_status_check(adev))
+                               amdgpu_reset_set_dpc_status(adev, true);
                }
                memset(&reset_context, 0, sizeof(reset_context));
                INIT_LIST_HEAD(&device_list);
@@ -6411,6 +6414,7 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev 
*pdev)
                list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head)
                        tmp_adev->pcie_reset_ctx.in_link_reset = true;
        } else {
+               adev->pcie_reset_ctx.in_link_reset = true;
                set_bit(AMDGPU_SKIP_HW_RESET, &reset_context.flags);
        }
 
@@ -6467,8 +6471,10 @@ void amdgpu_pci_resume(struct pci_dev *pdev)
                        tmp_adev->pcie_reset_ctx.in_link_reset = false;
                        list_add_tail(&tmp_adev->reset_list, &device_list);
                }
-       } else
+       } else {
+               adev->pcie_reset_ctx.in_link_reset = false;
                list_add_tail(&adev->reset_list, &device_list);
+       }
 
        amdgpu_device_sched_resume(&device_list, NULL, NULL);
        amdgpu_device_gpu_resume(adev, &device_list, false);
-- 
2.34.1

Reply via email to