Re: [BUG, bisect] hrtimer: severe lag after suspend & resume

From: Jeremiah Mahler
Date: Thu Jun 04 2015 - 16:13:18 EST


Thomas,

On Thu, Jun 04, 2015 at 01:22:45PM +0200, Thomas Gleixner wrote:
> On Wed, 3 Jun 2015, Jeremiah Mahler wrote:
[...]
>
> I had to wrap my head around that for quite a while, but I think I
> have decoded the issue. Can you please test the patch below whether it
> solves your problem?
>
> Thanks,
>
> tglx
>
> ------------------------>
>
> diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
> index 278d4b36fd94..e9dfcd0b8c41 100644
> --- a/kernel/time/hrtimer.c
> +++ b/kernel/time/hrtimer.c
> @@ -1492,6 +1492,12 @@ static void init_hrtimers_cpu(int cpu)
>
> cpu_base->cpu = cpu;
> hrtimer_init_hres(cpu_base);
> + /*
> + * Force an update by setting the clock was set sequence to an
> + * odd value.
> + */
> + cpu_base->clock_was_set_seq = 1;
> + hrtimer_update_base(cpu_base);
> }
>
> #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
> index 90ed5db67c1d..c97710137a9e 100644
> --- a/kernel/time/timekeeping.c
> +++ b/kernel/time/timekeeping.c
> @@ -593,7 +593,7 @@ static void timekeeping_update(struct timekeeper *tk, unsigned int action)
> update_fast_timekeeper(&tk->tkr_raw, &tk_fast_raw);
>
> if (action & TK_CLOCK_WAS_SET)
> - tk->clock_was_set_seq++;
> + tk->clock_was_set_seq += 2;
> }
>
> /**

With this change it won't boot. It just hangs at "Booting the kernel".

--
- Jeremiah Mahler
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/