From 19bf2bbfeb9905728ae259680793fc9fb65d69cf Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 21 Jun 2013 02:46:14 +0200 Subject: [PATCH] reverting guesscpuhz() changes, causes trouble --- sys/src/9/pc/archacpi.c | 2 ++ sys/src/9/pc/archmp.c | 3 +++ sys/src/9/pc/i8253.c | 28 +++++++++------------------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/sys/src/9/pc/archacpi.c b/sys/src/9/pc/archacpi.c index 298709847..24b3245bc 100644 --- a/sys/src/9/pc/archacpi.c +++ b/sys/src/9/pc/archacpi.c @@ -519,5 +519,7 @@ identify(void) return 1; if((cp = getconf("*nomp")) != nil && strcmp(cp, "0") != 0) return 1; + if(m->havetsc) + archacpi.fastclock = tscticks; return 0; } diff --git a/sys/src/9/pc/archmp.c b/sys/src/9/pc/archmp.c index 354249f38..23cf4fa66 100644 --- a/sys/src/9/pc/archmp.c +++ b/sys/src/9/pc/archmp.c @@ -395,5 +395,8 @@ identify(void) return 1; } + if(m->havetsc) + archmp.fastclock = tscticks; + return 0; } diff --git a/sys/src/9/pc/i8253.c b/sys/src/9/pc/i8253.c index 46e59f5c4..1ae22615f 100644 --- a/sys/src/9/pc/i8253.c +++ b/sys/src/9/pc/i8253.c @@ -145,10 +145,12 @@ guesscpuhz(int aalcycles) * */ outb(Tmode, Latch2); + cycles(&a); x = inb(T2cntr); x |= inb(T2cntr)<<8; aamloop(loops); outb(Tmode, Latch2); + cycles(&b); y = inb(T2cntr); y |= inb(T2cntr)<<8; @@ -172,25 +174,13 @@ guesscpuhz(int aalcycles) cpufreq = (vlong)loops*((aalcycles*2*Freq)/x); m->loopconst = (cpufreq/1000)/aalcycles; /* AAM+LOOP's for 1 ms */ - if(m->havetsc){ - aamloop(loops); /* warm up */ - cycles(&a); - aamloop(loops); - cycles(&b); - - aamloop(loops); - cycles(&a); - aamloop(loops); - cycles(&b); - - /* a == b means virtualbox has confused us */ - if(b > a){ - b -= a; - b *= 2*Freq; - b /= x; - m->cyclefreq = b; - cpufreq = b; - } + /* a == b means virtualbox has confused us */ + if(m->havetsc && b > a){ + b -= a; + b *= 2*Freq; + b /= x; + m->cyclefreq = b; + cpufreq = b; } m->cpuhz = cpufreq;