<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Change is Reviewed-by: Andrey Grodzovsky
<a class="moz-txt-link-rfc2396E" href="mailto:andrey.grodzovsky@amd.com"><andrey.grodzovsky@amd.com></a><br>
</p>
<p>Andrey<br>
</p>
<br>
<div class="moz-cite-prefix">On 07/31/2018 02:50 AM, Christian König
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:fdbf8d08-2cf8-82e8-fc63-7f800336f491@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div class="moz-cite-prefix">Am 30.07.2018 um 22:51 schrieb Andrey
Grodzovsky:<br>
</div>
<blockquote type="cite"
cite="mid:ad22767b-25ea-841a-1af9-c5894b93184c@amd.com">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 07/30/2018 09:30 AM, Nayan
Deshmukh wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAFd4ddzC3f1HC+fmmD2wSOcC96SHpi=5-mnwC7EWaknErKOpQg@mail.gmail.com">
<div dir="ltr"><br>
<br>
<div class="gmail_quote">
<div dir="ltr">On Mon, Jul 30, 2018 at 4:33 PM Christian
König <<a
href="mailto:ckoenig.leichtzumerken@gmail.com"
target="_blank" moz-do-not-send="true">ckoenig.leichtzumerken@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">We
removed the redundancy of having an extra scheduler
field, so we<br>
can't set the rq to NULL any more or otherwise won't
know which<br>
scheduler to use for the cleanup.<br>
<br>
Just remove the entity from the scheduling list instead.<br>
<br>
Signed-off-by: Christian König <<a
href="mailto:christian.koenig@amd.com" target="_blank"
moz-do-not-send="true">christian.koenig@amd.com</a>><br>
</blockquote>
<div>Good catch.<br>
<br>
</div>
<div>Acked-by: Nayan Deshmukh <<a
href="mailto:nayan26deshmukh@gmail.com"
target="_blank" moz-do-not-send="true">nayan26deshmukh@gmail.com</a>>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex"> ---<br>
drivers/gpu/drm/scheduler/gpu_scheduler.c | 35
+++++++------------------------<br>
1 file changed, 8 insertions(+), 27 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c
b/drivers/gpu/drm/scheduler/gpu_scheduler.c<br>
index f563e4fbb4b6..1b733229201e 100644<br>
--- a/drivers/gpu/drm/scheduler/gpu_scheduler.c<br>
+++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c<br>
@@ -198,21 +198,6 @@ int drm_sched_entity_init(struct
drm_sched_entity *entity,<br>
}<br>
EXPORT_SYMBOL(drm_sched_entity_init);<br>
<br>
-/**<br>
- * drm_sched_entity_is_initialized - Query if entity is
initialized<br>
- *<br>
- * @sched: Pointer to scheduler instance<br>
- * @entity: The pointer to a valid scheduler entity<br>
- *<br>
- * return true if entity is initialized, false
otherwise<br>
-*/<br>
-static bool drm_sched_entity_is_initialized(struct
drm_gpu_scheduler *sched,<br>
- struct
drm_sched_entity *entity)<br>
-{<br>
- return entity->rq != NULL &&<br>
- entity->rq->sched == sched;<br>
-}<br>
-<br>
/**<br>
* drm_sched_entity_is_idle - Check if entity is idle<br>
*<br>
@@ -224,7 +209,8 @@ static bool
drm_sched_entity_is_idle(struct drm_sched_entity
*entity)<br>
{<br>
rmb();<br>
<br>
- if (!entity->rq ||
spsc_queue_peek(&entity->job_queue) == NULL)<br>
+ if (list_empty(&entity->list) ||<br>
+ spsc_queue_peek(&entity->job_queue)
== NULL)<br>
return true;<br>
<br>
return false;<br>
@@ -279,8 +265,6 @@ long drm_sched_entity_flush(struct
drm_sched_entity *entity, long timeout)<br>
long ret = timeout;<br>
<br>
sched = entity->rq->sched;<br>
- if (!drm_sched_entity_is_initialized(sched,
entity))<br>
- return ret;<br>
</blockquote>
</div>
</div>
</blockquote>
<br>
Just to be clear, you remove this function because it's
redundant to call it?<br>
</blockquote>
<br>
Yes, exactly.<br>
<br>
Christian.<br>
<br>
<blockquote type="cite"
cite="mid:ad22767b-25ea-841a-1af9-c5894b93184c@amd.com"> <br>
Andrey<br>
<br>
<blockquote type="cite"
cite="mid:CAFd4ddzC3f1HC+fmmD2wSOcC96SHpi=5-mnwC7EWaknErKOpQg@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
/**<br>
* The client will not queue more IBs during
this fini, consume existing<br>
* queued IBs or discard them on SIGKILL<br>
@@ -299,7 +283,7 @@ long drm_sched_entity_flush(struct
drm_sched_entity *entity, long timeout)<br>
last_user = cmpxchg(&entity->last_user,
current->group_leader, NULL);<br>
if ((!last_user || last_user ==
current->group_leader) &&<br>
(current->flags & PF_EXITING)
&& (current->exit_code == SIGKILL))<br>
- drm_sched_entity_set_rq(entity, NULL);<br>
+
drm_sched_rq_remove_entity(entity->rq, entity);<br>
<br>
return ret;<br>
}<br>
@@ -320,7 +304,7 @@ void drm_sched_entity_fini(struct
drm_sched_entity *entity)<br>
struct drm_gpu_scheduler *sched;<br>
<br>
sched = entity->rq->sched;<br>
- drm_sched_entity_set_rq(entity, NULL);<br>
+ drm_sched_rq_remove_entity(entity->rq,
entity);<br>
<br>
/* Consumption of existing IBs wasn't completed.
Forcefully<br>
* remove them here.<br>
@@ -416,15 +400,12 @@ void
drm_sched_entity_set_rq(struct drm_sched_entity *entity,<br>
if (entity->rq == rq)<br>
return;<br>
<br>
- spin_lock(&entity->rq_lock);<br>
-<br>
- if (entity->rq)<br>
-
drm_sched_rq_remove_entity(entity->rq, entity);<br>
+ BUG_ON(!rq);<br>
<br>
+ spin_lock(&entity->rq_lock);<br>
+ drm_sched_rq_remove_entity(entity->rq,
entity);<br>
entity->rq = rq;<br>
- if (rq)<br>
- drm_sched_rq_add_entity(rq, entity);<br>
-<br>
+ drm_sched_rq_add_entity(rq, entity);<br>
spin_unlock(&entity->rq_lock);<br>
}<br>
EXPORT_SYMBOL(drm_sched_entity_set_rq);<br>
-- <br>
2.14.1<br>
<br>
</blockquote>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
dri-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dri-devel@lists.freedesktop.org" moz-do-not-send="true">dri-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/dri-devel" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/dri-devel</a>
</pre>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>