[66/66] drivers/hwmon/coretemp.c: detect the thermal sensors by CPUID
diff mbox series

Message ID 20101022183602.094033497@clark.site
State New, archived
Headers show
Series
  • 2.6.32.25-stable review
Related show

Commit Message

Greg KH Oct. 22, 2010, 6:35 p.m. UTC
2.6.32-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Carsten Emde <C.Emde@osadl.org>

commit 5db47b009d17d69a2f8d84357e7b24c3e3c2edec upstream.

The thermal sensors of Intel(R) CPUs can be detected by CPUID instruction,
indicated by CPUID.06H.EAX[0].

Signed-off-by: Huaxu Wan <huaxu.wan@linux.intel.com>
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Reviewed-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Yong Wang <yong.y.wang@linux.intel.com>
Cc: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Brad Buce <Brad.Buce@elbitsystems-us.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/hwmon/coretemp.c |   34 +++++++++++++---------------------
 1 file changed, 13 insertions(+), 21 deletions(-)



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Comments

Jean Delvare Oct. 23, 2010, 9:27 a.m. UTC | #1
On Fri, 22 Oct 2010 11:35:33 -0700, Greg KH wrote:
> 2.6.32-stable review patch.  If anyone has any objections, please let us know.

Yes, I have an objection. This isn't a bug fix and thus doesn't belong
to a stable kernel series. Furthermore, this change will let the
coretemp driver bind to CPU devices it doesn't properly support. Proper
support for recent CPUs would need commit
a321cedb12904114e2ba5041a3673ca24deb09c9 (drivers/hwmon/coretemp.c: get
TjMax value from MSR) which is way too large and intrusive for a stable
series.

So please drop this patch from the 2.6.32-stable queue.

> 
> ------------------
> 
> From: Carsten Emde <C.Emde@osadl.org>
> 
> commit 5db47b009d17d69a2f8d84357e7b24c3e3c2edec upstream.
> 
> The thermal sensors of Intel(R) CPUs can be detected by CPUID instruction,
> indicated by CPUID.06H.EAX[0].
> 
> Signed-off-by: Huaxu Wan <huaxu.wan@linux.intel.com>
> Signed-off-by: Carsten Emde <C.Emde@osadl.org>
> Reviewed-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> Cc: Jean Delvare <khali@linux-fr.org>
> Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
> Cc: Yong Wang <yong.y.wang@linux.intel.com>
> Cc: Rudolf Marek <r.marek@assembler.cz>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Brad Buce <Brad.Buce@elbitsystems-us.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
> ---
>  drivers/hwmon/coretemp.c |   34 +++++++++++++---------------------
>  1 file changed, 13 insertions(+), 21 deletions(-)
> 
> --- a/drivers/hwmon/coretemp.c
> +++ b/drivers/hwmon/coretemp.c
> @@ -479,28 +479,20 @@ static int __init coretemp_init(void)
>  
>  	for_each_online_cpu(i) {
>  		struct cpuinfo_x86 *c = &cpu_data(i);
> -
> -		/* check if family 6, models 0xe (Pentium M DC),
> -		  0xf (Core 2 DC 65nm), 0x16 (Core 2 SC 65nm),
> -		  0x17 (Penryn 45nm), 0x1a (Nehalem), 0x1c (Atom),
> -		  0x1e (Lynnfield) */
> -		if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
> -		    !((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
> -			(c->x86_model == 0x16) || (c->x86_model == 0x17) ||
> -			(c->x86_model == 0x1a) || (c->x86_model == 0x1c) ||
> -			(c->x86_model == 0x1e))) {
> -
> -			/* supported CPU not found, but report the unknown
> -			   family 6 CPU */
> -			if ((c->x86 == 0x6) && (c->x86_model > 0xf))
> -				printk(KERN_WARNING DRVNAME ": Unknown CPU "
> -					"model %x\n", c->x86_model);
> -			continue;
> +		/*
> +		* CPUID.06H.EAX[0] indicates whether the CPU has thermal
> +		* sensors. We check this bit only, all the early CPUs
> +		* without thermal sensors will be filtered out.
> +		*/
> +		if (c->cpuid_level >= 6 && (cpuid_eax(0x06) & 0x01)) {
> +			err = coretemp_device_add(i);
> +			if (err)
> +				goto exit_devices_unreg;
> +
> +		} else {
> +			printk(KERN_INFO DRVNAME ": CPU (model=0x%x)"
> +				" has no thermal sensor.\n", c->x86_model);
>  		}
> -
> -		err = coretemp_device_add(i);
> -		if (err)
> -			goto exit_devices_unreg;
>  	}
>  	if (list_empty(&pdev_list)) {
>  		err = -ENODEV;
> 
>
Greg KH Oct. 23, 2010, 4:06 p.m. UTC | #2
On Sat, Oct 23, 2010 at 11:27:32AM +0200, Jean Delvare wrote:
> On Fri, 22 Oct 2010 11:35:33 -0700, Greg KH wrote:
> > 2.6.32-stable review patch.  If anyone has any objections, please let us know.
> 
> Yes, I have an objection. This isn't a bug fix and thus doesn't belong
> to a stable kernel series. Furthermore, this change will let the
> coretemp driver bind to CPU devices it doesn't properly support. Proper
> support for recent CPUs would need commit
> a321cedb12904114e2ba5041a3673ca24deb09c9 (drivers/hwmon/coretemp.c: get
> TjMax value from MSR) which is way too large and intrusive for a stable
> series.
> 
> So please drop this patch from the 2.6.32-stable queue.

Brad, I thought you got Jean's ack for this to be submitted for .32?  If
not, why did you go around the maintainer for this?

Anyway, it's now removed, Jean, thanks for the review, and sorry for the
noise.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Patch
diff mbox series

--- a/drivers/hwmon/coretemp.c
+++ b/drivers/hwmon/coretemp.c
@@ -479,28 +479,20 @@  static int __init coretemp_init(void)
 
 	for_each_online_cpu(i) {
 		struct cpuinfo_x86 *c = &cpu_data(i);
-
-		/* check if family 6, models 0xe (Pentium M DC),
-		  0xf (Core 2 DC 65nm), 0x16 (Core 2 SC 65nm),
-		  0x17 (Penryn 45nm), 0x1a (Nehalem), 0x1c (Atom),
-		  0x1e (Lynnfield) */
-		if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
-		    !((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
-			(c->x86_model == 0x16) || (c->x86_model == 0x17) ||
-			(c->x86_model == 0x1a) || (c->x86_model == 0x1c) ||
-			(c->x86_model == 0x1e))) {
-
-			/* supported CPU not found, but report the unknown
-			   family 6 CPU */
-			if ((c->x86 == 0x6) && (c->x86_model > 0xf))
-				printk(KERN_WARNING DRVNAME ": Unknown CPU "
-					"model %x\n", c->x86_model);
-			continue;
+		/*
+		* CPUID.06H.EAX[0] indicates whether the CPU has thermal
+		* sensors. We check this bit only, all the early CPUs
+		* without thermal sensors will be filtered out.
+		*/
+		if (c->cpuid_level >= 6 && (cpuid_eax(0x06) & 0x01)) {
+			err = coretemp_device_add(i);
+			if (err)
+				goto exit_devices_unreg;
+
+		} else {
+			printk(KERN_INFO DRVNAME ": CPU (model=0x%x)"
+				" has no thermal sensor.\n", c->x86_model);
 		}
-
-		err = coretemp_device_add(i);
-		if (err)
-			goto exit_devices_unreg;
 	}
 	if (list_empty(&pdev_list)) {
 		err = -ENODEV;