Thanks for catching. Reviewed-by: Chunming Zhou <david1.zhou at amd.com>
Regards, David Zhou > -----Original Message----- > From: dri-devel [mailto:dri-devel-bounces at lists.freedesktop.org] On Behalf > Of Dave Airlie > Sent: Tuesday, November 03, 2015 7:35 AM > To: dri-devel at lists.freedesktop.org > Subject: [PATCH] drm/amdgpu: don't oops on failure to load > > From: Dave Airlie <airlied at redhat.com> > > In two places amdgpu tries to tear down something it hasn't initalised when > failing. This is what happens when you enable experimental support on topaz > which then fails in ring init. > > This patch allows it to fail cleanly. > > Signed-off-by: Dave Airlie <airlied at redhat.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 3 +++ > drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 3 ++- > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > index e0b80cc..fec65f0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > @@ -69,6 +69,9 @@ void amdgpu_ctx_fini(struct amdgpu_ctx *ctx) > struct amdgpu_device *adev = ctx->adev; > unsigned i, j; > > + if (!adev) > + return; > + > for (i = 0; i < AMDGPU_MAX_RINGS; ++i) > for (j = 0; j < AMDGPU_CTX_MAX_CS_PENDING; ++j) > fence_put(ctx->rings[i].fences[j]); > diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c > b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c > index 7fa1d7a..d3b9eb7 100644 > --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c > +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c > @@ -462,5 +462,6 @@ int amd_sched_init(struct amd_gpu_scheduler > *sched, > */ > void amd_sched_fini(struct amd_gpu_scheduler *sched) { > - kthread_stop(sched->thread); > + if (sched->thread) > + kthread_stop(sched->thread); > } > -- > 2.5.0 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel