[PATCH 2/2] drm/scheduler: stop setting rq to NULL
Christian König
ckoenig.leichtzumerken at gmail.com
Tue Jul 31 06:50:23 UTC 2018
Am 30.07.2018 um 22:51 schrieb Andrey Grodzovsky:
>
>
>
> On 07/30/2018 09:30 AM, Nayan Deshmukh wrote:
>>
>>
>> On Mon, Jul 30, 2018 at 4:33 PM Christian König
>> <ckoenig.leichtzumerken at gmail.com
>> <mailto:ckoenig.leichtzumerken at gmail.com>> wrote:
>>
>> We removed the redundancy of having an extra scheduler field, so we
>> can't set the rq to NULL any more or otherwise won't know which
>> scheduler to use for the cleanup.
>>
>> Just remove the entity from the scheduling list instead.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com
>> <mailto:christian.koenig at amd.com>>
>>
>> Good catch.
>>
>> Acked-by: Nayan Deshmukh <nayan26deshmukh at gmail.com
>> <mailto:nayan26deshmukh at gmail.com>>
>>
>> ---
>> drivers/gpu/drm/scheduler/gpu_scheduler.c | 35
>> +++++++------------------------
>> 1 file changed, 8 insertions(+), 27 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c
>> b/drivers/gpu/drm/scheduler/gpu_scheduler.c
>> index f563e4fbb4b6..1b733229201e 100644
>> --- a/drivers/gpu/drm/scheduler/gpu_scheduler.c
>> +++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c
>> @@ -198,21 +198,6 @@ int drm_sched_entity_init(struct
>> drm_sched_entity *entity,
>> }
>> EXPORT_SYMBOL(drm_sched_entity_init);
>>
>> -/**
>> - * drm_sched_entity_is_initialized - Query if entity is initialized
>> - *
>> - * @sched: Pointer to scheduler instance
>> - * @entity: The pointer to a valid scheduler entity
>> - *
>> - * return true if entity is initialized, false otherwise
>> -*/
>> -static bool drm_sched_entity_is_initialized(struct
>> drm_gpu_scheduler *sched,
>> - struct
>> drm_sched_entity *entity)
>> -{
>> - return entity->rq != NULL &&
>> - entity->rq->sched == sched;
>> -}
>> -
>> /**
>> * drm_sched_entity_is_idle - Check if entity is idle
>> *
>> @@ -224,7 +209,8 @@ static bool drm_sched_entity_is_idle(struct
>> drm_sched_entity *entity)
>> {
>> rmb();
>>
>> - if (!entity->rq || spsc_queue_peek(&entity->job_queue) ==
>> NULL)
>> + if (list_empty(&entity->list) ||
>> + spsc_queue_peek(&entity->job_queue) == NULL)
>> return true;
>>
>> return false;
>> @@ -279,8 +265,6 @@ long drm_sched_entity_flush(struct
>> drm_sched_entity *entity, long timeout)
>> long ret = timeout;
>>
>> sched = entity->rq->sched;
>> - if (!drm_sched_entity_is_initialized(sched, entity))
>> - return ret;
>>
>
> Just to be clear, you remove this function because it's redundant to
> call it?
Yes, exactly.
Christian.
>
> Andrey
>
>> /**
>> * The client will not queue more IBs during this fini,
>> consume existing
>> * queued IBs or discard them on SIGKILL
>> @@ -299,7 +283,7 @@ long drm_sched_entity_flush(struct
>> drm_sched_entity *entity, long timeout)
>> last_user = cmpxchg(&entity->last_user,
>> current->group_leader, NULL);
>> if ((!last_user || last_user == current->group_leader) &&
>> (current->flags & PF_EXITING) && (current->exit_code
>> == SIGKILL))
>> - drm_sched_entity_set_rq(entity, NULL);
>> + drm_sched_rq_remove_entity(entity->rq, entity);
>>
>> return ret;
>> }
>> @@ -320,7 +304,7 @@ void drm_sched_entity_fini(struct
>> drm_sched_entity *entity)
>> struct drm_gpu_scheduler *sched;
>>
>> sched = entity->rq->sched;
>> - drm_sched_entity_set_rq(entity, NULL);
>> + drm_sched_rq_remove_entity(entity->rq, entity);
>>
>> /* Consumption of existing IBs wasn't completed. Forcefully
>> * remove them here.
>> @@ -416,15 +400,12 @@ void drm_sched_entity_set_rq(struct
>> drm_sched_entity *entity,
>> if (entity->rq == rq)
>> return;
>>
>> - spin_lock(&entity->rq_lock);
>> -
>> - if (entity->rq)
>> - drm_sched_rq_remove_entity(entity->rq, entity);
>> + BUG_ON(!rq);
>>
>> + spin_lock(&entity->rq_lock);
>> + drm_sched_rq_remove_entity(entity->rq, entity);
>> entity->rq = rq;
>> - if (rq)
>> - drm_sched_rq_add_entity(rq, entity);
>> -
>> + drm_sched_rq_add_entity(rq, entity);
>> spin_unlock(&entity->rq_lock);
>> }
>> EXPORT_SYMBOL(drm_sched_entity_set_rq);
>> --
>> 2.14.1
>>
>>
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180731/a7e83884/attachment.html>
More information about the dri-devel
mailing list