Messages in this thread Patch in this message | | | From | "Koenig, Christian" <> | Subject | Re: [PATCH] drm/sched: Always trace the dependencies we wait on, to fix a race. | Date | Fri, 7 Dec 2018 19:46:31 +0000 |
| |
Am 07.12.18 um 20:16 schrieb Eric Anholt: > The entity->dependency can go away completely once we've called > drm_sched_entity_add_dependency_cb() (if the cb is called before we > get around to tracing). The tracepoint is more useful if we trace > every dependency instead of just ones that get callbacks installed, > anyway, so just do that. > > Fixes any easy-to-produce OOPS when tracing the scheduler on V3D with > "perf record -a -e gpu_scheduler:.\* glxgears" and DEBUG_SLAB enabled. > > Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Christian König <christian.koenig@amd.com>
Going to pick that up for upstream and will add with a CC: stable.
Thanks, Christian.
> --- > drivers/gpu/drm/scheduler/sched_entity.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c > index 4463d3826ecb..e2942c9a11a7 100644 > --- a/drivers/gpu/drm/scheduler/sched_entity.c > +++ b/drivers/gpu/drm/scheduler/sched_entity.c > @@ -440,13 +440,10 @@ struct drm_sched_job *drm_sched_entity_pop_job(struct drm_sched_entity *entity) > > while ((entity->dependency = > sched->ops->dependency(sched_job, entity))) { > + trace_drm_sched_job_wait_dep(sched_job, entity->dependency); > > - if (drm_sched_entity_add_dependency_cb(entity)) { > - > - trace_drm_sched_job_wait_dep(sched_job, > - entity->dependency); > + if (drm_sched_entity_add_dependency_cb(entity)) > return NULL; > - } > } > > /* skip jobs from entity that marked guilty */
| |