From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Christian_K=F6nig?= Subject: Re: [PATCH] drm/radeon: update lockup tracking when scheduling in empty ring Date: Wed, 19 Jun 2013 16:56:26 +0200 Message-ID: <51C1C69A.6010909@vodafone.de> References: <1371650548-1896-1-git-send-email-j.glisse@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Content-Transfer-Encoding: quoted-printable Return-path: Received: from outgoing.email.vodafone.de (outgoing.email.vodafone.de [139.7.28.128]) by gabe.freedesktop.org (Postfix) with ESMTP id F109CE5D32 for ; Wed, 19 Jun 2013 07:56:31 -0700 (PDT) In-Reply-To: <1371650548-1896-1-git-send-email-j.glisse@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: j.glisse@gmail.com Cc: Jerome Glisse , stable@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Am 19.06.2013 16:02, schrieb j.glisse@gmail.com: > From: Jerome Glisse > > There might be issue with lockup detection when scheduling on an > empty ring that have been sitting idle for a while. Thus update > the lockup tracking data when scheduling new work in an empty ring. > > Signed-off-by: Jerome Glisse > Tested-by: Andy Lutomirski > Cc: stable@vger.kernel.org Reviewed-by: Christian K=F6nig > --- > drivers/gpu/drm/radeon/radeon_ring.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeo= n/radeon_ring.c > index e17faa7..82434018 100644 > --- a/drivers/gpu/drm/radeon/radeon_ring.c > +++ b/drivers/gpu/drm/radeon/radeon_ring.c > @@ -402,6 +402,13 @@ int radeon_ring_alloc(struct radeon_device *rdev, st= ruct radeon_ring *ring, unsi > return -ENOMEM; > /* Align requested size with padding so unlock_commit can > * pad safely */ > + radeon_ring_free_size(rdev, ring); > + if (ring->ring_free_dw =3D=3D (ring->ring_size / 4)) { > + /* This is an empty ring update lockup info to avoid > + * false positive. > + */ > + radeon_ring_lockup_update(ring); > + } > ndw =3D (ndw + ring->align_mask) & ~ring->align_mask; > while (ndw > (ring->ring_free_dw - 1)) { > radeon_ring_free_size(rdev, ring);