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

Alex Deucher alexdeucher at gmail.com
Tue Nov 3 08:12:32 PST 2015


On Tue, Nov 3, 2015 at 3:43 AM, Christian König <deathsimple at vodafone.de> wrote:
> 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 at amd.com> as well.

Split into two patches and applied.  Thanks!

Alex

>
> Regards,
> Christian.
>
>
> On 03.11.2015 03:33, Zhou, David(ChunMing) wrote:
>>
>> 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
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list