Messages in this thread | | | Date | Wed, 12 Mar 2014 11:20:10 +0100 | From | Julian Wollrath <> | Subject | Re: [RESEND] Fast TSC calibration fails with v3.14-rc1 and later |
| |
> This patch restricts the position to run acpi_early_init() before > timekeeping_init() when only "CMOS RTC Not Present" bit set in FADT. > > Could you please help to test it on your machine? That patch fixes the problem, thank you.
Cheers, Julian Wollrath > > > Thanks a lot! > Joey Lee > > > >From 8ef4fff76dd2f50bef1e8eb9c96f3b0228a38401 Mon Sep 17 00:00:00 > >2001 > From: Lee, Chun-Yi <jlee@suse.com> > Date: Wed, 12 Mar 2014 11:36:32 +0800 > Subject: [PATCH] ACPI / init: Run acpi_early_init() before > timekeeping_init() when CMOS RTC Not Present bit set > > This is a variant patch from Rafael J. Wysocki's > ACPI / init: Run acpi_early_init() before efi_enter_virtual_mode() > > According to Matt Fleming, if acpi_early_init() was executed before > efi_enter_virtual_mode(), the EFI initialization could benefit from > it, so Rafael's patch makes that happen. > > And, later we want accessing ACPI TAD device to set system clock, so > move acpi_early_init() before timekeeping_init() when "CMOS RTC Not > Present" bit set. This position is also before > efi_enter_virtual_mode(). > > Signed-off-by: Lee, Chun-Yi <jlee@suse.com> > --- > init/main.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/init/main.c b/init/main.c > index eb03090..e1b69d2 100644 > --- a/init/main.c > +++ b/init/main.c > @@ -561,7 +561,9 @@ asmlinkage void __init start_kernel(void) > init_timers(); > hrtimers_init(); > softirq_init(); > - acpi_early_init(); > + if (acpi_gbl_FADT.header.revision >= 5 && > + acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC) > + acpi_early_init(); > timekeeping_init(); > time_init(); > sched_clock_postinit(); > @@ -613,6 +615,9 @@ asmlinkage void __init start_kernel(void) > calibrate_delay(); > pidmap_init(); > anon_vma_init(); > + if (!(acpi_gbl_FADT.header.revision >= 5 && > + acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC)) > + acpi_early_init(); > #ifdef CONFIG_X86 > if (efi_enabled(EFI_RUNTIME_SERVICES)) > efi_enter_virtual_mode();
| |