Re: [lm-sensors] [PATCH 1/1] HWMON: coretemp, suspend fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi:

* Rafael J. Wysocki <[email protected]> [2007-12-01 00:51:40 +0100]:
> On Saturday, 1 of December 2007, Rafael J. Wysocki wrote:
> > On Friday, 30 of November 2007, Jiri Slaby wrote:
> > > On 11/30/2007 11:15 PM, Jean Delvare wrote:
> > > > Hi Jiri,
> > > 
> [--snip--]
> > > > 
> > > > Should this change go to the stable tree(s) as well?
> > > 
> > > Sorry, I have no idea. Rafael?
> > 
> > Well, actually, having looked once again at the patch, I think that it's
> > slightly wrong.  Namely, it looks like we just should drop all of the _FROZEN
> > actions from there.
> > 
> > Fixed patch follows and I think it's also a candidate for -stable.
> 
> Crap, I forgot to add the sign-off, so here it goes again:
> 
> ---
> Subject: HWMON: coretemp, suspend fix
>  
> It's not permitted to unregister a device after devices have been suspended.
> It causes deadlocks to appear on systems with coretemp hwmon loaded.  To avoid
> this, we can make coretemp_cpu_callback() do nothing if the _FROZEN bit is set
> in action.
>  
> Also, in other cases it's generally to late to unregister the coretemp device
> if the CPU is already dead, so it should be unregistered on CPU_DOWN_PREPARE.
>  
> Signed-off-by: Rafael J. Wysocki <[email protected]> (frozen fix)
> Cc: Mark M. Hoffman <[email protected]>
> Cc: Jiri Slaby <[email protected]>
> Cc: Andrew Morton <[email protected]>
> ---
> 
>  drivers/hwmon/coretemp.c |    5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> Index: linux-2.6/drivers/hwmon/coretemp.c
> ===================================================================
> --- linux-2.6.orig/drivers/hwmon/coretemp.c
> +++ linux-2.6/drivers/hwmon/coretemp.c
> @@ -337,11 +337,10 @@ static int coretemp_cpu_callback(struct 
>  
>  	switch (action) {
>  	case CPU_ONLINE:
> -	case CPU_ONLINE_FROZEN:
> +	case CPU_DOWN_FAILED:
>  		coretemp_device_add(cpu);
>  		break;
> -	case CPU_DEAD:
> -	case CPU_DEAD_FROZEN:
> +	case CPU_DOWN_PREPARE:
>  		coretemp_device_remove(cpu);
>  		break;
>  	}

Sorry for the delay, it took me some time to RTF code and convince
myself that nothing can tickle this driver's sysfs files after a
CPU_DOWN_PREPARE_FROZEN.  As long as I didn't misread that...

Acked-by: Mark M. Hoffman <[email protected]>

PS: while reading kernel/power/disk.c, I saw this...

335 static void power_down(void)
336 {
337         switch (hibernation_mode) {
338         case HIBERNATION_TEST:
339         case HIBERNATION_TESTPROC:
340                 break;
341         case HIBERNATION_REBOOT:
342                 kernel_restart(NULL);
343                 break;
344         case HIBERNATION_PLATFORM:
345                 hibernation_platform_enter();
346         case HIBERNATION_SHUTDOWN:
347                 kernel_power_off();
348                 break;
349         }
350         kernel_halt();
351         /*
352          * Valid image is on the disk, if we continue we risk serious data
353          * corruption after resume.
354          */
355         printk(KERN_CRIT "Please power me down manually\n");
356         while(1);
357 }

Shouldn't that be while(1) cpu_relax(); ?

Regards,

-- 
Mark M. Hoffman
[email protected]

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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux