linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Qiang Huang <h.huangqiang@huawei.com>
To: Steven Rostedt <rostedt@goodmis.org>, <mingo@kernel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	linux-rt-users <linux-rt-users@vger.kernel.org>,
	zhangwei <jovi.zhangwei@huawei.com>,
	"Li Zefan" <lizefan@huawei.com>, <peterz@infradead.org>
Subject: [RFC PATCH] tasklet: correct the comments about tasklet schedule
Date: Wed, 30 Apr 2014 12:02:09 +0800	[thread overview]
Message-ID: <536075C1.2080704@huawei.com> (raw)

Hi all,

Ingo's patch:
00853150572df2	tasklet: Prevent tasklets from going into infinite spin in RT
changed behavior about tasklet in NO-RT scenario, but I found some suspicious
from code and comments.

Like the below patch says, if a tasklet is already running on another CPU,
then it would have RUN flag and have no SCHED flag, so when we call
tasklet_schedule, then in __tasklet_common_schedule(), tasklet_trylock()
will return false, and the tasklet won't be added to tasklet_vec list,
so there is no reschedule, right?

Another, the comments said schedule called from tasklet itself would cause
lockup, like it mentioned above, in tasklet function, the tasklet has RUN
flag, and have no SCHED flag, so when it call tasklet_schedule, it will
only meet tasklet_trylock return false, then nothing happened. I think this
should not be any lockup.

After all, if my understanding is correct, it changed the behavior when
tasklet scheduled itself, this would affect some kernel modules using
tasklet, is this what we want in RT? If so, should we use RT_FULL config
to isolate this affect?

--------------------

Correct the comments as the code really do.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
---
 include/linux/interrupt.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index fb05761..e9d73e6 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -514,9 +514,8 @@ extern void __send_remote_softirq(struct call_single_data *cp, int cpu,
      to be executed on some cpu at least once after this.
    * If the tasklet is already scheduled, but its execution is still not
      started, it will be executed only once.
-   * If this tasklet is already running on another CPU, it is rescheduled
-     for later.
-   * Schedule must not be called from the tasklet itself (a lockup occurs)
+   * If this tasklet is already running on another CPU (or schedule is called
+     from tasklet itself), it wound not be rescheduled.
    * Tasklet is strictly serialized wrt itself, but not
      wrt another tasklets. If client needs some intertask synchronization,
      he makes it with spinlocks.
--
1.8.3


             reply	other threads:[~2014-04-30  4:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-30  4:02 Qiang Huang [this message]
2014-04-30  7:48 ` [RFC PATCH] tasklet: correct the comments about tasklet schedule Qiang Huang
2015-02-26 14:35 ` Sebastian Andrzej Siewior

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=536075C1.2080704@huawei.com \
    --to=h.huangqiang@huawei.com \
    --cc=bigeasy@linutronix.de \
    --cc=jovi.zhangwei@huawei.com \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).