[PATCH] drm/scheduler: fix setting the priorty for entities
Dieter Nützel
Dieter at nuetzel-hh.de
Sat Aug 4 04:18:00 UTC 2018
Am 04.08.2018 06:12, schrieb Dieter Nützel:
> Am 04.08.2018 05:27, schrieb Dieter Nützel:
>> Am 03.08.2018 13:09, schrieb Christian König:
>>> Am 03.08.2018 um 03:08 schrieb Dieter Nützel:
>>>> Hello Christian, AMD guys,
>>>>
>>>> this one _together_ with these series
>>>> [PATCH 1/7] drm/amdgpu: use new scheduler load balancing for VMs
>>>> https://lists.freedesktop.org/archives/amd-gfx/2018-August/024802.html
>>>>
>>>> on top of
>>>> amd-staging-drm-next 53d5f1e4a6d9
>>>>
>>>> freeze whole system (Intel Xeon X3470, RX580) during _first_ mouse
>>>> move.
>>>> Same for sddm login or first move in KDE Plasma 5.
>>>> NO logs so far. - Expected?
>>>
>>> Not even remotely, can you double check which patch from the "[PATCH
>>> 1/7] drm/amdgpu: use new scheduler load balancing for VMs" series is
>>> causing the issue?
>>
>> Ups,
>>
>> _both_ 'series' on top of
>>
>> bf1fd52b0632 (origin/amd-staging-drm-next) drm/amdgpu: move gem
>> definitions into amdgpu_gem header
>>
>> works without a hitch.
>>
>> But I have new (latest) µcode from openSUSE Tumbleweed.
>> kernel-firmware-20180730-35.1.src.rpm
>>
>> Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
>
> I take this back.
>
> Last much longer.
> Mouse freeze.
> Could grep a dmesg with remote phone ;-)
>
> See the attachment.
> Dieter
Argh, shi...
wrong dmesg version.
Should be this one. (For sure...)
Dieter
>>
>>> Thanks,
>>> Christian.
>>>
>>>>
>>>> Greetings,
>>>> Dieter
>>>>
>>>> Am 01.08.2018 16:27, schrieb Christian König:
>>>>> Since we now deal with multiple rq we need to update all of them,
>>>>> not
>>>>> just the current one.
>>>>>
>>>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>>>> ---
>>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 3 +--
>>>>> drivers/gpu/drm/scheduler/gpu_scheduler.c | 36
>>>>> ++++++++++++++++++++-----------
>>>>> include/drm/gpu_scheduler.h | 5 ++---
>>>>> 3 files changed, 26 insertions(+), 18 deletions(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
>>>>> index df6965761046..9fcc14e2dfcf 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
>>>>> @@ -407,12 +407,11 @@ void amdgpu_ctx_priority_override(struct
>>>>> amdgpu_ctx *ctx,
>>>>> for (i = 0; i < adev->num_rings; i++) {
>>>>> ring = adev->rings[i];
>>>>> entity = &ctx->rings[i].entity;
>>>>> - rq = &ring->sched.sched_rq[ctx_prio];
>>>>>
>>>>> if (ring->funcs->type == AMDGPU_RING_TYPE_KIQ)
>>>>> continue;
>>>>>
>>>>> - drm_sched_entity_set_rq(entity, rq);
>>>>> + drm_sched_entity_set_priority(entity, ctx_prio);
>>>>> }
>>>>> }
>>>>>
>>>>> diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c
>>>>> b/drivers/gpu/drm/scheduler/gpu_scheduler.c
>>>>> index 05dc6ecd4003..85908c7f913e 100644
>>>>> --- a/drivers/gpu/drm/scheduler/gpu_scheduler.c
>>>>> +++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c
>>>>> @@ -419,29 +419,39 @@ static void drm_sched_entity_clear_dep(struct
>>>>> dma_fence *f, struct dma_fence_cb
>>>>> }
>>>>>
>>>>> /**
>>>>> - * drm_sched_entity_set_rq - Sets the run queue for an entity
>>>>> + * drm_sched_entity_set_rq_priority - helper for
>>>>> drm_sched_entity_set_priority
>>>>> + */
>>>>> +static void drm_sched_entity_set_rq_priority(struct drm_sched_rq
>>>>> **rq,
>>>>> + enum drm_sched_priority priority)
>>>>> +{
>>>>> + *rq = &(*rq)->sched->sched_rq[priority];
>>>>> +}
>>>>> +
>>>>> +/**
>>>>> + * drm_sched_entity_set_priority - Sets priority of the entity
>>>>> *
>>>>> * @entity: scheduler entity
>>>>> - * @rq: scheduler run queue
>>>>> + * @priority: scheduler priority
>>>>> *
>>>>> - * Sets the run queue for an entity and removes the entity from
>>>>> the previous
>>>>> - * run queue in which was present.
>>>>> + * Update the priority of runqueus used for the entity.
>>>>> */
>>>>> -void drm_sched_entity_set_rq(struct drm_sched_entity *entity,
>>>>> - struct drm_sched_rq *rq)
>>>>> +void drm_sched_entity_set_priority(struct drm_sched_entity
>>>>> *entity,
>>>>> + enum drm_sched_priority priority)
>>>>> {
>>>>> - if (entity->rq == rq)
>>>>> - return;
>>>>> -
>>>>> - BUG_ON(!rq);
>>>>> + unsigned int i;
>>>>>
>>>>> spin_lock(&entity->rq_lock);
>>>>> +
>>>>> + for (i = 0; i < entity->num_rq_list; ++i)
>>>>> + drm_sched_entity_set_rq_priority(&entity->rq_list[i], priority);
>>>>> +
>>>>> drm_sched_rq_remove_entity(entity->rq, entity);
>>>>> - entity->rq = rq;
>>>>> - drm_sched_rq_add_entity(rq, entity);
>>>>> + drm_sched_entity_set_rq_priority(&entity->rq, priority);
>>>>> + drm_sched_rq_add_entity(entity->rq, entity);
>>>>> +
>>>>> spin_unlock(&entity->rq_lock);
>>>>> }
>>>>> -EXPORT_SYMBOL(drm_sched_entity_set_rq);
>>>>> +EXPORT_SYMBOL(drm_sched_entity_set_priority);
>>>>>
>>>>> /**
>>>>> * drm_sched_dependency_optimized
>>>>> diff --git a/include/drm/gpu_scheduler.h
>>>>> b/include/drm/gpu_scheduler.h
>>>>> index 0c4cfe689d4c..22c0f88f7d8f 100644
>>>>> --- a/include/drm/gpu_scheduler.h
>>>>> +++ b/include/drm/gpu_scheduler.h
>>>>> @@ -298,9 +298,8 @@ void drm_sched_entity_fini(struct
>>>>> drm_sched_entity *entity);
>>>>> void drm_sched_entity_destroy(struct drm_sched_entity *entity);
>>>>> void drm_sched_entity_push_job(struct drm_sched_job *sched_job,
>>>>> struct drm_sched_entity *entity);
>>>>> -void drm_sched_entity_set_rq(struct drm_sched_entity *entity,
>>>>> - struct drm_sched_rq *rq);
>>>>> -
>>>>> +void drm_sched_entity_set_priority(struct drm_sched_entity
>>>>> *entity,
>>>>> + enum drm_sched_priority priority);
>>>>> struct drm_sched_fence *drm_sched_fence_create(
>>>>> struct drm_sched_entity *s_entity, void *owner);
>>>>> void drm_sched_fence_scheduled(struct drm_sched_fence *fence);
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dmesg-4.18.0-rc1-1.g7262353-default+04.08.log
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180804/46c0299f/attachment-0001.ksh>
More information about the dri-devel
mailing list