git: 9front

Download patch

ref: 9cb4cfa1016f00a2967c288b5fc9b809806fa0bb
parent: e98911d5f2a9d7df40519fc363017f86515d8a17
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Fri Aug 24 11:46:21 EDT 2012

guesscpuhz: add sanity checks for virtualbox (import from sources)

--- a/sys/src/9/pc/i8253.c
+++ b/sys/src/9/pc/i8253.c
@@ -165,7 +165,7 @@
 	cpufreq = (vlong)loops*((aalcycles*2*Freq)/x);
 	m->loopconst = (cpufreq/1000)/aalcycles;	/* AAM+LOOP's for 1 ms */
 
-	if(m->havetsc){
+	if(m->havetsc && a != b){  /* a == b means virtualbox has confused us */
 		/* counter goes up by 2*Freq */
 		b = (b-a)<<1;
 		b *= Freq;
@@ -185,6 +185,9 @@
 		m->cpuhz = cpufreq;
 	}
 
+	/* don't divide by zero in trap.c */
+	if(m->cpumhz == 0)
+		panic("guesscpuhz: zero m->cpumhz");
 	i8253.hz = Freq<<Tickshift;
 }
 
--