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