Re: git: 84369dd52369 - main - x86: Probe the TSC frequency earlier
Date: Fri, 04 Mar 2022 18:15:29 UTC
On Fri, Mar 04, 2022 at 12:52:26PM -0500, Shawn Webb wrote: > On Fri, Mar 04, 2022 at 10:13:54AM -0500, Mark Johnston wrote: > > On Fri, Mar 04, 2022 at 09:24:47AM -0500, Shawn Webb wrote: > > > On Tue, Mar 01, 2022 at 02:39:55PM +0000, Mark Johnston wrote: > > > > The branch main has been updated by markj: > > > > > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=84369dd52369cbae28970dca20a53d3de1719907 > > > > > > > > commit 84369dd52369cbae28970dca20a53d3de1719907 > > > > Author: Mark Johnston <markj@FreeBSD.org> > > > > AuthorDate: 2022-03-01 14:39:35 +0000 > > > > Commit: Mark Johnston <markj@FreeBSD.org> > > > > CommitDate: 2022-03-01 14:39:35 +0000 > > > > > > > > x86: Probe the TSC frequency earlier > > > > > > > > This lets us use the TSC to implement early DELAY, limiting the use of > > > > the sometimes-unreliable 8254 PIT. > > > > > > > > PR: 262155 > > > > Reviewed by: emaste > > > > Tested by: emaste, mike tancsa <mike@sentex.net>, Stefan Hegnauer <stefan.hegnauer@gmx.ch> > > > > MFC after: 1 month > > > > Sponsored by: The FreeBSD Foundation > > > > Differential Revision: https://reviews.freebsd.org/D34367 > > > > --- > > > > sys/amd64/amd64/machdep.c | 14 +++++- > > > > sys/i386/i386/machdep.c | 11 ++++- > > > > sys/x86/include/clock.h | 3 +- > > > > sys/x86/isa/clock.c | 4 +- > > > > sys/x86/x86/tsc.c | 123 +++++++++++++++++++++++++--------------------- > > > > 5 files changed, 94 insertions(+), 61 deletions(-) > > > > > > Hey Mark, > > > > > > Something about this commit breaks booting in Hyper-V. Reverting this > > > particular commit makes Hyper-V happy again. > > > > The patch below might be sufficient. I'll test it in Azure but it'll > > take me some time. > > > > diff --git a/sys/x86/x86/delay.c b/sys/x86/x86/delay.c > > index c767250954da..95b994b15f81 100644 > > --- a/sys/x86/x86/delay.c > > +++ b/sys/x86/x86/delay.c > > @@ -89,7 +89,7 @@ delay_tc(int n) > > return (1); > > } > > tc = timecounter; > > - if (tc->tc_quality <= 0) > > + if (tc == NULL || tc->tc_quality <= 0) > > return (0); > > func = tc->tc_get_timecount; > > mask = tc->tc_counter_mask; > > Great! I'll give this patch a try and report back. The proposed patch did not result in successful boot. Thanks, -- Shawn Webb Cofounder / Security Engineer HardenedBSD https://git.hardenedbsd.org/hardenedbsd/pubkeys/-/raw/master/Shawn_Webb/03A4CBEBB82EA5A67D9F3853FF2E67A277F8E1FA.pub.asc