Re: RTC seems broken on 2.6.38-rc1 for RTCs lacking alarms.

From: David Daney
Date: Thu Jan 20 2011 - 17:54:44 EST


On 01/20/2011 02:23 PM, John Stultz wrote:
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


John,

With that patch, it works now. Thanks.

You can add:

Tested-by: David Daney <ddaney@xxxxxxxxxxxxxxxxxx>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/