x86: don't use tsc_khz to calculate lpj if notsc is passed
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>
This commit is contained in:
committed by
Ingo Molnar
parent
73557af5bf
commit
70de9a9704
@@ -813,10 +813,6 @@ void __init tsc_init(void)
|
|||||||
cpu_khz = calibrate_cpu();
|
cpu_khz = calibrate_cpu();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lpj = ((u64)tsc_khz * 1000);
|
|
||||||
do_div(lpj, HZ);
|
|
||||||
lpj_fine = lpj;
|
|
||||||
|
|
||||||
printk("Detected %lu.%03lu MHz processor.\n",
|
printk("Detected %lu.%03lu MHz processor.\n",
|
||||||
(unsigned long)cpu_khz / 1000,
|
(unsigned long)cpu_khz / 1000,
|
||||||
(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 */
|
/* now allow native_sched_clock() to use rdtsc */
|
||||||
tsc_disabled = 0;
|
tsc_disabled = 0;
|
||||||
|
|
||||||
|
lpj = ((u64)tsc_khz * 1000);
|
||||||
|
do_div(lpj, HZ);
|
||||||
|
lpj_fine = lpj;
|
||||||
|
|
||||||
use_tsc_delay();
|
use_tsc_delay();
|
||||||
/* Check and install the TSC clocksource */
|
/* Check and install the TSC clocksource */
|
||||||
dmi_check_system(bad_tsc_dmi_table);
|
dmi_check_system(bad_tsc_dmi_table);
|
||||||
|
Reference in New Issue
Block a user