Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Aug 2008 22:21:42 +0200
From:      Dimitry Andric <dimitry@andric.com>
To:        Renato Botelho <rbgarga@gmail.com>
Cc:        cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org, John Baldwin <jhb@freebsd.org>
Subject:   Re: cvs commit: src/sys/i386/cpufreq est.c
Message-ID:  <48B31456.5030009@andric.com>
In-Reply-To: <747dc8f30808251227v286ab480mea5b0d7dff0311fa@mail.gmail.com>
References:  <200808231253.m7NCrkLp093604@repoman.freebsd.org>	<747dc8f30808250629h73676fd8m71f0d6cbc0e035e2@mail.gmail.com> <747dc8f30808251227v286ab480mea5b0d7dff0311fa@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2008-08-25 21:27, Renato Botelho wrote:
> cpu0: <ACPI CPU> on acpi0
> est0: <Enhanced SpeedStep Frequency Control> on cpu0
> est0: Guessed bus clock (high) of 200 MHz
> 
> Fatal trap 18: integer divide fault while in kernel mode
> cpuid = 0; acpi id = 00
> ...
> panic: integer divide fault

Unfortunately, there are CPU models around that have MSR_PERF_STATUS
bits that are inconsistent, e.g:

- The low and high multipliers (bits 31:24 and 15:8) are equal, so if
  you subtract them and then divide... boom :) 
- Either the low or high multipliers (or both) are zero, which is also
  not good, at least not with the current code.

As an example, I originally added some multiplier sanity checks here:
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/arch/i386/i386/est.c#rev1.27




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48B31456.5030009>