When calculating the simple rate table in est_msr_info() we have to observe bit 6 (0x40) of the multiplier which denotes an additional 0.5 for the value. Examples: FID Multiplier -------------------- 0x06 6 0x07 7 0x08 8 0x46 6.5 0x47 7.5 0x48 8.5 How-To-Repeat: Enable cpufreq on a cpu with a fractional multiplier (in my case a Q9550 which uses 8.5), set hw.est.msr_info=1, and watch dmesg spitting out insane low/high values for the bus clock.
And another additional patch to make this work with an E6600 CPU (266 MHz clock). While we are here, fix the unit of the voltage as well (Mv -> mV). --- est.c.ORI 2013-04-26 18:30:02.000000000 +0200 +++ est.c 2013-04-26 18:30:02.000000000 +0200 @@ -1192,6 +1192,7 @@ switch (bus) { case 100: case 133: + case 267: case 333: return (1); default: @@ -1252,7 +1253,7 @@ fp[0].volts = volts; fp[0].id16 = id; fp[0].power = CPUFREQ_VAL_UNKNOWN; - device_printf(dev, "Guessed high setting of %d MHz @ %d Mv\n", freq, + device_printf(dev, "Guessed high setting of %d MHz @ %d mV\n", freq, volts); /* Second, the low frequency. */ @@ -1269,7 +1270,7 @@ fp[1].volts = volts; fp[1].id16 = id; fp[1].power = CPUFREQ_VAL_UNKNOWN; - device_printf(dev, "Guessed low setting of %d MHz @ %d Mv\n", freq, + device_printf(dev, "Guessed low setting of %d MHz @ %d mV\n", freq, volts); /* Table is already terminated due to M_ZERO. */
batch change: For bugs that match the following - Status Is In progress AND - Untouched since 2018-01-01. AND - Affects Base System OR Documentation DO: Reset to open status. Note: I did a quick pass but if you are getting this email it might be worthwhile to double check to see if this bug ought to be closed.
Created attachment 193806 [details] current version I use on 11-STABLE
Keyword: patch or patch-ready – in lieu of summary line prefix: [patch] * bulk change for the keyword * summary lines may be edited manually (not in bulk). Keyword descriptions and search interface: <https://bugs.freebsd.org/bugzilla/describekeywords.cgi>