All of lore.kernel.org
 help / color / mirror / Atom feed
From: "yingooyim" <ygyim-vrdpybo1/PJOKQ8SreQ7dg@public.gmane.org>
To: tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org
Cc: mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	jinh-vrdpybo1/PJOKQ8SreQ7dg@public.gmane.org
Subject: [PATCH] cgroup/cpu: Fix tg_has_rt_task() malfunction
Date: Wed, 21 Sep 2016 13:35:12 +0900	[thread overview]
Message-ID: <1474432976304060.0.mail@mail> (raw)

Hi,
I am a graduate student of System Software Lab. at Konkuk University
(http://sslab.konkuk.ac.kr).

This patch is to fix the malfunction of tg_has_rt_tasks(). The
tg_has_rt_tasks() function is supposed to determine whether a task
group includes an "rt task" or not. However, it returns true for
"dl task" too. The origin of this problem is that rt_task() called
by tg_has_rt_tasks() returns true for dl tasks. Because of this
problem, tg_rt_schedulable() that calls tg_has_rt_tasks() returns
–EBUSY if we try to initialize an rt task group, while a dl task
is running. That is, you cannot run an rt task group when there
exists a dl task in the system. Our patch provided in this post
simply makes the tg_has_rt_tasks() function return false for dl
tasks by calling dl_task() in the conditional statement.

Previously we have provided another patch for rt_task() (more
precisely rt_prio()) to resolve this problem as follows:
https://patchwork.kernel.org/patch/9299267/
However, a dependency issue were raised. So, we think that it is
better to modify tg_has_rt_tasks() instead of rt_task() itself.

Signed-off-by: Yin-goo Yim <ygyim-vrdpybo1/PJOKQ8SreQ7dg@public.gmane.org>
----
kernel/sched/core.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 2a906f2..ee5ab2f 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -7846,7 +7846,7 @@ static inline int tg_has_rt_tasks(struct task_group
*tg)
   return 0;

   for_each_process_thread(g, p) {
- if (rt_task(p) && task_group(p) == tg)
+ if (rt_task(p) && !dl_task(p) && task_group(p) == tg)
   return 1;
   } 


WARNING: multiple messages have this Message-ID (diff)
From: "yingooyim" <ygyim@konkuk.ac.kr>
To: <tj@kernel.org>, <lizefan@huawei.com>, <hannes@cmpxchg.org>
Cc: <mingo@redhat.com>, <peterz@infradead.org>,
	<cgroups@vger.kernel.org>, "LKML" <linux-kernel@vger.kernel.org>,
	<jinh@konkuk.ac.kr>
Subject: [PATCH] cgroup/cpu: Fix tg_has_rt_task() malfunction
Date: Wed, 21 Sep 2016 13:35:12 +0900	[thread overview]
Message-ID: <1474432976304060.0.mail@mail> (raw)

Hi,
I am a graduate student of System Software Lab. at Konkuk University
(http://sslab.konkuk.ac.kr).

This patch is to fix the malfunction of tg_has_rt_tasks(). The
tg_has_rt_tasks() function is supposed to determine whether a task
group includes an "rt task" or not. However, it returns true for
"dl task" too. The origin of this problem is that rt_task() called
by tg_has_rt_tasks() returns true for dl tasks. Because of this
problem, tg_rt_schedulable() that calls tg_has_rt_tasks() returns
–EBUSY if we try to initialize an rt task group, while a dl task
is running. That is, you cannot run an rt task group when there
exists a dl task in the system. Our patch provided in this post
simply makes the tg_has_rt_tasks() function return false for dl
tasks by calling dl_task() in the conditional statement.

Previously we have provided another patch for rt_task() (more
precisely rt_prio()) to resolve this problem as follows:
https://patchwork.kernel.org/patch/9299267/
However, a dependency issue were raised. So, we think that it is
better to modify tg_has_rt_tasks() instead of rt_task() itself.

Signed-off-by: Yin-goo Yim <ygyim@konkuk.ac.kr>
----
kernel/sched/core.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 2a906f2..ee5ab2f 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -7846,7 +7846,7 @@ static inline int tg_has_rt_tasks(struct task_group
*tg)
   return 0;

   for_each_process_thread(g, p) {
- if (rt_task(p) && task_group(p) == tg)
+ if (rt_task(p) && !dl_task(p) && task_group(p) == tg)
   return 1;
   } 

             reply	other threads:[~2016-09-21  4:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-21  4:35 yingooyim [this message]
2016-09-21  4:35 ` [PATCH] cgroup/cpu: Fix tg_has_rt_task() malfunction yingooyim
  -- strict thread matches above, loose matches on Subject: below --
2016-09-18 14:23 yingooyim
2016-09-18 14:23 ` yingooyim
2016-09-20 19:41 ` Tejun Heo
2016-09-20 19:41   ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1474432976304060.0.mail@mail \
    --to=ygyim-vrdpybo1/pjokq8sreq7dg@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=jinh-vrdpybo1/PJOKQ8SreQ7dg@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.