From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Christian_K=F6nig?= Subject: Re: [PATCH] drm/radeon: fix possible lack of synchronization btw ttm and other ring Date: Fri, 04 May 2012 09:58:24 +0200 Message-ID: <4FA38C20.4040705@vodafone.de> References: <1336067075-4713-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 D08109E831 for ; Fri, 4 May 2012 00:58:29 -0700 (PDT) In-Reply-To: <1336067075-4713-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 , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org On 03.05.2012 19:44, j.glisse@gmail.com wrote: > From: Jerome Glisse > > We need to sync with the GFX ring as ttm might have schedule bo move > on it and new command scheduled for other ring need to wait for bo > data to be in place. > > Signed-off-by: Jerome Glisse Reviewed-by: Christian K=F6nig > --- > drivers/gpu/drm/radeon/radeon_cs.c | 12 ++++++------ > include/drm/radeon_drm.h | 1 - > 2 files changed, 6 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/= radeon_cs.c > index 82f2e7b0..e5f8e17 100644 > --- a/drivers/gpu/drm/radeon/radeon_cs.c > +++ b/drivers/gpu/drm/radeon/radeon_cs.c > @@ -122,15 +122,15 @@ static int radeon_cs_sync_rings(struct radeon_cs_pa= rser *p) > int i, r; > > for (i =3D 0; i< p->nrelocs; i++) { > + struct radeon_fence *fence; > + > if (!p->relocs[i].robj || !p->relocs[i].robj->tbo.sync_obj) > continue; > > - if (!(p->relocs[i].flags& RADEON_RELOC_DONT_SYNC)) { > - struct radeon_fence *fence =3D p->relocs[i].robj->tbo.sync_obj; > - if (fence->ring !=3D p->ring&& !radeon_fence_signaled(fence)) { > - sync_to_ring[fence->ring] =3D true; > - need_sync =3D true; > - } > + fence =3D p->relocs[i].robj->tbo.sync_obj; > + if (fence->ring !=3D p->ring&& !radeon_fence_signaled(fence)) { > + sync_to_ring[fence->ring] =3D true; > + need_sync =3D true; > } > } > > diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h > index 7c491b4..5805686 100644 > --- a/include/drm/radeon_drm.h > +++ b/include/drm/radeon_drm.h > @@ -926,7 +926,6 @@ struct drm_radeon_cs_chunk { > }; > > /* drm_radeon_cs_reloc.flags */ > -#define RADEON_RELOC_DONT_SYNC 0x01 > > struct drm_radeon_cs_reloc { > uint32_t handle;