[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