From: Dario Faggioli <dario.faggioli@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
TimDeegan <tim@xen.org>, Julien Grall <julien.grall@arm.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] xen: timers: don't miss a timer event because of stop_timer()
Date: Wed, 27 Sep 2017 15:39:49 +0200 [thread overview]
Message-ID: <1506519589.17428.8.camel@citrix.com> (raw)
In-Reply-To: <59CB9A02020000780018008D@prv-mh.provo.novell.com>
[-- Attachment #1.1: Type: text/plain, Size: 2218 bytes --]
On Wed, 2017-09-27 at 04:30 -0600, Jan Beulich wrote:
> > > > On 27.09.17 at 12:18, <dario.faggioli@citrix.com> wrote:
>
> > And that is because the following happens:
> > - the CPU wants to go idle
> > - sched_tick_suspend()
> > rcu_idle_timer_start()
> > set_timer(RCU_idle_timer)
> > - the CPU goes idle
> > ... ... ...
> > - RCU_idle_timer's IRQ arrives
> > - the CPU wakes up
> > - raise_softirq(TIMER_SOFTIRQ)
> > - sched_tick_resume()
> > rcu_idle_timer_stop()
> > stop_timer(RCU_idle_timer)
> > deactivate_timer(RCU_idle_timer)
> > remove_entry(RCU_idle_timer) // timer out of heap/list
> > - do_softirq() (we are inside idle_loop())
> > - softirq_handlers[TIMER_SOFTIRQ]()
> > - timer_softirq_action()
> > // but the timer is not in the heap/list!
>
> But this is an extremely special case, not something likely to
> happen anywhere else. Hence I wonder whether it wouldn't
> be better to handle the special case in a special way, rather
> than making generic code fit the special case.
>
Well, yes. As said, this "new" timer is the first, and for now the
only, that follow this pattern. And I also agree that this is not
something we must expect to see to happen much more (if at all).
Still, I continue to think that with a timer already expired, its IRQ
already delivered and handled and the relative TIMER_SOFTIRQ already
risen, we should arrange for the timer handler to run, in the general
case.
> Or wait -
> wouldn't all you need be to avoid calling stop_timer() in the
> call tree above, if the timer's expiry has passed (suitably
> explained in a comment)?
>
Yes. For the reason stated above, I addressed the problem at the
generic code level. If that doesn't fly, I'll do like this. I had
thought about that, and although I haven't tried, I think it works for
this case.
Thanks and Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-09-27 13:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-15 18:01 [PATCH 0/3] xen: RCU: Improve the idle timer handling Dario Faggioli
2017-09-15 18:01 ` [PATCH 1/3] xen: timers: don't miss a timer event because of stop_timer() Dario Faggioli
2017-09-26 14:59 ` Jan Beulich
2017-09-26 18:11 ` Dario Faggioli
2017-09-27 8:20 ` Jan Beulich
2017-09-27 10:18 ` Dario Faggioli
2017-09-27 10:30 ` Jan Beulich
2017-09-27 13:39 ` Dario Faggioli [this message]
2017-09-28 9:51 ` Dario Faggioli
2017-09-15 18:01 ` [PATCH 2/3] xen: RCU: make the period of the idle timer configurable Dario Faggioli
2017-09-26 15:14 ` Jan Beulich
2017-09-26 17:48 ` Dario Faggioli
2017-09-27 8:26 ` Jan Beulich
2017-09-15 18:01 ` [PATCH 3/3] xen: RCU: make the period of the idle timer adaptive Dario Faggioli
2017-09-26 15:24 ` Jan Beulich
2017-09-26 17:50 ` Dario Faggioli
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=1506519589.17428.8.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=julien.grall@arm.com \
--cc=sstabellini@kernel.org \
--cc=tim@xen.org \
--cc=xen-devel@lists.xenproject.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.