From owner-p4-projects@FreeBSD.ORG Wed May 9 20:54:51 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6035116A406; Wed, 9 May 2007 20:54:51 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 371F716A404 for ; Wed, 9 May 2007 20:54:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 27EF013C447 for ; Wed, 9 May 2007 20:54:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49Ksp2d071189 for ; Wed, 9 May 2007 20:54:51 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49Ksog4071186 for perforce@freebsd.org; Wed, 9 May 2007 20:54:50 GMT (envelope-from rpaulo@FreeBSD.org) Date: Wed, 9 May 2007 20:54:50 GMT Message-Id: <200705092054.l49Ksog4071186@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119595 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 20:54:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=119595 Change 119595 by rpaulo@rpaulo_epsilon on 2007/05/09 20:54:28 Bring back the sched_bind() changes so that rdmsr executes on the proper CPU. Pointed out by: John Baldwin Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 (text+ko) ==== @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#6 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 $ * */ @@ -64,7 +64,7 @@ static int msrtemp_attach(device_t); static int msrtemp_detach(device_t); -static int msrtemp_get_temp(void); +static int msrtemp_get_temp(int); static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t msrtemp_methods[] = { @@ -130,25 +130,11 @@ static int msrtemp_attach(device_t dev) { - int regs[4]; struct msrtemp_softc *sc = device_get_softc(dev); device_t pdev; pdev = device_get_parent(dev); - if (bootverbose) { - /* - * CPUID 0x06 returns 1 if the processor has on-die thermal - * sensors. We already checked that in the identify routine. - * EBX[0:3] contains the number of sensors. - */ - do_cpuid(0x06, regs); - device_printf(dev, "%d digital thermal sensor(s)\n", - regs[2] & 0x03); - } - device_printf(dev, "current temperature: %d degC\n", - msrtemp_get_temp()); - /* * Add the "temperature" MIB to dev.cpu.N. */ @@ -157,7 +143,7 @@ device_get_sysctl_tree(pdev)), OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RD, - NULL, 0, msrtemp_get_temp_sysctl, "I", + dev, 0, msrtemp_get_temp_sysctl, "I", "Current temperature in degC"); return 0; } @@ -174,10 +160,14 @@ static int -msrtemp_get_temp(void) +msrtemp_get_temp(int cpu) { uint64_t temp; + mtx_lock_spin(&sched_lock); + sched_bind(curthread, cpu); + mtx_unlock_spin(&sched_lock); + /* * The digital temperature reading is located at bit 16 * of MSR_THERM_STATUS. @@ -212,9 +202,10 @@ static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) { + device_t dev = (device_t) arg1; int temp; - temp = msrtemp_get_temp(); + temp = msrtemp_get_temp(device_get_unit(dev)); return sysctl_handle_int(oidp, &temp, 0, req); }