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....@intel.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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to