Re: w83627ehf: Wrong values reported after resuming from suspend/hibernation

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

 



Am 29.07.2013 04:24, schrieb Harald Judt:
> Am 29.07.2013 00:28, schrieb Guenter Roeck:
>> On 07/28/2013 01:43 PM, Harald Judt wrote:
>>> Hi,
>>>
>>> Am 22.10.2012 23:40, schrieb Guenter Roeck:
>>>> On Mon, Oct 22, 2012 at 05:03:45PM +0200, Harald Judt wrote:
>>>>> Hi,
>>>>>
>>>>> After resuming from suspend or hibernation, the Vbat value is
>>>>> reported to be 0.0. Before that, it reported the correct value.
>>>>> Min/max values are wrong too.
>>>>>
>>>>> Linux-3.6.2, ASRock Z77 Extreme4 BIOS v1.80.
>>>>>
>>>>> Before suspend:
>>>>> nct6776-isa-0290
>>>>> Adapter: ISA adapter
>>>>> Vcore:         +0.97 V  (min =  +0.00 V, max =  +1.74 V)
>>>>> in1:           +1.84 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> AVCC:          +3.34 V  (min =  +2.98 V, max =  +3.63 V)
>>>>> +3.3V:         +3.34 V  (min =  +2.98 V, max =  +3.63 V)
>>>>> in4:           +1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> in5:           +1.68 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> 3VSB:          +3.47 V  (min =  +2.98 V, max =  +3.63 V)
>>>>> Vbat:          +3.31 V  (min =  +2.70 V, max =  +3.63 V)
>>>>> fan1:            0 RPM  (min =    0 RPM)  ALARM
>>>>> fan2:         1289 RPM  (min =    0 RPM)  ALARM
>>>>> fan3:          724 RPM  (min =    0 RPM)  ALARM
>>>>> fan4:          661 RPM  (min =    0 RPM)  ALARM
>>>>> fan5:         1076 RPM  (min =    0 RPM)  ALARM
>>>>> SYSTIN:        +37.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM
>>>>> sensor = thermistor
>>>>> CPUTIN:        +28.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
>>>>> thermistor
>>>>> AUXTIN:        +33.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
>>>>> thermistor
>>>>> PECI Agent 0:  +32.0°C
>>>>> cpu0_vid:     +0.000 V
>>>>> intrusion0:   ALARM
>>>>> intrusion1:   ALARM
>>>>>
>>>>> After resuming:
>>>>> nct6776-isa-0290
>>>>> Adapter: ISA adapter
>>>>> Vcore:         +0.97 V  (min =  +0.00 V, max =  +1.74 V)
>>>>> in1:           +1.84 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> AVCC:          +3.34 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> +3.3V:         +3.34 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> in4:           +1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> in5:           +1.68 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> 3VSB:          +3.47 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
>>>>> Vbat:          +0.00 V  (min =  +0.00 V, max =  +0.00 V)
>>>>> fan1:            0 RPM  (min =    0 RPM)  ALARM
>>>>> fan2:         1271 RPM  (min =    0 RPM)  ALARM
>>>>> fan3:          734 RPM  (min =    0 RPM)  ALARM
>>>>> fan4:          673 RPM  (min =    0 RPM)  ALARM
>>>>> fan5:         1093 RPM  (min =    0 RPM)  ALARM
>>>>> SYSTIN:        +36.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM
>>>>> sensor = thermistor
>>>>> CPUTIN:        +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
>>>>> thermistor
>>>>> AUXTIN:        +33.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
>>>>> thermistor
>>>>> PECI Agent 0:  +30.0°C
>>>>> cpu0_vid:     +0.000 V
>>>>> intrusion0:   ALARM
>>>>> intrusion1:   ALARM
>>>>>
>>>>> Reloading the module helps. Of course, a fresh boot too ;-)
>>>>>
>>>> The driver doesn't implement suspend/resume support, so it is not very
>>>> surprising that the limits get lost - and it looks like vbat monitoring
>>>> is disabled by default, so that gets lost as well.
>>>>
>>>> Someone would have to submit a patch to add suspend/resume support to
>>>> the driver ... any takers out there ?
>>>>
>>>> Thanks,
>>>> Guenter
>>>
>>> A while ago, support for suspend/resume has been added and this issue
>>> was fixed and values are now preserved during suspend/resume.
>>>
>>> 3300fb4f88688029fff8dfb9ec0734f6e4cba3e7 hwmon: (w83627ehf) Force
>>> initial bank selection
>>> 7e630bb55a52cfaa35011c0ebc2efc96f13e5135 hwmon: (w83627ehf) Add support
>>> for suspend
>>>
>>> But now with kernel 3.11-rc2, I noticed it only works in case of
>>> suspend/resume, not hibernate/resume. I'm not sure this worked properly
>>> with kernel 3.6.2 with the patch applied, though I think it did, but I
>>> don't have that version available for verification at the moment. Of
>>> course, I could test if necessary. Perhaps there is more to do for
>>> hibernate/resume than for suspend/resume?
>>>
>> It should not require anything special, and at first glance the code
>> seems to be ok. Maybe hibernate (now) results in some secondary changes
>> which we don't take into account.
>>
>> It would be great if you can download
>>     http://roeck-us.net/linux/bin/superiotool
>> and run "sudo ./superiotool -d -e" before hibernation and after resume
>> and send me the results.
>>
>> Thanks,
>> Guenter
> 
> Ok, I've switched to the nct6775 driver, didn't know there was a new one
> ;-) Unfortunately, the same behaviour. I have installed superiotool-6637
> from the gentoo repository, I hope that does the job too. I compiled
> nct6775, did modprobe -r w83627ehf, modprobe nct6775.
> Sensors output:
> 
> Before hibernation:
> -------------------------------------------------------------------
> nct6776-isa-0290
> Adapter: ISA adapter
> Vcore:          +0.97 V  (min =  +0.00 V, max =  +1.74 V)
> in1:            +1.82 V  (min =  +1.71 V, max =  +1.89 V)
> AVCC:           +3.34 V  (min =  +2.98 V, max =  +3.63 V)
> +3.3V:          +3.33 V  (min =  +2.98 V, max =  +3.63 V)
> in4:            +1.07 V  (min =  +1.00 V, max =  +1.50 V)
> in5:            +1.68 V  (min =  +1.50 V, max =  +1.89 V)
> in6:            +0.92 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> 3VSB:           +3.47 V  (min =  +2.98 V, max =  +3.63 V)
> Vbat:           +3.31 V  (min =  +2.70 V, max =  +3.63 V)
> fan1:             0 RPM  (min =    0 RPM)
> fan2:          1337 RPM  (min =    0 RPM)
> fan3:           742 RPM  (min =    0 RPM)
> fan4:           661 RPM  (min =    0 RPM)
> fan5:          1077 RPM  (min =    0 RPM)
> SYSTIN:         +42.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor
> = thermistor
> CPUTIN:         +35.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> AUXTIN:         +32.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> PECI Agent 0:   +37.0°C  (high = +80.0°C, hyst = +75.0°C)
>                          (crit = +98.0°C)
> PCH_CHIP_TEMP:   +0.0°C
> PCH_CPU_TEMP:    +0.0°C
> PCH_MCH_TEMP:    +0.0°C
> intrusion0:    ALARM
> intrusion1:    OK
> -------------------------------------------------------------------
> 
> After resuming from hibernation:
> -------------------------------------------------------------------
> nct6776-isa-0290
> Adapter: ISA adapter
> Vcore:          +1.24 V  (min =  +0.00 V, max =  +1.74 V)
> in1:            +1.82 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> AVCC:           +3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> +3.3V:          +3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> in4:            +1.09 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> in5:            +1.67 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> in6:            +0.93 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> 3VSB:           +3.47 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> Vbat:           +0.00 V  (min =  +0.00 V, max =  +0.00 V)
> fan1:             0 RPM  (min =    0 RPM)  ALARM
> fan2:          1339 RPM  (min =    0 RPM)  ALARM
> fan3:           744 RPM  (min =    0 RPM)  ALARM
> fan4:           657 RPM  (min =    0 RPM)  ALARM
> fan5:          1100 RPM  (min =    0 RPM)  ALARM
> SYSTIN:         +43.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor
> = thermistor
> CPUTIN:         +37.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> AUXTIN:         +32.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> PECI Agent 0:   +43.0°C  (high = +80.0°C, hyst = +75.0°C)
>                          (crit = +98.0°C)
> PCH_CHIP_TEMP:   +0.0°C
> PCH_CPU_TEMP:    +0.0°C
> PCH_MCH_TEMP:    +0.0°C
> intrusion0:    ALARM
> intrusion1:    OK
> -------------------------------------------------------------------
> 
> 
> modprobe -r nct6775, modprobe nct6775, sensors -s to restore functionality.
> 
> Before suspending:
> -------------------------------------------------------------------
> nct6776-isa-0290
> Adapter: ISA adapter
> Vcore:          +0.97 V  (min =  +0.00 V, max =  +1.74 V)
> in1:            +1.82 V  (min =  +1.71 V, max =  +1.89 V)
> AVCC:           +3.34 V  (min =  +2.98 V, max =  +3.63 V)
> +3.3V:          +3.33 V  (min =  +2.98 V, max =  +3.63 V)
> in4:            +1.10 V  (min =  +1.00 V, max =  +1.50 V)
> in5:            +1.68 V  (min =  +1.50 V, max =  +1.89 V)
> in6:            +0.94 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> 3VSB:           +3.47 V  (min =  +2.98 V, max =  +3.63 V)
> Vbat:           +3.33 V  (min =  +2.70 V, max =  +3.63 V)
> fan1:             0 RPM  (min =    0 RPM)
> fan2:          1345 RPM  (min =    0 RPM)
> fan3:           731 RPM  (min =    0 RPM)
> fan4:           655 RPM  (min =    0 RPM)
> fan5:          1083 RPM  (min =    0 RPM)
> SYSTIN:         +45.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor
> = thermistor
> CPUTIN:         +36.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> AUXTIN:         +31.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> PECI Agent 0:   +38.0°C  (high = +80.0°C, hyst = +75.0°C)
>                          (crit = +98.0°C)
> PCH_CHIP_TEMP:   +0.0°C
> PCH_CPU_TEMP:    +0.0°C
> PCH_MCH_TEMP:    +0.0°C
> intrusion0:    ALARM
> intrusion1:    OK
> -------------------------------------------------------------------
> 
> After resuming from S3:
> -------------------------------------------------------------------
> nct6776-isa-0290
> Adapter: ISA adapter
> Vcore:          +0.97 V  (min =  +0.00 V, max =  +1.74 V)
> in1:            +1.82 V  (min =  +1.71 V, max =  +1.89 V)
> AVCC:           +3.33 V  (min =  +2.98 V, max =  +3.63 V)
> +3.3V:          +3.33 V  (min =  +2.98 V, max =  +3.63 V)
> in4:            +1.10 V  (min =  +1.00 V, max =  +1.50 V)
> in5:            +1.67 V  (min =  +1.50 V, max =  +1.89 V)
> in6:            +0.94 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
> 3VSB:           +3.47 V  (min =  +2.98 V, max =  +3.63 V)
> Vbat:           +3.33 V  (min =  +2.70 V, max =  +3.63 V)
> fan1:             0 RPM  (min =    0 RPM)
> fan2:          1336 RPM  (min =    0 RPM)
> fan3:           744 RPM  (min =    0 RPM)
> fan4:           656 RPM  (min =    0 RPM)
> fan5:          1103 RPM  (min =    0 RPM)
> SYSTIN:         +45.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor
> = thermistor
> CPUTIN:         +36.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> AUXTIN:         +31.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor =
> thermistor
> PECI Agent 0:   +45.0°C  (high = +80.0°C, hyst = +75.0°C)
>                          (crit = +98.0°C)
> PCH_CHIP_TEMP:   +0.0°C
> PCH_CPU_TEMP:    +0.0°C
> PCH_MCH_TEMP:    +0.0°C
> intrusion0:    ALARM
> intrusion1:    OK
> -------------------------------------------------------------------
> 
> 
> Superiotool output is attached.
> 
> Note that I can do "sensors -s", but that won't reset/reenable some
> values like vbat. The only way to get it back working is rmmod/modprobe.
> It seems like the code that runs properly at resume after suspend simply
> is not executed after resuming from hibernation. Maybe I should put some
> debug output in there to verify...

And indeed, the resume code is not run on hibernate/resume. I've place
two lines in there for debugging (see the small patch attached). The
lines are printed at suspend/resume, but not at hibernate/resume. I
guess this is not a problem with the nct6775 driver then?

Harald

-- 
`Experience is the best teacher.'

PGP Key ID: 0xB29C7F8F
diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
index 99cec18..a7a0b07 100644
--- a/drivers/hwmon/nct6775.c
+++ b/drivers/hwmon/nct6775.c
@@ -4007,6 +4007,7 @@ static int nct6775_resume(struct device *dev)
 	struct nct6775_sio_data *sio_data = dev->platform_data;
 	int i, j;
 
+    printk(KERN_INFO "nct6776: resuming...\n");
 	mutex_lock(&data->update_lock);
 	data->bank = 0xff;		/* Force initial bank selection */
 
@@ -4050,6 +4051,7 @@ static int nct6775_resume(struct device *dev)
 	data->valid = false;
 	mutex_unlock(&data->update_lock);
 
+    printk(KERN_INFO "nct6776: resume complete.\n");
 	return 0;
 }
 
_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux