All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Finn Thain <fthain@telegraphics.com.au>,
	Sam Creasey <sammy@sammy.net>,
	linux-m68k <linux-m68k@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] m68k: Fix off-by-one calendar month
Date: Tue, 24 Apr 2018 12:37:37 +0200	[thread overview]
Message-ID: <20180424103737.GA19011@piout.net> (raw)
In-Reply-To: <CAMuHMdULPOWQPo1G1s5m52rNLzhmPFzfwxsZH0iR_OwVc8VRKw@mail.gmail.com>

On 24/04/2018 12:06:30+0200, Geert Uytterhoeven wrote:
> Hi Finn,
> 
> On Mon, Apr 23, 2018 at 3:02 AM, Finn Thain <fthain@telegraphics.com.au> wrote:
> > This fixes a bug in read_persistent_clock() which causes the system
> > clock to lag the Real Time Clock by one month. The problem was noticed
> > on a Mac, but theoretically it must also affect Atari, BVME6000 and Q40.
> >
> > The tm_mon value in the struct rtc_time passed to mach_hwclk() is
> > zero-based, and atari_mste_hwclk(), atari_tt_hwclk(), bvme6000_hwclk(),
> > mac_hwclk() and q40_hwclk() all make this adjustment. Unfortunately,
> > dn_dummy_hwclk(), mvme147_hwclk(), mvme16x_hwclk(), sun3_hwclk() and
> > sun3x_hwclk() fail to decrement tm_mon.
> >
> > Bring these platforms into line and fix read_persistent_clock() so it
> > works correctly on all m68k platforms.
> >
> > The datasheets for the RTC devices found on the affected platforms
> > all confirm that the year is stored as a value in the range 0-99 and
> > the month is stored as a value in the range 1-12. Please refer to the
> > datasheets for MC146818 (Apollo), DS1643 (MVME), ICM7170 (Sun 3)
> > and M48T02 (Sun 3x).
> >
> > Reported-by: Stan Johnson <userm57@yahoo.com>
> > Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
> 
> Thanks, applied and queued for v4.18.
> 
> <snip>
> 
> > --- a/arch/m68k/kernel/time.c
> > +++ b/arch/m68k/kernel/time.c
> > @@ -74,17 +74,17 @@ static irqreturn_t timer_interrupt(int irq, void *dummy)
> >  void read_persistent_clock(struct timespec *ts)
> >  {
> >         struct rtc_time time;
> > +
> >         ts->tv_sec = 0;
> >         ts->tv_nsec = 0;
> >
> > -       if (mach_hwclk) {
> > -               mach_hwclk(0, &time);
> > +       if (!mach_hwclk)
> > +               return;
> > +
> > +       mach_hwclk(0, &time);
> >
> > -               if ((time.tm_year += 1900) < 1970)
> > -                       time.tm_year += 100;

Note that this change may break existing users. I'm perfectly fine with
it as doing this is generally wrong anyway and this is something I'd
like to see eliminated.

> > -               ts->tv_sec = mktime(time.tm_year, time.tm_mon, time.tm_mday,
> > -                                     time.tm_hour, time.tm_min, time.tm_sec);
> > -       }
> > +       ts->tv_sec = mktime(time.tm_year + 1900, time.tm_mon + 1, time.tm_mday,
> > +                           time.tm_hour, time.tm_min, time.tm_sec);
> 
> That might explain why my Amiga spends so much time on file system checks
> since I wrote the rp5c01 RTC driver...
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> -- 
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds

-- 
Alexandre Belloni, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2018-04-24 10:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <5add30d1.1c69fb81.b868a.84f1SMTPIN_ADDED_MISSING@mx.google.com>
2018-04-24 10:06 ` [PATCH] m68k: Fix off-by-one calendar month Geert Uytterhoeven
2018-04-24 10:37   ` Alexandre Belloni [this message]
2018-04-24 10:51     ` Geert Uytterhoeven
2018-04-24 11:38       ` Alexandre Belloni
2018-04-24 23:38       ` Finn Thain
2018-04-24 12:54     ` Arnd Bergmann
     [not found] <S1753913AbeDWBDM/20180423010312Z+539@vger.kernel.org>
2018-04-26  8:23 ` Finn Thain
2018-04-26  8:41   ` Geert Uytterhoeven
     [not found] <S1753929AbeDWBDQ/20180423010320Z+1320@vger.kernel.org>
2018-04-23  8:48 ` Arnd Bergmann
2018-04-23 23:39   ` Finn Thain
2018-04-24  6:54     ` Geert Uytterhoeven
2018-04-23  1:02 Finn Thain

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=20180424103737.GA19011@piout.net \
    --to=alexandre.belloni@bootlin.com \
    --cc=fthain@telegraphics.com.au \
    --cc=geert@linux-m68k.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=sammy@sammy.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.