On Thu, 2011-01-20 at 22:24 +0100, Geert Uytterhoeven wrote:On Thu, Jan 20, 2011 at 22:16, John Stultz<john.stultz@xxxxxxxxxx> wrote:On Thu, 2011-01-20 at 12:51 -0800, David Daney wrote:open("/dev/rtc0", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, PRESTO_GETMOUNT or RTC_UIE_ON, 0) = 0
_newselect(4, [3], NULL, NULL, {5, 0}) = 0 (Timeout)
write(2, "select() to /dev/rtc0 to wait for"..., 55select() to /dev/rtc0
to wait for clock tick timed out
) = 55
ioctl(3, PRESTO_SETPID or RTC_UIE_OFF, 0) = 0
close(3) = 0
exit_group(1) = ?
The hwclock program is asking to put the clock in UIE mode and then
does a select() on it. Since the alarm doesn't work, the select times out.
Previously the ioctl(RTC_UIE_ON) would return EINVAL:
Ah. Good diagnosis! Let me try to get a patch for you and Andreas to
test.
I'm also seeing this on m68k (ARAnyM, rtc-generic).
Geert, David, Andreas,
Could you try the following? Its a bit messy of a patch doing a couple
of things:
1) Simplify the timer->enabled management by pushing it into
rtc_timer_enqueue/remove (needed cleanup for #2).
2) Properly propagating errors from __rtc_set_alarm back through
rtc_timer_enqueue and users.
3) Trivial clenaup making rtc_timer_enqueue/remove static.
4) Fixup virtualized rtc_read_alarm to check hardware capabilities and
return errors (also restores zeroing of the rtc_wkalrm stucture).
I'll be cleaning these up and breaking them into commits I can send
upward, but I wanted to make sure it resolves the issue for you.
Let me know if it fixes things.
thanks
-john