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:
parent
acd89fca67
commit
362c7b91c1
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user