cvs commit: src/share/man/man4 coretemp.4 src/sys/dev/coretemp
coretemp.c
Rui Paulo
rpaulo at fnop.net
Mon Oct 15 02:13:14 PDT 2007
On 14 Oct 2007, at 19:48, Nate Lawson wrote:
> Alexander Leidinger wrote:
>> netchild 2007-10-14 10:59:44 UTC
>>
>> FreeBSD src repository
>>
>> Modified files:
>> share/man/man4 coretemp.4
>> sys/dev/coretemp coretemp.c
>> Log:
>> Convert coretemp(4) to the hardware sensors framework and
>> make sure to never call sched_bind() for uninitialised CPUs.
>>
>> Submitted by: Constantine A. Murenin <cnst at FreeBSD.org>
>> Sponsored by: Google Summer of Code 2007 (GSoC2007/cnst-sensors)
>> Mentored by: syrinx
>> Tested by: many
>> OKed by: kensmith
>>
>> Revision Changes Path
>> 1.2 +14 -6 src/share/man/man4/coretemp.4
>> 1.3 +46 -35 src/sys/dev/coretemp/coretemp.c
>
>> - thread_lock(curthread);
>> - sched_unbind(curthread);
>> - thread_unlock(curthread);
>> + * Bind to specific CPU to read the correct temperature.
>> + * If not all CPUs are initialised, then only read from
>> + * cpu0, returning -1 on all other CPUs.
>> + */
>> + if (smp_cpus > 1) {
>> + thread_lock(curthread);
>> + sched_bind(curthread, cpu);
>> + msr = rdmsr(MSR_THERM_STATUS);
>> + sched_unbind(curthread);
>> + thread_unlock(curthread);
>> + } else if (cpu != 0)
>> + return (-1);
>> + else
>> + msr = rdmsr(MSR_THERM_STATUS);
>
> I reviewed this part of the patch for Rui Paulo and told him to use
> smp_active instead of smp_cpus > 1.
Sorry, for not getting back to you sooner, but there's a better way
than that. I briefly chatted with jhb and the proper way is to use
SYSINIT(9). This way the module works on UP and SMP machines.
I have a patch, but my devel machine has panic()ed.
Regards.
--
Rui Paulo
More information about the cvs-src
mailing list