[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.02.1307041151170.11637@ionos.tec.linutronix.de>
Date: Thu, 4 Jul 2013 11:57:39 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Alex Shi <alex.shi@...el.com>
cc: hpa@...ux.intel.com, tim.c.chen@...ux.intel.com,
linux-kernel@...r.kernel.org, andi.kleen@...el.com,
a.p.zijlstra@...llo.nl, mingo@...e.hu
Subject: Re: [PATCH 1/3] clocksource: clean up clocksource_select
On Thu, 4 Jul 2013, Alex Shi wrote:
> After clocksource_find_best() introduced, it is impossible to get into
> some code path. so clean them up.
That's wrong.
> Signed-off-by: Alex Shi <alex.shi@...el.com>
> ---
> kernel/time/clocksource.c | 16 +---------------
> 1 file changed, 1 insertion(+), 15 deletions(-)
>
> diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
> index e713ef7..021c159 100644
> --- a/kernel/time/clocksource.c
> +++ b/kernel/time/clocksource.c
> @@ -582,26 +582,12 @@ static void __clocksource_select(bool skipcur)
> if (!best)
> return;
>
> - /* Check for the override clocksource. */
> list_for_each_entry(cs, &clocksource_list, list) {
> if (skipcur && cs == curr_clocksource)
> continue;
> if (strcmp(cs->name, override_name) != 0)
> continue;
We need this check and it is completely unrelated to the problem
you're trying to solve.
Assume the following:
System boots with clocksource A and switches into highres mode.
Now clocksource B gets registered and B is not highres capable.
clocksource_find_best() selects again A, but we have
clocksource=B on the kernel command line to override the kernel
decision.
By removing the check, you install he non highres capable clocksource
B and kill the machine.
> - /*
> - * Check to make sure we don't switch to a non-highres
> - * capable clocksource if the tick code is in oneshot
> - * mode (highres or nohz)
> - */
> - if (!(cs->flags & CLOCK_SOURCE_VALID_FOR_HRES) && oneshot) {
> - /* Override clocksource cannot be used. */
> - printk(KERN_WARNING "Override clocksource %s is not "
> - "HRT compatible. Cannot switch while in "
> - "HRT/NOHZ mode\n", cs->name);
> - override_name[0] = 0;
> - } else
> - /* Override clocksource can be used. */
> - best = cs;
> + best = cs;
> break;
> }
Thanks,
tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists