[PATCH 3/4] drm/amdgpu:only call flr_work under infinite timeout

Christian K├Ânig deathsimple at vodafone.de
Mon May 8 09:11:29 UTC 2017


Am 08.05.2017 um 08:51 schrieb Monk Liu:
> Change-Id: I541aa5109f4fcab06ece4761a09dc7e053ec6837
> Signed-off-by: Monk Liu <Monk.Liu at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c | 15 +++++++++------
>   1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
> index 1cdf5cc..0109b5c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
> @@ -537,12 +537,15 @@ static int xgpu_vi_mailbox_rcv_irq(struct amdgpu_device *adev,
>   {
>   	int r;
>   
> -	/* see what event we get */
> -	r = xgpu_vi_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
> -
> -	/* only handle FLR_NOTIFY now */
> -	if (!r)
> -		schedule_work(&adev->virt.flr_work);
> +	/* trigger gpu-reset by hypervisor only if TDR disbaled */
> +	if (msecs_to_jiffies(amdgpu_lockup_timeout) == MAX_SCHEDULE_TIMEOUT) {

That won't work like this, we use zero for infinite timeout here. See 
amdgpu_fence_driver_init_ring() as well.

Just changing that test to "amdgpu_lockup_timeout == 0" should work.

Christian.

> +		/* see what event we get */
> +		r = xgpu_vi_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
> +
> +		/* only handle FLR_NOTIFY now */
> +		if (!r)
> +			schedule_work(&adev->virt.flr_work);
> +	}
>   
>   	return 0;
>   }




More information about the amd-gfx mailing list