On 18/04/2016 at 06:15:40 +0000, Qianyu Gong wrote :
> Hi Akinobu,
> 
> I got an rtc call trace when booting 4.6 kernel on our board and I found it
> was caused by this patch:
> 
> commit fc1dcb0b39dbb10d3290f2fcd6e154670f699166
> Author: Akinobu Mita <akinobu.m...@gmail.com>
> Date:   Mon Mar 7 00:27:53 2016 +0900
> 
>     rtc: ds3232: use rtc->ops_lock to protect alarm operations
> 
>     ds3232->mutex is used to protect for alarm operations which
>     need to access status and control registers.
> 
>     But we can use rtc->ops_lock instead.  rtc->ops_lock is held when most
>     of rtc_class_ops methods are called, so we only need to explicitly
>     acquire it from irq handler in order to protect form concurrent
>     accesses.
> 
>     Signed-off-by: Akinobu Mita <akinobu.m...@gmail.com>
> Signed-off-by: Alexandre Belloni <alexandre.bell...@free-electrons.com
> 
> The problem is that rtc->ops_lock would be accessed in ds3232_irq()
> without being initialized as rtc_device_register() is called too late.
> 
> As I'm not familiar with rtc things, could I just revert the patch or you 
> already
> have a solution to this problem? Thanks in advance.
> 
> 

Well, many RTC drivers actually suffer from that. I'm planning to change
the infrastructure to handle this case better.
Meanwhile, this is worth fixing.


-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

Reply via email to