On 22/02/2017 at 09:33:14 +0800, Phil Reid wrote:
> On 22/02/2017 04:33, Alexandre Belloni wrote:
> > On 17/02/2017 at 09:44:58 +0800, Phil Reid wrote:
> > > The wakealarm attribute is currently not exposed in the sysfs interface
> > > as the device has not been set as doing wakealarm when device_register
> > > is called. Changing the order of the calls fixes that problem. Interrupts
> > > are cleared in check_rtc_status prior to requesting the interrupt.
> > > 
> > 
> > This basically revert b4b77f3c280e38cec178f81d7a4d7e65f4045913 So I'm
> > not sure this is sufficient to ensure the IRQ will never fire.
> > 
> > (I don't know whether this was a real bug or something reported by a
> > static analysis tool).
> 
> G'day Alexandre,
> Without this change the wakealarm sysfs is never created.
> This is done in rtc_device_register, but a filter to wakealarm attribute 
> effectively on
> dev->power.can_wakeup flag. Which is set via the init wakeup call.
> 
> But looking at that commit and thinking about it some more I can see the 
> problem
> b4b77f3c280e38cec178f81d7a4d7e65f4045913 was try to solve.
> 
> Looking at other drivers some of them have similar order but use their own 
> mutex.
> eg rtc-rc8803 and don't use the ops_lock
> 
> Or others set device_init_wakeup and then fail if the irq fails to register.
> 
> Currently if the ds3232 has an irq set but fails to register the irq it falls 
> back
> to being a non wakeup source. To me it makes more sense to just fall if the 
> config
> has an irq defined.
> 
> Then we could set device_init_wakeup based on there being an irq prior to 
> device_register
> and then request the irq after device register. But fail the probe if the irq 
> request fails.
> 
> Thoughts?
> 

I think you can use device_set_wakeup_capable() afterwards which would
fit this use case. Can you try that?

Anyway, I have a pending rework of the rtc registration that will solve
this issue (and the sysfs attribute creation race).

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

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to