Re: [PATCH] drm/amdgpu: don't oops on failure to load

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We handle the scheduler and amdgpu as two different components (the scheduler could be used by other drivers as well). So would be nice to have two patches for this.

But that's only nice to have, either way patch is Reviewed-by: Christian König <christian.koenig@xxxxxxx> as well.

Regards,
Christian.

On 03.11.2015 03:33, Zhou, David(ChunMing) wrote:
Thanks for catching. Reviewed-by: Chunming Zhou <david1.zhou@xxxxxxx>

Regards,
David Zhou

-----Original Message-----
From: dri-devel [mailto:dri-devel-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf
Of Dave Airlie
Sent: Tuesday, November 03, 2015 7:35 AM
To: dri-devel@xxxxxxxxxxxxxxxxxxxxx
Subject: [PATCH] drm/amdgpu: don't oops on failure to load

From: Dave Airlie <airlied@xxxxxxxxxx>

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@xxxxxxxxxx>
---
  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@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux