From: Jason Gunthorpe <jgg@ziepe.ca>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Miroslav Lichvar <mlichvar@redhat.com>,
linux-kernel@vger.kernel.org,
John Stultz <john.stultz@linaro.org>,
Prarit Bhargava <prarit@redhat.com>
Subject: Re: [PATCH] rtc: adapt allowed RTC update error
Date: Wed, 2 Dec 2020 16:54:18 -0400 [thread overview]
Message-ID: <20201202205418.GN5487@ziepe.ca> (raw)
In-Reply-To: <87a6uwdnfn.fsf@nanos.tec.linutronix.de>
On Wed, Dec 02, 2020 at 08:21:00PM +0100, Thomas Gleixner wrote:
> On Wed, Dec 02 2020 at 12:27, Jason Gunthorpe wrote:
> > On Wed, Dec 02, 2020 at 02:44:53PM +0100, Thomas Gleixner wrote:
> >> if (IS_ENABLED(CONFIG_GENERIC_CMOS_UPDATE) ||
> >> IS_ENABLED(CONFIG_RTC_SYSTOHC))
> >> - queue_delayed_work(system_power_efficient_wq, &sync_work, 0);
> >> + queue_work(system_power_efficient_wq, &sync_work);
> >
> > As Miroslav noted, probably the right thing to do here is to reset the
> > hrtimer and remove the sync_work? I think this code was to expedite an
> > RTC sync when NTP fixes the clock on boot.
>
> This has two purposes:
>
> 1) Initiating the update on boot once ntp is synced.
>
> 2) Reinitiating the sync after ntp lost sync and the work did not
> reschedule itself because it observed !ntp_synced().
>
> In both cases it's highly unlikely that the write actually happens when
> the work is queued because do_adjtimex() would have to be exactly around
> the valid update window.
Yes
> So it will not write immediately. It will run through at least one
> retry.
Right, bascially this is scheduling a WQ to do sched_sync_hw_clock()
which will only call hrtimer_start() - seems like jsut calling
hrtimer_start instead of queue_work above would be equivilant
> I don't think the timer should be canceled if the ntp_synced() state did
> not change. Otherwise every do_adtimex() call will cancel/restart
> it, which does not make sense. Lemme stare at it some more.
That makes sense, being conditional on the STA_UNSYNC prior to doing
any hrtimer_start seems OK?
> > Also x86 needs a touch, it already has RTC lib, no idea why it also
> > provides this old path too
>
> Because nobody had the stomach and/or cycles to touch it :)
Hahaha yes.. I vaugely remember looking at this once..
Lets see:
arch/x86/kernel/kvmclock.c: x86_platform.set_wallclock = kvm_set_wallclock;
arch/x86/kernel/x86_init.c: x86_platform.set_wallclock = set_rtc_noop;
arch/x86/xen/time.c: x86_platform.set_wallclock = xen_set_wallclock;
arch/x86/xen/time.c: x86_platform.set_wallclock = xen_set_wallclock;
All returns -ENODEV/EINVAL
arch/x86/kernel/x86_init.c: .set_wallclock = mach_set_rtc_mmss,
This is already rtclib under drivers/rtc/rtc-mc146818-lib.c
I suppose the issue here is the rtclib driver only binds via PNP and
very old x86 systems won't have the PNP tables? It seems doable to
check for a PNP device after late init and manually create a
platform_device for the RTC
arch/x86/platform/intel-mid/intel_mid_vrtc.c: x86_platform.set_wallclock = vrtc_set_mmss;
This is also already in rtclib under rtc-mrst.c, and this is already
wired to create the rtc platform device during init
So it is very close now to be able to delete all this for x86. Do you
know of something I've missed?
> > I wonder if the cmos path could be killed off under the dead HW
> > principle?
>
> Unfortunately that code path is not that dead on x86. You need to fix
> all the (ab)users first. :)
Assuming x86 can be resolved as above, that leaves two 20 year old MIPS
platforms and the PPC list from before. ARM is gone compared to last
time I looked! Progress :)
Thanks,
Jason
next prev parent reply other threads:[~2020-12-02 20:55 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-01 14:38 [PATCH] rtc: adapt allowed RTC update error Miroslav Lichvar
2020-12-01 16:12 ` Jason Gunthorpe
2020-12-01 17:14 ` Miroslav Lichvar
2020-12-01 17:35 ` Jason Gunthorpe
2020-12-02 10:01 ` [PATCHv2] " Miroslav Lichvar
2020-12-02 13:44 ` [PATCH] " Thomas Gleixner
2020-12-02 15:07 ` Miroslav Lichvar
2020-12-02 15:36 ` Miroslav Lichvar
2020-12-02 18:36 ` Thomas Gleixner
2020-12-02 16:27 ` Jason Gunthorpe
2020-12-02 19:21 ` Thomas Gleixner
2020-12-02 20:54 ` Jason Gunthorpe [this message]
2020-12-02 22:08 ` Thomas Gleixner
2020-12-02 23:03 ` Jason Gunthorpe
2020-12-03 1:14 ` Thomas Gleixner
2020-12-03 2:04 ` Jason Gunthorpe
2020-12-03 2:10 ` Alexandre Belloni
2020-12-03 15:39 ` Thomas Gleixner
2020-12-03 16:16 ` Jason Gunthorpe
2020-12-03 21:05 ` Thomas Gleixner
2020-12-03 21:31 ` Thomas Gleixner
2020-12-03 22:36 ` Jason Gunthorpe
2020-12-04 13:02 ` Thomas Gleixner
2020-12-04 14:08 ` Jason Gunthorpe
2020-12-04 14:37 ` Alexandre Belloni
2020-12-04 14:46 ` Jason Gunthorpe
2020-12-04 15:08 ` Alexandre Belloni
2020-12-04 15:57 ` Jason Gunthorpe
2020-12-04 16:35 ` Alexandre Belloni
2020-12-03 22:00 ` Alexandre Belloni
2020-12-04 9:34 ` Thomas Gleixner
2020-12-04 9:51 ` Alexandre Belloni
2020-12-04 10:44 ` Thomas Gleixner
2020-12-03 17:29 ` Alexandre Belloni
2020-12-03 19:52 ` Thomas Gleixner
2020-12-03 15:52 ` Jason Gunthorpe
2020-12-03 16:07 ` Alexandre Belloni
2020-12-03 20:10 ` Jason Gunthorpe
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=20201202205418.GN5487@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mlichvar@redhat.com \
--cc=prarit@redhat.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;
as well as URLs for NNTP newsgroup(s).