From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
To: Anna-Maria Gleixner <anna-maria@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
keescook@chromium.org, Christoph Hellwig <hch@lst.de>,
John Stultz <john.stultz@linaro.org>,
bert schulze <spambemyguest@googlemail.com>
Subject: Re: [PATCH v3 28/36] hrtimer: Implement support for softirq based hrtimers
Date: Thu, 14 Dec 2017 11:47:56 +0100 [thread overview]
Message-ID: <20171214104755.7bnfwfv6mer2toe2@breakpoint.cc> (raw)
In-Reply-To: <20171129153101.27297-29-anna-maria@linutronix.de>
On 2017-11-29 16:30:53 [+0100], Anna-Maria Gleixner wrote:
> diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
> index 65211fd7288d..40b14f025829 100644
> --- a/kernel/time/hrtimer.c
> +++ b/kernel/time/hrtimer.c
> @@ -711,6 +768,28 @@ static void hrtimer_reprogram(struct hrtimer *timer)
> WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0);
>
> /*
> + * CLOCK_REALTIME timer might be requested with an absolute
> + * expiry time which is less than base->offset. Set it to 0.
> + */
> + if (expires < 0)
> + expires = 0;
> +
> + if (timer->is_soft) {
> + if (cpu_base->softirq_activated)
> + return;
> +
> + if (!ktime_before(expires, cpu_base->softirq_expires_next))
> + return;
> +
> + cpu_base->softirq_next_timer = timer;
> + cpu_base->softirq_expires_next = expires;
> +
> + if (!ktime_before(expires, cpu_base->expires_next) ||
> + !reprogram)
> + return;
> + }
> +
> + /*
> * If the timer is not on the current cpu, we cannot reprogram
> * the other cpus clock event device.
> */
if the timer is enqueud on CPUX and we run on CPUY then we have to
update the cpu_base bits of the correct CPU. Not sure if this accounts
for all the pieces but it might be okay with the check we have in
hrtimer_check_target() (that we have nothing to do but just wait).
Without this, all "sleep 1" which are invoked on CPU1 but migrated to/
programmed on CPU0 (due to timer migration wth NOHZ_FULL) won't expire
as expected.
Reported-by: bert schulze <spambemyguest@googlemail.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index af16a5af2269..c2c344fda487 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -801,16 +801,18 @@ static void hrtimer_reprogram(struct hrtimer *timer, bool reprogram)
expires = 0;
if (timer->is_soft) {
- if (cpu_base->softirq_activated)
+ struct hrtimer_cpu_base *timer_cpu_base = base->cpu_base;
+
+ if (timer_cpu_base->softirq_activated)
return;
- if (!ktime_before(expires, cpu_base->softirq_expires_next))
+ if (!ktime_before(expires, timer_cpu_base->softirq_expires_next))
return;
- cpu_base->softirq_next_timer = timer;
- cpu_base->softirq_expires_next = expires;
+ timer_cpu_base->softirq_next_timer = timer;
+ timer_cpu_base->softirq_expires_next = expires;
- if (!ktime_before(expires, cpu_base->expires_next) ||
+ if (!ktime_before(expires, timer_cpu_base->expires_next) ||
!reprogram)
return;
}
--
2.15.1
next prev parent reply other threads:[~2017-12-14 10:47 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-29 15:30 [PATCH 00/36] hrtimer: Provide softirq context hrtimers Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 01/36] timers: Use static keys for migrate_enable/nohz_active Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 02/36] hrtimer: Correct blantanly wrong comment Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 03/36] hrtimer: Fix kerneldoc for struct hrtimer_cpu_base Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 04/36] hrtimer: Cleanup clock argument in schedule_hrtimeout_range_clock() Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 05/36] hrtimer: Fix hrtimer function description Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 06/36] hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers) Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 07/36] hrtimer: Cleanup hrtimer_mode enum Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 08/36] tracing/hrtimer: Take all clock bases and modes into account Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 09/36] tracing/hrtimer: Print hrtimer mode in hrtimer_start tracepoint Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 10/36] hrtimer: Switch for loop to _ffs() evaluation Anna-Maria Gleixner
2017-11-29 16:06 ` Joe Perches
2017-11-29 15:30 ` [PATCH v3 11/36] hrtimer: Store running timer in hrtimer_clock_base Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 12/36] hrtimer: Make room in struct hrtimer_cpu_base Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 13/36] hrtimer: Reduce conditional code (hres_active) Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 14/36] hrtimer: Use accesor functions instead of direct access Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 15/36] hrtimer: Make the remote enqueue check unconditional Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 16/36] hrtimer: Make hrtimer_cpu_base.next_timer handling unconditional Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 17/36] hrtimer: Make hrtimer_reprogramm() unconditional Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 18/36] hrtimer: Make hrtimer_force_reprogramm() unconditionally available Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 19/36] hrtimer: Unify handling of hrtimer remove Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 20/36] hrtimer: Unify handling of remote enqueue Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 21/36] hrtimer: Make remote enqueue decision less restrictive Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 22/36] hrtimer: Remove base argument from hrtimer_reprogram() Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 23/36] hrtimer: Split hrtimer_start_range_ns() Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 24/36] hrtimer: Split __hrtimer_get_next_event() Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 25/36] hrtimer: Use irqsave/irqrestore around __run_hrtimer() Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 26/36] hrtimer: Add clock bases and hrtimer mode for soft irq context Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 27/36] hrtimer: Prepare handling of hard and softirq based hrtimers Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 28/36] hrtimer: Implement support for " Anna-Maria Gleixner
2017-12-14 10:47 ` Sebastian Andrzej Siewior [this message]
2017-11-29 15:30 ` [PATCH v3 29/36] hrtimer: Implement SOFT/HARD clock base selection Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 30/36] can/bcm: Replace hrtimer_tasklet with softirq based hrtimer Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 31/36] mac80211_hwsim: Replace hrtimer tasklet with softirq hrtimer Anna-Maria Gleixner
2017-12-11 11:27 ` Johannes Berg
2017-11-29 15:30 ` [PATCH v3 32/36] xfrm: " Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 33/36] softirq: Remove tasklet_hrtimer Anna-Maria Gleixner
2017-11-29 15:30 ` [PATCH v3 34/36] ALSA/dummy: Replace tasklet with softirq hrtimer Anna-Maria Gleixner
2017-12-06 16:27 ` Takashi Iwai
2017-11-29 15:31 ` [PATCH v3 35/36] usb/gadget/NCM: " Anna-Maria Gleixner
2017-12-04 13:14 ` Felipe Balbi
2017-12-07 7:35 ` Anna-Maria Gleixner
2017-11-29 15:31 ` [PATCH v3 36/36] net/mvpp2: " Anna-Maria Gleixner
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=20171214104755.7bnfwfv6mer2toe2@breakpoint.cc \
--to=sebastian@breakpoint.cc \
--cc=anna-maria@linutronix.de \
--cc=hch@lst.de \
--cc=john.stultz@linaro.org \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=spambemyguest@googlemail.com \
--cc=tglx@linutronix.de \
/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
Powered by JetHome