public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: john stultz <johnstul@us.ibm.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: rtc-linux@googlegroups.com, LKML <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Alessandro Zummo <a.zummo@towertech.it>,
	Marcelo Roberto Jimenez <mroberto@cpti.cetuc.puc-rio.br>
Subject: Re: [rtc-linux] [PATCH 04/10] RTC: Cleanup rtc_class_ops->read_alarm()
Date: Tue, 22 Feb 2011 12:22:54 -0800	[thread overview]
Message-ID: <1298406174.9215.71.camel@work-vm> (raw)
In-Reply-To: <20110222200046.GD31611@opensource.wolfsonmicro.com>

On Tue, 2011-02-22 at 20:00 +0000, Mark Brown wrote:
> On Tue, Feb 22, 2011 at 11:51:08AM -0800, john stultz wrote:
> > On Tue, 2011-02-22 at 10:16 -0800, Mark Brown wrote:
> 
> > > The WM83xx RTCs can do this (the alarm can be used to initiate a boot)
> > > and I'd expect many embedded RTC controllers can do similar.  The
> > > application would manage this by owning the RTC in the system, usually
> > > with a configuration saying something like "boot every day at 7am" or
> > > something.
> 
> > So since the RTC_ALM_SET doesn't support wildcards, the application
> > would be checking the hardware at least once a day and making sure the
> > alarm was properly set for 7am?
> 
> Probably, yes.  Though some RTCs just ignore the day anyway.
> 
> > Does the approach I mentioned in my last mail to Marcelo sound like a
> > reasonable solution?
> 
> > Basically: The kernel will try to init the value returned from
> > RTC_ALM_READ to whatever the hardware has stored, but since many (very
> > common) rtc devices don't support persistent values after reset,
> > applications shouldn't trust that alarms will persist across resets.
> 
> That'll probably work, yes.

Good to hear!  Thanks again for bringing this issue up. 


> > > Having thought about this a bit I'm thinking that this sort of alarm
> > > handling is probably something I'd expect to see handled in userspace.
> > > I can see us providing a virtual RTC driver that can generate alarms
> > > when there's no actual RTC hardware but adding additional functionality
> > > on top of the hardware feels like an application issue.
> 
> > If you're suggesting that the multiplexing of RTC events doesn't belong
> > in the kernel, and instead should be handled through userland
> > coordination, then I disagree. The kernel's job is explicitly to
> > abstract the hardware so that resources can be shared safely. So
> > abstracting the RTC alarms doesn't seem to be overreaching. But maybe
> > I'm misunderstanding what your saying?
> 
> I'm saying that for something like this it doesn't seem like the kernel
> should be adding support for features that the hardware doesn't actually
> have, it feels like it's going to be more complicated and error prone to
> implement in kernel space.

So yes, its a little split here.  On one hand, if the hardware doesn't
support alarms, we don't pretend it does. 

On the other, we have to preserve the existing behavior, so some things
had to be emulated. For example, I wouldn't have exposed the periodic
irq mode to userland. It simply duplicates existing functionality in the
kernel (ie: periodic timers). But since it has been exposed, to keep
compatibility I ended up emulating it using the kernel functionality it
duplicates.

In some ways it does complicate things, but in others it greatly
simplifies it. You don't have to have 80 drivers each implementing their
own code to set a mode that isn't used. Everyone is using the common
kernel code, so bugs are shared and thus found and fixed faster.
Features can be more easily added, as the limitations of specific
hardware have to be more formally expressed, rather then having to
change 80 drivers that opaquely work around their specific hardware
issues. Also, applications are easier to port, since there are less
platform specific differences.

I do agree that its not always optimal, but sometimes it is necessary if
we want to overcome the limits of earlier design decisions without
breaking applications.

thanks
-john



  reply	other threads:[~2011-02-22 20:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-21 23:55 [PATCH 00/10] [RFC] RTC: Cleanups for 2.6.39 John Stultz
2011-02-21 23:55 ` [PATCH 01/10] RTC: Cleanup rtc_class_ops->irq_set_state John Stultz
2011-02-21 23:55 ` [PATCH 02/10] RTC: Cleanup rtc_class_ops->irq_set_freq() John Stultz
2011-02-21 23:55 ` [PATCH 03/10] RTC: Cleanup rtc_class_ops->update_irq_enable() John Stultz
2011-02-21 23:55 ` [PATCH 04/10] RTC: Cleanup rtc_class_ops->read_alarm() John Stultz
2011-02-22  2:34   ` [rtc-linux] " Mark Brown
2011-02-22  2:55     ` John Stultz
2011-02-22  8:09       ` john stultz
2011-02-22 12:51         ` Marcelo Roberto Jimenez
2011-02-22 19:35           ` john stultz
2011-02-22 19:51             ` Mark Brown
2011-02-22 19:58               ` john stultz
2011-02-22 21:26                 ` Marcelo Roberto Jimenez
2011-02-22 18:16         ` Mark Brown
2011-02-22 19:51           ` john stultz
2011-02-22 20:00             ` Mark Brown
2011-02-22 20:22               ` john stultz [this message]
2011-02-22 21:05                 ` Mark Brown
2011-02-22 21:21                   ` john stultz
2011-02-22 21:27                     ` Thomas Gleixner
2011-02-22 21:40                       ` Mark Brown
2011-02-22 21:33                     ` Mark Brown
2011-02-22 22:10                       ` john stultz
2011-02-22 23:07                         ` Mark Brown
2011-02-22 19:53           ` john stultz
2011-02-22 20:31             ` Mark Brown
2011-02-21 23:55 ` [PATCH 05/10] RTC: Clean out UIE icotl implementations John Stultz
2011-02-21 23:55 ` [PATCH 06/10] RTC: Include information about UIE and PIE in RTC driver proc John Stultz
2011-02-21 23:55 ` [PATCH 07/10] RTC: Remove UIE and PIE information from the sa1100 " John Stultz
2011-02-21 23:55 ` [PATCH 08/10] RTC: Fix the cross interrupt issue on rtc-test John Stultz
2011-02-21 23:55 ` [PATCH 09/10] RTC: sa1100: Update the sa1100 RTC driver John Stultz
2011-02-21 23:55 ` [PATCH 10/10] RTC: Fix up rtc.txt documentation to reflect changes to generic rtc layer John Stultz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1298406174.9215.71.camel@work-vm \
    --to=johnstul@us.ibm.com \
    --cc=a.zummo@towertech.it \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mroberto@cpti.cetuc.puc-rio.br \
    --cc=rtc-linux@googlegroups.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox