From: Prarit Bhargava <prarit@redhat.com>
To: John Stultz <johnstul@us.ibm.com>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
stable@vger.kernel.org, Thomas Gleixner <tglx@linutronix.de>,
linux@openhuawei.org
Subject: Re: [PATCH 1/3] [RFC] hrtimer: Fix clock_was_set so it is safe to call from irq context
Date: Thu, 05 Jul 2012 10:29:07 -0400 [thread overview]
Message-ID: <4FF5A4B3.3020709@redhat.com> (raw)
In-Reply-To: <1341382890-42324-2-git-send-email-johnstul@us.ibm.com>
On 07/04/2012 02:21 AM, John Stultz wrote:
> NOTE:This is a prerequisite patch that's required to
> address the widely observed leap-second related futex/hrtimer
> issues.
>
> Currently clock_was_set() is unsafe to be called from irq
> context, as it calls on_each_cpu(). This causes problems when
> we need to adjust the time from update_wall_time().
>
> To fix this, if clock_was_set is called when irqs are
> disabled, we schedule a timer to fire for immedately after
> we're out of interrupt context to then notify the hrtimer
> subsystem.
>
> CC: Prarit Bhargava <prarit@redhat.com>
> CC: stable@vger.kernel.org
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: linux@openhuawei.org
> Reported-by: Jan Engelhardt <jengelh@inai.de>
> Signed-off-by: John Stultz <johnstul@us.ibm.com>
> ---
> kernel/hrtimer.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
> index ae34bf5..d730678 100644
> --- a/kernel/hrtimer.c
> +++ b/kernel/hrtimer.c
> @@ -746,7 +746,7 @@ static inline void retrigger_next_event(void *arg) { }
> * resolution timer interrupts. On UP we just disable interrupts and
> * call the high resolution interrupt code.
> */
> -void clock_was_set(void)
> +static void do_clock_was_set(unsigned long data)
> {
> #ifdef CONFIG_HIGH_RES_TIMERS
> /* Retrigger the CPU local events everywhere */
> @@ -755,6 +755,21 @@ void clock_was_set(void)
> timerfd_clock_was_set();
> }
>
> +static DEFINE_TIMER(clock_was_set_timer, do_clock_was_set , 0, 0);
> +
> +void clock_was_set(void)
> +{
> + /*
> + * We can't call on_each_cpu() from irq context,
> + * so if irqs are disabled , schedule the clock_was_set
> + * via a timer_list timer for right after.
> + */
> + if (irqs_disabled())
I was wondering about this in earlier versions of the patchset. I thought it
was supposed to be irqs_disabled. Thanks for changing this.
Acked-by: Prarit Bhargava <prarit@redhat.com>
P.
next prev parent reply other threads:[~2012-07-05 14:29 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-04 6:21 [PATCH 0/3][RFC] Fix for leapsecond caused futex issue (v4) John Stultz
2012-07-04 6:21 ` [PATCH 1/3] [RFC] hrtimer: Fix clock_was_set so it is safe to call from irq context John Stultz
2012-07-05 14:29 ` Prarit Bhargava [this message]
2012-07-04 6:21 ` [PATCH 2/3] [RFC] time: Fix leapsecond triggered hrtimer/futex load spike issue John Stultz
2012-07-05 14:29 ` Prarit Bhargava
2012-07-04 6:21 ` [PATCH 3/3] [RFC] hrtimer: Update hrtimer base offsets each hrtimer_interrupt John Stultz
2012-07-05 14:30 ` Prarit Bhargava
2012-07-04 6:23 ` [PATCH 0/3][RFC] Fix for leapsecond caused futex issue (v4) John Stultz
2012-07-05 14:41 ` Prarit Bhargava
2012-07-05 16:27 ` John Stultz
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=4FF5A4B3.3020709@redhat.com \
--to=prarit@redhat.com \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@openhuawei.org \
--cc=stable@vger.kernel.org \
--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 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.