x86: don't use tsc_khz to calculate lpj if notsc is passed
authorAlok Kataria <akataria@vmware.com>
Mon, 3 Nov 2008 19:18:47 +0000 (11:18 -0800)
committerIngo Molnar <mingo@elte.hu>
Tue, 4 Nov 2008 08:55:26 +0000 (09:55 +0100)
Impact: fix udelay when "notsc" boot parameter is passed

With notsc passed on commandline, tsc may not be used for
udelays, make sure that we do not use tsc_khz to calculate
the lpj value in such cases.

Reported-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Alok N Kataria <akataria@vmware.com>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/tsc.c

index 62348e4fd8d1e6af29d04726499b13794a78949e..2ef80e30192571a633f8fb3fb858c20207b9d4d7 100644 (file)
@@ -813,10 +813,6 @@ void __init tsc_init(void)
                cpu_khz = calibrate_cpu();
 #endif
 
-       lpj = ((u64)tsc_khz * 1000);
-       do_div(lpj, HZ);
-       lpj_fine = lpj;
-
        printk("Detected %lu.%03lu MHz processor.\n",
                        (unsigned long)cpu_khz / 1000,
                        (unsigned long)cpu_khz % 1000);
@@ -836,6 +832,10 @@ void __init tsc_init(void)
        /* now allow native_sched_clock() to use rdtsc */
        tsc_disabled = 0;
 
+       lpj = ((u64)tsc_khz * 1000);
+       do_div(lpj, HZ);
+       lpj_fine = lpj;
+
        use_tsc_delay();
        /* Check and install the TSC clocksource */
        dmi_check_system(bad_tsc_dmi_table);