On Mon, Mar 29, 2021 at 04:57:55PM +0200, Thomas Gleixner wrote: > I think adjtimex is the right place and not yet another random file > somewhere. Something like the below.
Perfect. Acked-by: Richard Cochran <richardcoch...@gmail.com> > --- > include/uapi/linux/timex.h | 7 +++++-- > kernel/time/ntp.c | 4 +++- > 2 files changed, 8 insertions(+), 3 deletions(-) > > --- a/include/uapi/linux/timex.h > +++ b/include/uapi/linux/timex.h > @@ -188,9 +188,12 @@ struct __kernel_timex { > #define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */ > #define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */ > > +#define STA_TAISET 0x10000 /* TAI offset was set via adjtimex (ro) */ > + > /* read-only bits */ > -#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ > - STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK) > +#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ > + STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | \ > + STA_CLK | STA_TAISET) > > /* > * Clock states (time_state) > --- a/kernel/time/ntp.c > +++ b/kernel/time/ntp.c > @@ -741,8 +741,10 @@ static inline void process_adjtimex_mode > } > > if (txc->modes & ADJ_TAI && > - txc->constant >= 0 && txc->constant <= MAX_TAI_OFFSET) > + txc->constant >= 0 && txc->constant <= MAX_TAI_OFFSET) { > *time_tai = txc->constant; > + time_status |= STA_TAISET; > + } > > if (txc->modes & ADJ_OFFSET) > ntp_update_offset(txc->offset);