|
@@ -5144,7 +5144,7 @@ static int gfx_v8_0_wait_for_idle(void *handle)
|
|
|
return -ETIMEDOUT;
|
|
|
}
|
|
|
|
|
|
-static int gfx_v8_0_check_soft_reset(void *handle)
|
|
|
+static bool gfx_v8_0_check_soft_reset(void *handle)
|
|
|
{
|
|
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
|
|
u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
|
|
@@ -5196,16 +5196,14 @@ static int gfx_v8_0_check_soft_reset(void *handle)
|
|
|
SRBM_SOFT_RESET, SOFT_RESET_SEM, 1);
|
|
|
|
|
|
if (grbm_soft_reset || srbm_soft_reset) {
|
|
|
- adev->ip_block_status[AMD_IP_BLOCK_TYPE_GFX].hang = true;
|
|
|
adev->gfx.grbm_soft_reset = grbm_soft_reset;
|
|
|
adev->gfx.srbm_soft_reset = srbm_soft_reset;
|
|
|
+ return true;
|
|
|
} else {
|
|
|
- adev->ip_block_status[AMD_IP_BLOCK_TYPE_GFX].hang = false;
|
|
|
adev->gfx.grbm_soft_reset = 0;
|
|
|
adev->gfx.srbm_soft_reset = 0;
|
|
|
+ return false;
|
|
|
}
|
|
|
-
|
|
|
- return 0;
|
|
|
}
|
|
|
|
|
|
static void gfx_v8_0_inactive_hqd(struct amdgpu_device *adev,
|
|
@@ -5233,7 +5231,8 @@ static int gfx_v8_0_pre_soft_reset(void *handle)
|
|
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
|
|
u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
|
|
|
|
|
|
- if (!adev->ip_block_status[AMD_IP_BLOCK_TYPE_GFX].hang)
|
|
|
+ if ((!adev->gfx.grbm_soft_reset) &&
|
|
|
+ (!adev->gfx.srbm_soft_reset))
|
|
|
return 0;
|
|
|
|
|
|
grbm_soft_reset = adev->gfx.grbm_soft_reset;
|
|
@@ -5271,7 +5270,8 @@ static int gfx_v8_0_soft_reset(void *handle)
|
|
|
u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
|
|
|
u32 tmp;
|
|
|
|
|
|
- if (!adev->ip_block_status[AMD_IP_BLOCK_TYPE_GFX].hang)
|
|
|
+ if ((!adev->gfx.grbm_soft_reset) &&
|
|
|
+ (!adev->gfx.srbm_soft_reset))
|
|
|
return 0;
|
|
|
|
|
|
grbm_soft_reset = adev->gfx.grbm_soft_reset;
|
|
@@ -5341,7 +5341,8 @@ static int gfx_v8_0_post_soft_reset(void *handle)
|
|
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
|
|
u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
|
|
|
|
|
|
- if (!adev->ip_block_status[AMD_IP_BLOCK_TYPE_GFX].hang)
|
|
|
+ if ((!adev->gfx.grbm_soft_reset) &&
|
|
|
+ (!adev->gfx.srbm_soft_reset))
|
|
|
return 0;
|
|
|
|
|
|
grbm_soft_reset = adev->gfx.grbm_soft_reset;
|