grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tsc: Change default tsc calibration method to EFI on EFI sys


From: David E. Box
Subject: Re: [PATCH] tsc: Change default tsc calibration method to EFI on EFI systems
Date: Tue, 12 Sep 2017 16:40:31 -0700

Hi Paul,

On Tue, 2017-09-12 at 09:10 +0200, Paul Menzel wrote:
> Dear David,
> 
> 
> Am Mittwoch, den 06.09.2017, 13:20 -0700 schrieb David E. Box:
> > On efi systems, make efi based tsc calibration the default,
> > followed by
> > the pmtimer before using the pit. This prevents Grub boot failure
> > on
> > newer x86 systems that power gate the pit.
> 
> Could you please be specific, what “newer x86 systems” are? Also,
> what
> is the “GRUB boot failure”? A hang?

Intel SoC's supporting the S0ix feature require the 8254 to be power
gated. This feature as been around as early as the Cherry Trail line.
In order to support this some firmware configurations clock gate the
8254 by default. This causes grub to hang on these systems when they
attempt to use it to calibrate the tsc.

See section 18.9.2.4 in https://www.intel.com/content/www/us/en/process
ors/atom/atom-z8000-datasheet-vol-1.html

> 
> What about older EFI x86 systems? Is there a chance, that they hang
> now?support this some firmware configurations clock gate the 8254 by
> default. This causes grub to hang on t

Can't say for sure. I have no reason to suspect so. Such a system would
have to have no (or broken) support for the EFI_STALL boot service
command, which has been around since EFI 1.0.

> 
> > Signed-off-by: David E. Box <address@hidden>
> > ---
> >  grub-core/kern/i386/tsc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/grub-core/kern/i386/tsc.c b/grub-core/kern/i386/tsc.c
> > index 2e85289d8..de4057ddb 100644
> > --- a/grub-core/kern/i386/tsc.c
> > +++ b/grub-core/kern/i386/tsc.c
> > @@ -68,7 +68,7 @@ grub_tsc_init (void)
> >  #ifdef GRUB_MACHINE_XEN
> >    (void) (grub_tsc_calibrate_from_xen () ||
> > calibrate_tsc_hardcode());
> >  #elif defined (GRUB_MACHINE_EFI)
> > -  (void) (grub_tsc_calibrate_from_pit () ||
> > grub_tsc_calibrate_from_pmtimer () || grub_tsc_calibrate_from_efi()
> > || calibrate_tsc_hardcode());
> > +  (void) (grub_tsc_calibrate_from_efi () ||
> > grub_tsc_calibrate_from_pmtimer () || grub_tsc_calibrate_from_pit
> > () || calibrate_tsc_hardcode());
> >  #elif defined (GRUB_MACHINE_COREBOOT)
> >    (void) (grub_tsc_calibrate_from_pmtimer () ||
> > grub_tsc_calibrate_from_pit () || calibrate_tsc_hardcode());
> >  #else
> 
> 
> Thanks,
> 
> Paul

Dave



reply via email to

[Prev in Thread] Current Thread [Next in Thread]