diff mbox

[v2] rtc/ds3232: fix ds3232 get a WARNING trace in resume function

Message ID 1439370853-32282-1-git-send-email-dongsheng.wang@freescale.com
State Accepted
Headers show

Commit Message

Dongsheng Wang Aug. 12, 2015, 9:14 a.m. UTC
From: Wang Dongsheng <dongsheng.wang@freescale.com>

If ds3232 work on some platform that is not implementation
irq_set_wake, ds3232 will get a WARNING trace in resume.
So fix ds3232->suspended state to false when irq_set_irq_wake
return error.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 729 at kernel/irq/manage.c:604
irq_set_irq_wake+0x4b/0x8c()
Unbalanced IRQ 201 wake disable
Modules linked in:
CPU: 0 PID: 729 Comm: sh Not tainted 3.12.19-rt30+ #25
[<800107d9>] (unwind_backtrace+0x1/0x88) from [<8000e4ef>]
(show_stack+0xb/0xc)
[<8000e4ef>] (show_stack+0xb/0xc) from [<802b5fa9>]
(dump_stack+0x4d/0x60)
[<802b5fa9>] (dump_stack+0x4d/0x60) from [<800186dd>]
(warn_slowpath_common+0x45/0x64)
[<800186dd>] (warn_slowpath_common+0x45/0x64) from [<80018717>]
(warn_slowpath_fmt+0x1b/0x24)
[<80018717>] (warn_slowpath_fmt+0x1b/0x24) from [<8003a8d3>]
(irq_set_irq_wake+0x4b/0x8c)
[<8003a8d3>] (irq_set_irq_wake+0x4b/0x8c) from [<80204fcb>]
(ds3232_resume+0x2d/0x36)
[<80204fcb>] (ds3232_resume+0x2d/0x36) from [<801954c7>]
(dpm_run_callback.isra.13+0xb/0x28)
[<801954c7>] (dpm_run_callback.isra.13+0xb/0x28) from [<80195b1b>]
(device_resume+0x7b/0xa2)
[<80195b1b>] (device_resume+0x7b/0xa2) from [<80195f0f>]
(dpm_resume+0xbb/0x19c)
[<80195f0f>] (dpm_resume+0xbb/0x19c) from [<801960d9>]
(dpm_resume_end+0x9/0x12)
[<801960d9>] (dpm_resume_end+0x9/0x12) from [<80037e1d>]
(suspend_devices_and_enter+0x17d/0x1d0)
[<80037e1d>] (suspend_devices_and_enter+0x17d/0x1d0) from [<80037ee1>]
(pm_suspend+0x71/0x128)
[<80037ee1>] (pm_suspend+0x71/0x128) from [<80037449>]
(state_store+0x6d/0x80)
[<80037449>] (state_store+0x6d/0x80) from [<800af4d5>]
(sysfs_write_file+0x9f/0xde)
[<800af4d5>] (sysfs_write_file+0x9f/0xde) from [<8007a437>]
(vfs_write+0x7b/0x104)
[<8007a437>] (vfs_write+0x7b/0x104) from [<8007a7f7>]
(SyS_write+0x27/0x48)
[<8007a7f7>] (SyS_write+0x27/0x48) from [<8000c121>]
(ret_fast_syscall+0x1/0x44)
---[ end trace 640959d2e8de6ccc ]---

Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
---
*v2*
- Use dev_warn_once to instead of dev_info

Comments

Dongsheng Wang Aug. 17, 2015, 7:10 a.m. UTC | #1
Hi Alexandre,

Could you apply this patch?

Regards,
-Dongsheng

> -----Original Message-----
> From: Dongsheng Wang [mailto:dongsheng.wang@freescale.com]
> Sent: Wednesday, August 12, 2015 5:14 PM
> To: alexandre.belloni@free-electrons.com
> Cc: a.zummo@towertech.it; rtc-linux@googlegroups.com; linux-
> kernel@vger.kernel.org; Wang Dongsheng-B40534
> Subject: [PATCH v2] rtc/ds3232: fix ds3232 get a WARNING trace in resume
> function
> 
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> If ds3232 work on some platform that is not implementation
> irq_set_wake, ds3232 will get a WARNING trace in resume.
> So fix ds3232->suspended state to false when irq_set_irq_wake
> return error.
> 
> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 729 at kernel/irq/manage.c:604
> irq_set_irq_wake+0x4b/0x8c()
> Unbalanced IRQ 201 wake disable
> Modules linked in:
> CPU: 0 PID: 729 Comm: sh Not tainted 3.12.19-rt30+ #25
> [<800107d9>] (unwind_backtrace+0x1/0x88) from [<8000e4ef>]
> (show_stack+0xb/0xc)
> [<8000e4ef>] (show_stack+0xb/0xc) from [<802b5fa9>]
> (dump_stack+0x4d/0x60)
> [<802b5fa9>] (dump_stack+0x4d/0x60) from [<800186dd>]
> (warn_slowpath_common+0x45/0x64)
> [<800186dd>] (warn_slowpath_common+0x45/0x64) from [<80018717>]
> (warn_slowpath_fmt+0x1b/0x24)
> [<80018717>] (warn_slowpath_fmt+0x1b/0x24) from [<8003a8d3>]
> (irq_set_irq_wake+0x4b/0x8c)
> [<8003a8d3>] (irq_set_irq_wake+0x4b/0x8c) from [<80204fcb>]
> (ds3232_resume+0x2d/0x36)
> [<80204fcb>] (ds3232_resume+0x2d/0x36) from [<801954c7>]
> (dpm_run_callback.isra.13+0xb/0x28)
> [<801954c7>] (dpm_run_callback.isra.13+0xb/0x28) from [<80195b1b>]
> (device_resume+0x7b/0xa2)
> [<80195b1b>] (device_resume+0x7b/0xa2) from [<80195f0f>]
> (dpm_resume+0xbb/0x19c)
> [<80195f0f>] (dpm_resume+0xbb/0x19c) from [<801960d9>]
> (dpm_resume_end+0x9/0x12)
> [<801960d9>] (dpm_resume_end+0x9/0x12) from [<80037e1d>]
> (suspend_devices_and_enter+0x17d/0x1d0)
> [<80037e1d>] (suspend_devices_and_enter+0x17d/0x1d0) from [<80037ee1>]
> (pm_suspend+0x71/0x128)
> [<80037ee1>] (pm_suspend+0x71/0x128) from [<80037449>]
> (state_store+0x6d/0x80)
> [<80037449>] (state_store+0x6d/0x80) from [<800af4d5>]
> (sysfs_write_file+0x9f/0xde)
> [<800af4d5>] (sysfs_write_file+0x9f/0xde) from [<8007a437>]
> (vfs_write+0x7b/0x104)
> [<8007a437>] (vfs_write+0x7b/0x104) from [<8007a7f7>]
> (SyS_write+0x27/0x48)
> [<8007a7f7>] (SyS_write+0x27/0x48) from [<8000c121>]
> (ret_fast_syscall+0x1/0x44)
> ---[ end trace 640959d2e8de6ccc ]---
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> ---
> *v2*
> - Use dev_warn_once to instead of dev_info
> 
> diff --git a/drivers/rtc/rtc-ds3232.c b/drivers/rtc/rtc-ds3232.c
> index 7e48e53..3554970 100644
> --- a/drivers/rtc/rtc-ds3232.c
> +++ b/drivers/rtc/rtc-ds3232.c
> @@ -463,7 +463,10 @@ static int ds3232_suspend(struct device *dev)
> 
>  	if (device_can_wakeup(dev)) {
>  		ds3232->suspended = true;
> -		irq_set_irq_wake(client->irq, 1);
> +		if (irq_set_irq_wake(client->irq, 1)) {
> +			dev_warn_once(dev, "Can not set wakeup sources\n");
> +			ds3232->suspended = false;
> +		}
>  	}
> 
>  	return 0;
> --
> 2.1.0.27.g96db324
Krzysztof Kozlowski Aug. 17, 2015, 7:37 a.m. UTC | #2
2015-08-17 16:10 GMT+09:00 Wang Dongsheng <Dongsheng.Wang@freescale.com>:
> Hi Alexandre,
>
> Could you apply this patch?

Give some time before pinging.

>
> Regards,
> -Dongsheng
>
>> -----Original Message-----
>> From: Dongsheng Wang [mailto:dongsheng.wang@freescale.com]
>> Sent: Wednesday, August 12, 2015 5:14 PM
>> To: alexandre.belloni@free-electrons.com
>> Cc: a.zummo@towertech.it; rtc-linux@googlegroups.com; linux-
>> kernel@vger.kernel.org; Wang Dongsheng-B40534
>> Subject: [PATCH v2] rtc/ds3232: fix ds3232 get a WARNING trace in resume
>> function
>>
>> From: Wang Dongsheng <dongsheng.wang@freescale.com>
>>
>> If ds3232 work on some platform that is not implementation
>> irq_set_wake, ds3232 will get a WARNING trace in resume.
>> So fix ds3232->suspended state to false when irq_set_irq_wake
>> return error.
>>
>> ------------[ cut here ]------------

Please cut of the cut-here.

>> WARNING: CPU: 0 PID: 729 at kernel/irq/manage.c:604
>> irq_set_irq_wake+0x4b/0x8c()
>> Unbalanced IRQ 201 wake disable
>> Modules linked in:
>> CPU: 0 PID: 729 Comm: sh Not tainted 3.12.19-rt30+ #25
>> [<800107d9>] (unwind_backtrace+0x1/0x88) from [<8000e4ef>]
>> (show_stack+0xb/0xc)
>> [<8000e4ef>] (show_stack+0xb/0xc) from [<802b5fa9>]
>> (dump_stack+0x4d/0x60)
>> [<802b5fa9>] (dump_stack+0x4d/0x60) from [<800186dd>]
>> (warn_slowpath_common+0x45/0x64)
>> [<800186dd>] (warn_slowpath_common+0x45/0x64) from [<80018717>]
>> (warn_slowpath_fmt+0x1b/0x24)
>> [<80018717>] (warn_slowpath_fmt+0x1b/0x24) from [<8003a8d3>]
>> (irq_set_irq_wake+0x4b/0x8c)
>> [<8003a8d3>] (irq_set_irq_wake+0x4b/0x8c) from [<80204fcb>]
>> (ds3232_resume+0x2d/0x36)
>> [<80204fcb>] (ds3232_resume+0x2d/0x36) from [<801954c7>]
>> (dpm_run_callback.isra.13+0xb/0x28)
>> [<801954c7>] (dpm_run_callback.isra.13+0xb/0x28) from [<80195b1b>]
>> (device_resume+0x7b/0xa2)
>> [<80195b1b>] (device_resume+0x7b/0xa2) from [<80195f0f>]
>> (dpm_resume+0xbb/0x19c)
>> [<80195f0f>] (dpm_resume+0xbb/0x19c) from [<801960d9>]
>> (dpm_resume_end+0x9/0x12)
>> [<801960d9>] (dpm_resume_end+0x9/0x12) from [<80037e1d>]
>> (suspend_devices_and_enter+0x17d/0x1d0)
>> [<80037e1d>] (suspend_devices_and_enter+0x17d/0x1d0) from [<80037ee1>]
>> (pm_suspend+0x71/0x128)
>> [<80037ee1>] (pm_suspend+0x71/0x128) from [<80037449>]
>> (state_store+0x6d/0x80)
>> [<80037449>] (state_store+0x6d/0x80) from [<800af4d5>]
>> (sysfs_write_file+0x9f/0xde)
>> [<800af4d5>] (sysfs_write_file+0x9f/0xde) from [<8007a437>]
>> (vfs_write+0x7b/0x104)
>> [<8007a437>] (vfs_write+0x7b/0x104) from [<8007a7f7>]
>> (SyS_write+0x27/0x48)
>> [<8007a7f7>] (SyS_write+0x27/0x48) from [<8000c121>]
>> (ret_fast_syscall+0x1/0x44)
>> ---[ end trace 640959d2e8de6ccc ]---

The dmesg here is not readable. Please fix it. For example by not
wrapping it or removing unnecessary information like kernel addresses.

>>
>> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
>> ---
>> *v2*
>> - Use dev_warn_once to instead of dev_info
>>
>> diff --git a/drivers/rtc/rtc-ds3232.c b/drivers/rtc/rtc-ds3232.c
>> index 7e48e53..3554970 100644
>> --- a/drivers/rtc/rtc-ds3232.c
>> +++ b/drivers/rtc/rtc-ds3232.c
>> @@ -463,7 +463,10 @@ static int ds3232_suspend(struct device *dev)
>>
>>       if (device_can_wakeup(dev)) {
>>               ds3232->suspended = true;
>> -             irq_set_irq_wake(client->irq, 1);
>> +             if (irq_set_irq_wake(client->irq, 1)) {
>> +                     dev_warn_once(dev, "Can not set wakeup sources\n");

s/Can not/Cannot/
One wakeup source or multiple sources?

Best regards,
Krzysztof

>> +                     ds3232->suspended = false;
>> +             }
>>       }
>>
>>       return 0;
>> --
>> 2.1.0.27.g96db324
>
> --
> --
> You received this message because you are subscribed to "rtc-linux".
> Membership options at http://groups.google.com/group/rtc-linux .
> Please read http://groups.google.com/group/rtc-linux/web/checklist
> before submitting a driver.
> ---
> You received this message because you are subscribed to the Google Groups "rtc-linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
Alexandre Belloni Aug. 20, 2015, 11:22 p.m. UTC | #3
On 12/08/2015 at 17:14:13 +0800, Dongsheng Wang wrote :
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> If ds3232 work on some platform that is not implementation
> irq_set_wake, ds3232 will get a WARNING trace in resume.
> So fix ds3232->suspended state to false when irq_set_irq_wake
> return error.
> 
> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 729 at kernel/irq/manage.c:604
> irq_set_irq_wake+0x4b/0x8c()
> Unbalanced IRQ 201 wake disable
> Modules linked in:
> CPU: 0 PID: 729 Comm: sh Not tainted 3.12.19-rt30+ #25
> [<800107d9>] (unwind_backtrace+0x1/0x88) from [<8000e4ef>]
> (show_stack+0xb/0xc)
> [<8000e4ef>] (show_stack+0xb/0xc) from [<802b5fa9>]
> (dump_stack+0x4d/0x60)
> [<802b5fa9>] (dump_stack+0x4d/0x60) from [<800186dd>]
> (warn_slowpath_common+0x45/0x64)
> [<800186dd>] (warn_slowpath_common+0x45/0x64) from [<80018717>]
> (warn_slowpath_fmt+0x1b/0x24)
> [<80018717>] (warn_slowpath_fmt+0x1b/0x24) from [<8003a8d3>]
> (irq_set_irq_wake+0x4b/0x8c)
> [<8003a8d3>] (irq_set_irq_wake+0x4b/0x8c) from [<80204fcb>]
> (ds3232_resume+0x2d/0x36)
> [<80204fcb>] (ds3232_resume+0x2d/0x36) from [<801954c7>]
> (dpm_run_callback.isra.13+0xb/0x28)
> [<801954c7>] (dpm_run_callback.isra.13+0xb/0x28) from [<80195b1b>]
> (device_resume+0x7b/0xa2)
> [<80195b1b>] (device_resume+0x7b/0xa2) from [<80195f0f>]
> (dpm_resume+0xbb/0x19c)
> [<80195f0f>] (dpm_resume+0xbb/0x19c) from [<801960d9>]
> (dpm_resume_end+0x9/0x12)
> [<801960d9>] (dpm_resume_end+0x9/0x12) from [<80037e1d>]
> (suspend_devices_and_enter+0x17d/0x1d0)
> [<80037e1d>] (suspend_devices_and_enter+0x17d/0x1d0) from [<80037ee1>]
> (pm_suspend+0x71/0x128)
> [<80037ee1>] (pm_suspend+0x71/0x128) from [<80037449>]
> (state_store+0x6d/0x80)
> [<80037449>] (state_store+0x6d/0x80) from [<800af4d5>]
> (sysfs_write_file+0x9f/0xde)
> [<800af4d5>] (sysfs_write_file+0x9f/0xde) from [<8007a437>]
> (vfs_write+0x7b/0x104)
> [<8007a437>] (vfs_write+0x7b/0x104) from [<8007a7f7>]
> (SyS_write+0x27/0x48)
> [<8007a7f7>] (SyS_write+0x27/0x48) from [<8000c121>]
> (ret_fast_syscall+0x1/0x44)
> ---[ end trace 640959d2e8de6ccc ]---
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> ---
> *v2*
> - Use dev_warn_once to instead of dev_info
> 

Applied, after fixing the kernel trace and the message like suggested by
Krzysztof.
Dongsheng Wang Aug. 21, 2015, 1:59 a.m. UTC | #4
Thanks, I will push v3 to fix them.

Regards,
-Dongsheng

> -----Original Message-----
> From: Alexandre Belloni [mailto:alexandre.belloni@free-electrons.com]
> Sent: Friday, August 21, 2015 7:22 AM
> To: Wang Dongsheng-B40534; Krzysztof Kozlowski
> Cc: a.zummo@towertech.it; rtc-linux@googlegroups.com; linux-
> kernel@vger.kernel.org
> Subject: Re: [PATCH v2] rtc/ds3232: fix ds3232 get a WARNING trace in resume
> function
> 
> On 12/08/2015 at 17:14:13 +0800, Dongsheng Wang wrote :
> > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> >
> > If ds3232 work on some platform that is not implementation
> > irq_set_wake, ds3232 will get a WARNING trace in resume.
> > So fix ds3232->suspended state to false when irq_set_irq_wake return
> > error.
> >
> > ------------[ cut here ]------------
> > WARNING: CPU: 0 PID: 729 at kernel/irq/manage.c:604
> > irq_set_irq_wake+0x4b/0x8c()
> > Unbalanced IRQ 201 wake disable
> > Modules linked in:
> > CPU: 0 PID: 729 Comm: sh Not tainted 3.12.19-rt30+ #25 [<800107d9>]
> > (unwind_backtrace+0x1/0x88) from [<8000e4ef>]
> > (show_stack+0xb/0xc)
> > [<8000e4ef>] (show_stack+0xb/0xc) from [<802b5fa9>]
> > (dump_stack+0x4d/0x60)
> > [<802b5fa9>] (dump_stack+0x4d/0x60) from [<800186dd>]
> > (warn_slowpath_common+0x45/0x64)
> > [<800186dd>] (warn_slowpath_common+0x45/0x64) from [<80018717>]
> > (warn_slowpath_fmt+0x1b/0x24)
> > [<80018717>] (warn_slowpath_fmt+0x1b/0x24) from [<8003a8d3>]
> > (irq_set_irq_wake+0x4b/0x8c)
> > [<8003a8d3>] (irq_set_irq_wake+0x4b/0x8c) from [<80204fcb>]
> > (ds3232_resume+0x2d/0x36)
> > [<80204fcb>] (ds3232_resume+0x2d/0x36) from [<801954c7>]
> > (dpm_run_callback.isra.13+0xb/0x28)
> > [<801954c7>] (dpm_run_callback.isra.13+0xb/0x28) from [<80195b1b>]
> > (device_resume+0x7b/0xa2)
> > [<80195b1b>] (device_resume+0x7b/0xa2) from [<80195f0f>]
> > (dpm_resume+0xbb/0x19c)
> > [<80195f0f>] (dpm_resume+0xbb/0x19c) from [<801960d9>]
> > (dpm_resume_end+0x9/0x12)
> > [<801960d9>] (dpm_resume_end+0x9/0x12) from [<80037e1d>]
> > (suspend_devices_and_enter+0x17d/0x1d0)
> > [<80037e1d>] (suspend_devices_and_enter+0x17d/0x1d0) from [<80037ee1>]
> > (pm_suspend+0x71/0x128)
> > [<80037ee1>] (pm_suspend+0x71/0x128) from [<80037449>]
> > (state_store+0x6d/0x80)
> > [<80037449>] (state_store+0x6d/0x80) from [<800af4d5>]
> > (sysfs_write_file+0x9f/0xde)
> > [<800af4d5>] (sysfs_write_file+0x9f/0xde) from [<8007a437>]
> > (vfs_write+0x7b/0x104)
> > [<8007a437>] (vfs_write+0x7b/0x104) from [<8007a7f7>]
> > (SyS_write+0x27/0x48)
> > [<8007a7f7>] (SyS_write+0x27/0x48) from [<8000c121>]
> > (ret_fast_syscall+0x1/0x44)
> > ---[ end trace 640959d2e8de6ccc ]---
> >
> > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > ---
> > *v2*
> > - Use dev_warn_once to instead of dev_info
> >
> 
> Applied, after fixing the kernel trace and the message like suggested by
> Krzysztof.
> 
> --
> Alexandre Belloni, Free Electrons
> Embedded Linux, Kernel and Android engineering http://free-electrons.com
diff mbox

Patch

diff --git a/drivers/rtc/rtc-ds3232.c b/drivers/rtc/rtc-ds3232.c
index 7e48e53..3554970 100644
--- a/drivers/rtc/rtc-ds3232.c
+++ b/drivers/rtc/rtc-ds3232.c
@@ -463,7 +463,10 @@  static int ds3232_suspend(struct device *dev)
 
 	if (device_can_wakeup(dev)) {
 		ds3232->suspended = true;
-		irq_set_irq_wake(client->irq, 1);
+		if (irq_set_irq_wake(client->irq, 1)) {
+			dev_warn_once(dev, "Can not set wakeup sources\n");
+			ds3232->suspended = false;
+		}
 	}
 
 	return 0;