Message ID | 20190313235211.28995-2-eric@anholt.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/4] drm/v3d: Add a note about OOM vs FRDONE, which may be racing on v3.3. | expand |
On Wed, 13 Mar 2019 at 23:52, Eric Anholt <eric@anholt.net> wrote: > > We have another thing called the "done fence" that tracks when the > scheduler considers the job done, and having the shared name was > confusing. > > Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Dave Emett <david.emett@broadcom.com> > --- > drivers/gpu/drm/v3d/v3d_drv.h | 4 ++-- > drivers/gpu/drm/v3d/v3d_gem.c | 6 +++--- > drivers/gpu/drm/v3d/v3d_irq.c | 6 +++--- > drivers/gpu/drm/v3d/v3d_sched.c | 12 ++++++------ > 4 files changed, 14 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h > index a128cd5ee6ea..284ced85ff02 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.h > +++ b/drivers/gpu/drm/v3d/v3d_drv.h > @@ -169,7 +169,7 @@ struct v3d_job { > struct dma_fence *in_fence; > > /* v3d fence to be signaled by IRQ handler when the job is complete. */ > - struct dma_fence *done_fence; > + struct dma_fence *irq_fence; > > /* GPU virtual addresses of the start/end of the CL job. */ > u32 start, end; > @@ -216,7 +216,7 @@ struct v3d_tfu_job { > struct dma_fence *in_fence; > > /* v3d fence to be signaled by IRQ handler when the job is complete. */ > - struct dma_fence *done_fence; > + struct dma_fence *irq_fence; > > struct v3d_dev *v3d; > > diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c > index 8ebbc544c61e..b06bed0835c9 100644 > --- a/drivers/gpu/drm/v3d/v3d_gem.c > +++ b/drivers/gpu/drm/v3d/v3d_gem.c > @@ -339,8 +339,8 @@ v3d_exec_cleanup(struct kref *ref) > dma_fence_put(exec->bin.in_fence); > dma_fence_put(exec->render.in_fence); > > - dma_fence_put(exec->bin.done_fence); > - dma_fence_put(exec->render.done_fence); > + dma_fence_put(exec->bin.irq_fence); > + dma_fence_put(exec->render.irq_fence); > > dma_fence_put(exec->bin_done_fence); > dma_fence_put(exec->render_done_fence); > @@ -373,7 +373,7 @@ v3d_tfu_job_cleanup(struct kref *ref) > unsigned int i; > > dma_fence_put(job->in_fence); > - dma_fence_put(job->done_fence); > + dma_fence_put(job->irq_fence); > > for (i = 0; i < ARRAY_SIZE(job->bo); i++) { > if (job->bo[i]) > diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c > index a09442ec7297..044062607577 100644 > --- a/drivers/gpu/drm/v3d/v3d_irq.c > +++ b/drivers/gpu/drm/v3d/v3d_irq.c > @@ -96,7 +96,7 @@ v3d_irq(int irq, void *arg) > > if (intsts & V3D_INT_FLDONE) { > struct v3d_fence *fence = > - to_v3d_fence(v3d->bin_job->bin.done_fence); > + to_v3d_fence(v3d->bin_job->bin.irq_fence); > > trace_v3d_bcl_irq(&v3d->drm, fence->seqno); > dma_fence_signal(&fence->base); > @@ -105,7 +105,7 @@ v3d_irq(int irq, void *arg) > > if (intsts & V3D_INT_FRDONE) { > struct v3d_fence *fence = > - to_v3d_fence(v3d->render_job->render.done_fence); > + to_v3d_fence(v3d->render_job->render.irq_fence); > > trace_v3d_rcl_irq(&v3d->drm, fence->seqno); > dma_fence_signal(&fence->base); > @@ -141,7 +141,7 @@ v3d_hub_irq(int irq, void *arg) > > if (intsts & V3D_HUB_INT_TFUC) { > struct v3d_fence *fence = > - to_v3d_fence(v3d->tfu_job->done_fence); > + to_v3d_fence(v3d->tfu_job->irq_fence); > > trace_v3d_tfu_irq(&v3d->drm, fence->seqno); > dma_fence_signal(&fence->base); > diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c > index d0c68b7c8b41..e740f3b99aa5 100644 > --- a/drivers/gpu/drm/v3d/v3d_sched.c > +++ b/drivers/gpu/drm/v3d/v3d_sched.c > @@ -156,9 +156,9 @@ static struct dma_fence *v3d_job_run(struct drm_sched_job *sched_job) > if (IS_ERR(fence)) > return NULL; > > - if (job->done_fence) > - dma_fence_put(job->done_fence); > - job->done_fence = dma_fence_get(fence); > + if (job->irq_fence) > + dma_fence_put(job->irq_fence); > + job->irq_fence = dma_fence_get(fence); > > trace_v3d_submit_cl(dev, q == V3D_RENDER, to_v3d_fence(fence)->seqno, > job->start, job->end); > @@ -199,9 +199,9 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job) > return NULL; > > v3d->tfu_job = job; > - if (job->done_fence) > - dma_fence_put(job->done_fence); > - job->done_fence = dma_fence_get(fence); > + if (job->irq_fence) > + dma_fence_put(job->irq_fence); > + job->irq_fence = dma_fence_get(fence); > > trace_v3d_submit_tfu(dev, to_v3d_fence(fence)->seqno); > > -- > 2.20.1 >
diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h index a128cd5ee6ea..284ced85ff02 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h @@ -169,7 +169,7 @@ struct v3d_job { struct dma_fence *in_fence; /* v3d fence to be signaled by IRQ handler when the job is complete. */ - struct dma_fence *done_fence; + struct dma_fence *irq_fence; /* GPU virtual addresses of the start/end of the CL job. */ u32 start, end; @@ -216,7 +216,7 @@ struct v3d_tfu_job { struct dma_fence *in_fence; /* v3d fence to be signaled by IRQ handler when the job is complete. */ - struct dma_fence *done_fence; + struct dma_fence *irq_fence; struct v3d_dev *v3d; diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c index 8ebbc544c61e..b06bed0835c9 100644 --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c @@ -339,8 +339,8 @@ v3d_exec_cleanup(struct kref *ref) dma_fence_put(exec->bin.in_fence); dma_fence_put(exec->render.in_fence); - dma_fence_put(exec->bin.done_fence); - dma_fence_put(exec->render.done_fence); + dma_fence_put(exec->bin.irq_fence); + dma_fence_put(exec->render.irq_fence); dma_fence_put(exec->bin_done_fence); dma_fence_put(exec->render_done_fence); @@ -373,7 +373,7 @@ v3d_tfu_job_cleanup(struct kref *ref) unsigned int i; dma_fence_put(job->in_fence); - dma_fence_put(job->done_fence); + dma_fence_put(job->irq_fence); for (i = 0; i < ARRAY_SIZE(job->bo); i++) { if (job->bo[i]) diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c index a09442ec7297..044062607577 100644 --- a/drivers/gpu/drm/v3d/v3d_irq.c +++ b/drivers/gpu/drm/v3d/v3d_irq.c @@ -96,7 +96,7 @@ v3d_irq(int irq, void *arg) if (intsts & V3D_INT_FLDONE) { struct v3d_fence *fence = - to_v3d_fence(v3d->bin_job->bin.done_fence); + to_v3d_fence(v3d->bin_job->bin.irq_fence); trace_v3d_bcl_irq(&v3d->drm, fence->seqno); dma_fence_signal(&fence->base); @@ -105,7 +105,7 @@ v3d_irq(int irq, void *arg) if (intsts & V3D_INT_FRDONE) { struct v3d_fence *fence = - to_v3d_fence(v3d->render_job->render.done_fence); + to_v3d_fence(v3d->render_job->render.irq_fence); trace_v3d_rcl_irq(&v3d->drm, fence->seqno); dma_fence_signal(&fence->base); @@ -141,7 +141,7 @@ v3d_hub_irq(int irq, void *arg) if (intsts & V3D_HUB_INT_TFUC) { struct v3d_fence *fence = - to_v3d_fence(v3d->tfu_job->done_fence); + to_v3d_fence(v3d->tfu_job->irq_fence); trace_v3d_tfu_irq(&v3d->drm, fence->seqno); dma_fence_signal(&fence->base); diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c index d0c68b7c8b41..e740f3b99aa5 100644 --- a/drivers/gpu/drm/v3d/v3d_sched.c +++ b/drivers/gpu/drm/v3d/v3d_sched.c @@ -156,9 +156,9 @@ static struct dma_fence *v3d_job_run(struct drm_sched_job *sched_job) if (IS_ERR(fence)) return NULL; - if (job->done_fence) - dma_fence_put(job->done_fence); - job->done_fence = dma_fence_get(fence); + if (job->irq_fence) + dma_fence_put(job->irq_fence); + job->irq_fence = dma_fence_get(fence); trace_v3d_submit_cl(dev, q == V3D_RENDER, to_v3d_fence(fence)->seqno, job->start, job->end); @@ -199,9 +199,9 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job) return NULL; v3d->tfu_job = job; - if (job->done_fence) - dma_fence_put(job->done_fence); - job->done_fence = dma_fence_get(fence); + if (job->irq_fence) + dma_fence_put(job->irq_fence); + job->irq_fence = dma_fence_get(fence); trace_v3d_submit_tfu(dev, to_v3d_fence(fence)->seqno);
We have another thing called the "done fence" that tracks when the scheduler considers the job done, and having the shared name was confusing. Signed-off-by: Eric Anholt <eric@anholt.net> --- drivers/gpu/drm/v3d/v3d_drv.h | 4 ++-- drivers/gpu/drm/v3d/v3d_gem.c | 6 +++--- drivers/gpu/drm/v3d/v3d_irq.c | 6 +++--- drivers/gpu/drm/v3d/v3d_sched.c | 12 ++++++------ 4 files changed, 14 insertions(+), 14 deletions(-)