drm/amdgpu: Fix SMU error failure

Wait for HW/PSP initiated ASIC reset to complete before
starting the recovery operations.

v2: Remove typo

Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Andrey Grodzovsky 2020-08-24 11:02:18 -04:00 committed by Alex Deucher
parent acd89fca67
commit 362c7b91c1

View File

@ -4843,14 +4843,32 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev)
{
struct drm_device *dev = pci_get_drvdata(pdev);
struct amdgpu_device *adev = drm_to_adev(dev);
int r;
int r, i;
bool vram_lost;
u32 memsize;
DRM_INFO("PCI error: slot reset callback!!\n");
/* wait for asic to come out of reset */
msleep(500);
pci_restore_state(pdev);
adev->in_pci_err_recovery = true;
/* confirm ASIC came out of reset */
for (i = 0; i < adev->usec_timeout; i++) {
memsize = amdgpu_asic_get_config_memsize(adev);
if (memsize != 0xffffffff)
break;
udelay(1);
}
if (memsize == 0xffffffff) {
r = -ETIME;
goto out;
}
/* TODO Call amdgpu_pre_asic_reset instead */
adev->in_pci_err_recovery = true;
r = amdgpu_device_ip_suspend(adev);
adev->in_pci_err_recovery = false;
if (r)