[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