(Emacs: -*- indented-text -*-)

				What's new?
		 Copyright (c) 1997 - 2005 by Ulrich Windl

			      NEWS for 2.1.5

* Merged patch to Linux-2.4.29.

			      NEWS for 2.1.4

* Make sure that failed parameter exchanges from and to user space always
  set error to -EFAULT.

			      NEWS for 2.1.3

* Do not add a definition for ``CIOGETEV'', because it's not implemented
  any more.

			      NEWS for 2.1.2

* Merged patch for Linux-2.4.21.  Some architectures may no longer be
  working because of modifications in timing code that I don't understand.
  Intel Pentium does work however.

* Revised ``INSTALL''.  I still think it's worth reading.  Revised
  ``README''.

* This release has been sponsored (see CREDITS).

			      NEWS for 2.1.1

* ``EXPORT_SYMBOL(i8253_lock)'' moved from ``arch/i386/kernel/time.c'' to
  ``arch/i386/kernel/ksyms.c''.  Fixed assembler constraints regarding
  early clobber.  Fixed compilation problem where ``CONFIG_X86_TSC'' isn't
  defined.  Use macro calls instead of writing explicit inline assembler.

			      NEWS for 2.1.0

* Updated ``Documentation/kernel-time.txt''.

* Fixed bug where adjtime() emulation would treat microseconds as
  nanoseconds, thus never making the desired adjustment.  To avoid
  restricting the range of the broken adjtime() emulation to 2.1 seconds,
  ``tickadj'' had to be converted back to microseconds (affects sysctl()
  interface).

* Added new Perl script ``PPSspy.pl'' that reads and displays the PPS
  variables from the kernel (using the experimental ``pps'' sysctl).

* Revised priority of kernel logging messages (used for debugging) when
  conditions ``STA_PPSERROR'' or ``STA_PPSWANDER'' are detected.

* Merged patch for Linux-2.4.20.

* Added missing permission check for ``sys_clock_settime()'', and added
  strategy routine to implement proper permission checks for sysctl in
  ``kernel/time.c''.

* Fixed wrong arguments to ``do_gettimeofday()'' in ``drivers/atm'', and
  ``drivers/sbus/char''.

* Fixed two bugs reported by Reg Clemens: ``arch/i386/kernel/apm.c'' had
  illegal ``KERN_WARN'', declaration of ``wall_jiffies'' in
  ``kernel/timer.c'' did not match declaration in <linux/time.h>.  Updated
  ``INSTALL'' as suggested by Reg Clemens.

			    NEWS for 2.0.2

* Updated ``patch-ntp-4.0'' for ntp-4.1.1.

* New entry ``Hz'' (read-only) in ``/proc/sys/kernel/time'' contains the
  value of HZ (hz).  Updated ``Documentation/sysctl/kernel.txt''.

* Avoid overflow into sign for ``MOD_OFFSET'' when converting microseconds
  to nanoseconds.  Found by Petr Sumbera <petr.sumbera@artisys.cz>.

* Fixed compilation problems when ``CONFIG_X86_TSC'' was not defined
  (e.g. Cyrix 6x86).

* Merged kernel patch with Linux-2.4.19.  APM produces warnings if
  get_time_diff() would be called.

* Merged kernel patch with Linux-2.4.18.  Fortunately some of my
  modifications magically went into the standard sources ;-)

			    NEWS for 2.0.1

* Fix returning non-normalized timevals in very rare cases (do not
  round microseconds).  Reported by "Jean Cyr" <jcyr@dillobits.com>.

* Undo changes for CPU-specific time-keeping (that was not working
  well yet).

* Merged patch for 2.4.7 (not yet released) to Linux 2.4.16: The
  sysctl number had to be changed again (to 55).

* Updated ``ppsctl.c'' (Removed obsolete warning. Added new formatting
  option 'l' to print logical level of event as number).

			    NEWS for 2.0.0

* Revised and improved permission checking for PPS API and debugging
  messages in serial driver.

* Added new routine ``update_nanoscale()'' to fine-tune interpolation
  between ticks.  Added at least a template to ``arch/*/kernel/time.c''.

* Updated patch for ntpd-4.0.99k to compile and work without
  ``CIOGETEV''.

* Prepared support for different devices being defined as PPS API's
  ``kernel consumer'' (state variables no longer reside in serial
  driver).

* Merged ``pre6'' patch for Linux-2.4.2 to Linux-2.4.3.  Removed
  unneeded code from ``update_rtc()'' in ``arch/i386/kernel/time.c''.
  Added generic complaint (debugging message) if CPU has negative time
  warp.  Piggy-back the CPU number on the lower nanoseconds when
  debugging SMP machines (This will introduce a 32ns inaccuracy).

* Finally dropped ``enable_pps.c'' as it would not work without
  modification with the current code.  Use ``ppsctl.c'' instead.  The
  latter has been updated not to use ``stdin'' any more.

* Modified ``serial.c'' to ensure that ``PPS_TSFMT_TSPEC'' is the default
  setting (RFC 2783 says something like that in section 3.3).  Implemented
  enforcement of file open mode read/write to change settings.

* Removed unneeded code from ``update_rtc()'' in ``arch/i386/kernel/time.c''.

* Fixed SMP problems for i386: ``exact_nanotime_quotient'' is no longer
  ``static'' (although I don't like the idea).  Declare ``cpu_khz'' and
  ``exact_nanotime_quotient'' in ``<asm-i386/timex.h>'' and remove explicit
  external declarations.  Update ``one_usec'' to ``quarter_usec'' in
  ``arch/i386/kernel/smpboot.c'' as nanoseconds require a tighter coupling
  of CPUs (now 0.5 microseconds instead of two).  TSC skew printed in
  nanoseconds now.

* Added new ``ppsctl.c'' to control PPS API (derived from
  ``enable_pps.c'').  This utilitiy is designed to control the PPS API
  only.  Removed all NTP-related code.  Implemented flexible formatting for
  monitor option.

* Updated clock model to nanokernel dated 2000-10-25.  Clearing
  ``STA_PLL'' will reset the PPS calibration interval.

* Merged changes with Linux-2.4.2. Fixed problem with strange time
  warps (newly introduced in Linux-2.4). Added additional debugging
  facilities in ``drivers/char/serial.c''. Added extra message if
  kernel fixes negative time warps.

* Merged changes with Linux-2.4.1. Nobody did contribute any feedback
  so far...

* Fixed old bug with clobbered static variable in ``do_poor_nanotime()''.

* Merged changes with Linux-2.4.0 (final).

* ``enable_pps.c'' was changed to show the raw offset as delivered
  from PPS API.  Don't ignore events when monitoring jitter with both
  events enabled.

* Updated ``INSTALL'', ``README'', ``TODO''.

* Adjusted handling of wait queue ``ewait'' for Linux 2.4 in
  ``include/linux/timepps.h'' and ``drivers/char/serial.h''.

* Changed wrong constraint ``g'' for ``mull'' to ``rm'' in
  ``arch/i386/kernel/time.c'' to avoid problems with recent versions
  of gcc (like 2.96).  Fixed range and accuracy of ``cpu_khz''.

* Merged ``PRE1 patch'' with ``Linux-2.4.0-test12'' as previous kernel
  corrupted my file system [CVS repository was damaged, and I had to
  recover]

* Finally removed support of ``CIOGETEV'' from
  ``drivers/char/serial.c''.  Removed ``include/linux/ppsclock.h''
  likewise.  Updated ``enable_pps.c'' accordingly.

* Remove traditional code for determining time in microseconds from
  ``arch/i386/kernel/time.c'' and other architectures.

* Cleanup uses of ``<linux/timex.h>'' where ``<asm/timex.h>'' is
  needed.  Fixed direct use of ``xtime'' (assuming it is ``struct
  timeval'', e.g for the ATM drivers).  Fixed RTC clock updates for
  more architectures.

* Added documentation for ``/proc/sys/kernel/time/*'' to
  ``Documentation/sysctl/kernel.txt''.

* Merged ``PPSkit-1.0.1'' into ``Linux-2.4.0-test11''. Changed value
  for ``N_PPSCLOCK'' in ``<asm/termios.h>'' as there was a conflict
  with ``N_SYNCPPP''.  Sysctl number for ``KERN_TIME'' had a conflict
  with ``KERN_MSGMNI'' and has been changed to ``50'' (from ``42'').

* [The development system got upgraded: The Asus/Intel VX BAT board
  has been replaced with a Spacewalker/VIA Apollo Pro ATX board
  (AV11), fast-page RAM has been upgraded to 8ns SDRAM, and the
  genuine Pentium-100 was replaced by a Celeron-500.  Finally the PCI
  Mach64 was replaced by an AGP Geforce2 MX graphics board.  This
  means that old performance data are no longer reproducible.  Let's
  see how the new hardware performs...]

* Fixed host name of primary site in ``PPSkit.lsm''.

			    NEWS for 1.0.1

* Added declaration for ``adjtimex()'' to ``include/linux/timex.h''.

* Fixed compilation problem in ``arch/i386/kernel/smp.c'' (fix
  provided by Andrew Bray).

* Updated ``status.html'' for Alpha architecture.  Re-merged
  ``do_exact_microtime()'' to fix compilation problem in
  ``arch/alpha/kernel/time.c''.

			    NEWS for 1.0.0

* Dropped obsolete ``ASYNC_PPS_CD_POS'' from ``<linux/serial.h>''.

* Updated ``BUGS'', ``INSTALL'', ``PPSkit.lsm'' (I could need some new
  hardware), ``README'', ``TODO'', ``status.html''.

* Changed default ``trigger'' in ``enable_pps.c'': do not set up PPS API.

* Improved accuracy in case of delayed timer interrupts.  Fixed
  accuracy when converting TSC to nanoseconds.  Currently we can only
  resolve 16 CPU cycles.

* Updated NTP clock clock model according to a recent stream of
  nanokernels #4 (2000-08-16, 2000-08-21, 2000-08-29, 2000-09-21).
  With the new model the time offsets will appear significantly larger
  (typically 127 times) while being more realistic.

		     NEWS for 0.9.3 (2nd edition)

* Added missing files (``ppsclock.h'', ``timepps.h'', ``l_fp.h'',
  ``kernel-time.txt'') to patch.

			    NEWS for 0.9.3

* Merged with Linux-2.2.16 (10 conflicts).

* Merged with Linux-2.2.15: Updated ``CREDITS'', ``Configure.help'',
  and ``kernel-time.txt''.  Adapted ``arch/i386/kernel/smp.c''.

* Revised ``sysctl()'' interface: Fixed incorrect entry for
  "rtc_runs_localtime".  Added range checking for ``sysctl()'', making
  ``time_tick'' and ``tickadj'' writable.

* Removed broken feature introduced in PPSkit-0.6 (a year ago):
  ``adjtime()'' will work even if ``STA_PLL'' is set in
  ``time_status''.

* Internal variable ``tickadj'' has been converted to nanoseconds, but
  external interface still uses microseconds.

* Modified ``hardpps()'' to use a dynamic limit for ``STA_PPSWANDER''.
  Actually the last estimate for stability is used.  Revised debugging
  output.

* Moved ``lost_ticks'' calculation out from ``do_nanotime()'' and
  ``do_microtime()'' routines.  Updated other architectures,
  especially ``arch/alpha/kernel/time.c'' and
  ``arch/sparc/kernel/pcic.c'' to reflect this.  Removed unneeded
  functions form ``arch/mips/dec/time.c''.

* Replaced one forgotten occurrence ``do_nanotime()'' with result of
  ``do_clock_gettime()''.

			    NEWS for 0.9.2

* Optimized computation used to convert timer register to nanoseconds
  for i386.  Avoid duplicate call to ``do_nanotime()'' when capturing
  timestamps in the serial driver (Modified ``do_clock_gettime()'' to
  return the time offset to make this possible).  These changes should
  save some CPU cycles.

* Streamlined ``INSTALL''.  Updated ``ntp.conf.PPS'', ``CREDITS'', and
  ``MANIFEST''.  Added patch for ntp-4.0.98e (and possibly later) to make
  PPS and ATOM run out-of-the-box.

* Updated ``enable_pps.c'' to display capabilities of PPS API.  Stop
  if ``time_pps_create()'' failed.

* Modified PPS API implementation to accept disabling a nonexistent
  binding for the kernel consumer.  Previously this was EINVAL.
  However, if a valid binding exists for a different PPS source,
  EINVAL is still returned (People use ``edge == 0'' erroneously to
  say that a binding is not to be established, but RFC 2783 specified
  this as ``clearing the binding'').

* Added table with release overview ``status.html''.

* Fixed bug in ``hardpps()'' that caused frequency spikes after bad
  pulses (should have happened quite rarely however).  Fixed problem
  in ``update_wall_time_one_tick()'' when a fractional number for
  ``time_tick'' causes accumulated phase errors (e.g. DEC Alpha).
  Thus ``time_tick'' is no longer used when ``CONFIG_NTP'' is defined!

* Added fix for arch/alpha/kernel/time.c suggested by John Sager
  <jcs@zoo.bt.co.uk> (modified a bit by myself).  Fixed stupid syntax
  error in same file.

* Added fix to arch/alpha/kernel/osf_sys.c (reported by Karlo Gross).
  Should compile now.

* Merged patch for Linux-2.2.14 (manually updated ppc, sparc64).

* Merged changes for new ``S390'' architecture (only
  ``kernel/{irq,time}.c'', untested).

			    NEWS for 0.9.1

+ Provide GPG signature in addition to PGP signature.  New key
  1024D/1339BE4B has fingerprint
  1303 DDEE 2E94 0A40 A50D  EE89 BA98 F5F1 1339 BE4B

+ Fixed bug in ``adjtimex()'' to allow compilation when
  ``CONFIG_NTP_PPS'' is not defined (reported by Petri Mattila
  <petri@prihateam.fi>, thanks!).

+ Fixed an old and stupid bug in ``net/sunrpc/svcauth_des.c'' (there
  is still ``tv_usec'').

+ Fixed bug in ``ktime_to_rtc()'' that added an extra non-existing day
  on 2000-01-01.  Thanks to Harald Koenig for the solution! Updated
  ``CREDITS'' and ``README''.

			    NEWS for 0.9.0

+ Merged changes into Linux-2.2.13.

+ Added new option ``-P#'' to ``enable_pps.c'': Set the maximum PPS
  calibration interval (up to 32768s or 9h).

+ Updated ``TODO''.  Updated ``README'' (added performance data).
  Updated ``MANIFEST''.

+ Modified ``change_speed()'' in ``drivers/char/serial.c'' not to
  clear ``UART_IER_MSI'' when the PPS API is set up (just to make
  sure).

+ Added new ``time'' subdirectory (``pps'', ``rtc_runs_localtime'',
  ``rtc_update'', ``tickadj'', ``time_tick'', ``timezone'') to
  ``/proc/sys/kernel''.  Kind of experimental, mostly for debugging...

+ Added new variables ``rtc_update'' and ``rtc_update_slave'' to
  control updating of the real-time clock (RTC).  Now the updating of
  the RTC can be turned off by setting ``rtc_update'' to zero.  When
  setting the system time, the RTC will be updated once now.  The
  period for updating the RTC is also controlled by ``rtc_update''.

+ Implemented complete update of the RTC, including hour and date
  (replaced ``set_rtc_mmss()'' with ``update_rtc'').  Added new
  variable ``rtc_runs_localtime'' to control the timezone for the RTC
  (together with ``sys_tz'').

+ Tried to update non-i386 architectures as well (alpha, arm, m68k,
  mips, sparc, sparc64), all untested.  Please send feedback and
  patches!

+ Removed ``time_tolerance'' variable and use new ``pps.frange''
  instead.  The dynamic tolerance seen in ``adjtimex()'' is gone to be
  more compatible with the rest of the world (Well, it depends on what
  ``tolerance'' should be).  ``MAXWANDER'' is constant and quite
  large, accepting worse samples now.  Promoted ``time_esterror'' and
  ``time_maxerror'' to nanoseconds to allow small increments (I had
  0.2PPM for a longer time).

+ Merged changes for ``nanokernel #3'' (dated 1999-08-29).  Changed
  some spinlocks to be more correct (I hope).  Enforce ``MOD_PPSMAX''.

			    NEWS for 0.8.1

+ Updated ``BUGS'' and ``INSTALL''.

+ As I got no majority in the API working group to enforce setting the
  ``api_version'' to the proper value when using
  ``time_pps_setparams()'', I enforce it before the kernel is entered.
  This will fulfil what the draft says: ``This field is present to
  enable binary compatibility with future versions of the API.''

+ Avoid possible overflow situation when interpolating ticks using the
  timer chip's register in ``arch/i386/time.c''.

+ Updated ``enable_pps.c'' to fix some bugs when reporting events and
  times.  Changed format of output to show both sequence numbers.
  Added new option '-J' to monitor jitter only when a PPS or clock
  error is signalled.  Made event detection algorithm more reliable if
  both events are monitored.

			    NEWS for 0.8.0

+ Updated documentation: ``INSTALL'' (prefer ntp-4.0), ``MANIFEST'',
  ``README''

+ Updated ``enable_pps.c'' to support new PPS API.  Added more error
  checking.

+ Updated documentation ``magic-number.txt'' to include ``PPSCLOCK_MAGIC''.
  Updated ``ioctl-number.txt'' to document the used numbers.

+ Updated PPS API to ``draft-05'' (dated 1999-08-17), causing severe
  incompatibilities (the older draft had expired).  Implemented new
  ``time_pps_kcbind()'' with ``PPS_TSFMT_TSPEC'' and ``PPS_KC_HARDPPS''.

			    NEWS for 0.7.2

+ Implemented ``PPS_ECHOASSERT'' and ``PPS_ECHOCLEAR'' via UART's RTS
  bit (documented in README).  Fixed bug for ``CLEAR'' events
  (actually ``ASSERT'' events had been captured before).

+ Added and updated future plans in ``TODO''.

+ Updated ``enable_pps.c'' for draft conformance.  Added option to set
  PPS offset (``-oXY'').  Added option to enable event echo (``-EX'').

+ PPS API consolidation (draft "03" dated 1999-02-11): Added some
  comments to ``timepps.h''.  Tightened permission checking in serial
  driver for maximum conformance to the specification.

+ Added dynamic jitter threshold (``PPS_POPCORN'') and an extra error
  condition for bad pulses in ``hardpps()'' (Taken from
  nanokernel-19990829).

+ Added little optimizations in ``kernel/time.c'' that may reduce
  extra jitter under heavy load.  Warning message about
  ``update_wall_time: ticks is >1'' suppressed unless debugging (I had
  seen values up to 5).

+ Updated patch for ntp-4.0.97.  Updated NTP sample configuration
  file.  Updated README with some details about the PPS activation.

+ Merged patch for Linux-2.2.12: Some extra blanks removed in
  ``arch/ppc/kernel/time.c'' (untested).  ``kernel/time.c'' needs
  ``linux/config.h'' now (well, it always did).  Heavily tested the
  code for i386 architecture (386SX and Pentium).  Corrected spelling
  in ``kernel-time.txt''.

			    NEWS for 0.7.1

+ Merged changes for Linux-2.2.11 and tested with proven configuration
  (PPSkit-0.7.0 performed quite well).  Modified ``adjtimex()'' in
  kernel to clamp invalid values instead of rejecting them.  This is
  because ``ntpd'' does not care much about failing system calls, and
  after very long thought I think avoiding the ``Ariane V'' failure
  would not be bad.

+ Added a note about compilation problems and ``<sys/timex.h>'' (see
  file ``BUGS'').  Added a not about system include files and symbolic
  links for glibc-2.1 in ``INSTALL''.

+ Updated ``enable_pps.c'' to compile with glibc-2.1 (glibc-2.1 uses
  an ugly forward declaration of ``struct timeval'').  Added version
  of C library to compiled binary.

+ Fixed patch for ``ntpd/refclock.c'' to return success if PPS API was
  set up correctly (Stupid bug found by David Schwartz).

			    NEWS for 0.7.0

+ ``madtime.txt'' is finally gone.  Updated ``ntp.conf.PPS'' example
  (used with ntpd-4.0.92h).

+ The behavior for late pulses in ``hardpps()'' was too aggressive: Be
  more careful now (silently start a new calibration interval).
  Changes merged into Linux-2.2.9.

+ Occasional time warps worth one tick were observed on an i386/SX
  16MHz.  The problem could be caused by ``lost_ticks'' being changed
  while the time offset is being composed.  Tried to reduce the
  probability by reading the variable earlier.

+ Added workaround when ``time_constant'' exceeds its allowed range.

+ Added dynamic adjustment of ``time_tolerance'', because the default
  worst-case estimate (500PPM) was too high: Simply monitor the PPS
  frequency (the normal PLL/FLL frequency is not trusted enough).  Do
  some trickery for the first estimate to avoid excessive
  ``STA_PPSWANDER'' conditions.

+ Implemented ``time_pps_wait()'' to wait for events non-busily (My
  first try with scheduling, interrupts and wait queues).
  ``enable_pps.c'' now uses this function to wait for events.
  Enhanced jitter monitor.

+ Updated the test program ``enable_pps.c'' to use the PPS API.
  Changed the option ``-p'' for ``polarity'' to ``-t'' for
  ``trigger'': To specify the event to capture use one of `a', `c', or
  `b' for ``assert'', ``clear'', or ``both'' respectively.  To connect
  the captured event to ``hardpps()'' add an extra `h'.

+ Use a new method to capture timestamps: This should reduce jitter,
  and should improve accuracy.  In addition, it's easier now to
  capture other events like received characters.  Added a more
  effective way to enable interrupts for status changes on the modem
  lines (read: the mysterious jitter is gone!)

+ Updated patch for Linux 2.2.7.  Merged in code contributed by Reg
  Clemens to implement the (still draft status) PPS API (Experiments
  with my Pentium 100 and ntpd-4-0.92h showed that we need
  sub-microsecond resolution).  Move closer to the standard
  ``hardpps()''.  Adedd a new ``include/linux/timepps.h'' for the PPS
  API.  The old ``CIOGETEV'' is still present, but a separate
  parameter setup is required now.  The old constants
  ``ASYNC_PPS_CD_*'' are gone.

+ Added patch to support ``LDISC_PPS'' in ``ntp_refclock.c'' (a hack
  that is no longer necessary in ntpd-4.0.92h).  Updated
  ``patch-ntp-4.0''.

			    NEWS for 0.6.1

+ Merged into Linux 2.2.6, basically without conflict (read: should
  still work with 2.2.5).  Increased speed of adjtime from 0.5ms/s to
  50ms/s.

+ Avoid potential negative spikes in time (architecture independent).
  Rewrote algorithm for ``do_clock_getres()'' (for fun).

+ Fixed minor problem with uninitialized data in ``enable_pps.c''.

+ Added enhanced nanokernel support for ntp-4.0.92g (ntpdc, ntptime,
  tickadj).

+ Added a reminder that applications must be recompiled for some
  features of ``adjtimex()''.

+ Fixed a potential instability in ``hardpps()'', related to the FLL
  when pulses arrive doubled.  ``STA_PPSSIGNAL'' is set with greater
  care now.

+ Several minor fixes: ``time_adjust'' is a private variable now.
  NTP's precision adjustments (actually ``STA_PPSTIME'' and
  ``MOD_OFFSET'') will cancel any remaining correction left from a
  preceding adjtime() call.  This is specifically important because of
  the slow adjustment in Linux (0.05%).

+ Removed unnecessary code in ``arch/sparc/kernel/pcic.c''.

+ Fixed compilation for i386 architecture where ``CONFIG_X86_TSC'' is
  not defined.  The variable is referenced also in ``smp.c'', so it's
  always there now, even if the value is zero.

			    NEWS for 0.6.0

+ Updated BUGS about the ``mysterious jitter'' effect.  Updated patch
  for Linux-2.2.5 after extensive debugging runs.  Several tests passed
  without problems.

+ ``adjtimex()'' accepts any offset for ``MOD_OFFSET'', but
  ``hardupdate()'' will clamp the offsets.

+ Fixed bug with possibly persistent ``TIME_ERROR'' in ``adjtimex()''.
  Moved time functions that are not architecture dependent to common
  ``kernel/time.c''.

+ Added nanosecond time resolution (at least for i386 architecture).

+ Fixed problem in ``arch/i386/kernel/time.c'' when ``CONFIG_X86_TSC''
  was defined, but the processor was buggy (uninitialized variables
  would be used then).

+ Major cleanups with renaming: instead of calling ``get_fast_time()''
  you are expected to use ``get_exact_time()'' now (the ``fast''
  version wasn't faster than the ``normal'' version).  Likewise the
  ``slow'' versions are called ``poor'' now.  To avoid future
  confusion, ``[get]timeoffset'' has been renamed to ``microtime'',
  because it returns microsecods.  Functions returning nanoseconds will
  have ``nanotime'' instead.  ``<linux/time.h>'' won't include
  ``<linux/timex.h>'' any longer; only ``<asm/timex.h>'' will be
  included.  ``<linux/timex.h>'' will only include the NTP interface
  stuff.

+ Updated serial driver to use ``do_clock_gettime()''.  Fixed memory
  leak associated with ``CIOGETEV''.

+ Added new POSIX.4 compatible functions ``do_clock_gettime()'',
  ``do_clock_settime()'', and ``do_clock_getres()'' that deal with
  nanoseconds.  Several related cleanups.

+ Merged the new ``nanokernel'' stuff into ``kernel/time.c'' (took
  over 4 hours without being complete).  Several cleanups and changes
  done.

+ Merged the new ``nanokernel'' stuff into ``<include/linux/timex.h>''.
  As some new bit definitions clash with older Linux extensions, the
  latter had to be relocated.  This will definitely break binary
  compatibility (``adjtime()'' is affected), so that I'll possibly
  clean up all the old mess.  ``<timex.h>'' is purely for
  ``adjtimex()'' now.

+ Updated ``INSTALL'' about xntp.  Updated ``enable_pps.c'' to support
  new nanokernel.  Added several new options.  Completely rewritten
  logic.

			    NEWS for 0.5.0

+ Prepare for new ``nanokernel'' by moving closer to Dave Mills'
  naming convention, even if there are problems with namespaces:
  Renamed ``hardware_pps'' back to ``hardpps''. Re-introduced
  ``hardupdate'' as inline function.

+ Added test in adjtimex() to reject unsupported mode bits
  (``~ADJ_SERVED_MODE_BITS'') with ``EINVAL''.

+ Increased year in LSM file; it's 1999 for several days now :)

+ Moved kernel time related code from ``sched.c'' to ``time.c''
  (likewise for the header files ``sched.h'' and ``time.h'').

+ Added ``#ifdef CONFIG_NTP'' to remove unneeded code where NTP is not
  needed.

+ Split ``CONFIG_PPS_SYNC'' into ``CONFIG_NTP_PPS'' (basic PPS
  support) and ``CONFIG_NTP_PPS_SERIAL'' (support for PPS signal on
  serial port).  Added new ``CONFIG_NTP'' for basic NTP support
  (embedded systems might not want it).  Updated ``Configure.help'',
  all ``config.in''s and ``defconfig''s to have compatible defaults.

+ Merged patch into Linux 2.2.1 and included fix.

			    NEWS for 0.4.2

+ Fixed registering the line discipline in ``drivers/char/tty_io.c''
  (was wrong in ``/proc/tty/ldiscs'').  Added a `+' to the serial
  driver's ``serinfo''.

+ Updated patch for Linux 2.2.0 (parts of the PPSkit went into the
  standard kernel).

			    NEWS for 0.4.1

+ Merged changes into Linux 2.1.132.  ``N_PPSCLOCK'' had to be changed
  in ``asm/termios.h'' again; the current value is ``13'' now.
  Revised ``Documentation/kernel-time.txt'' to correct the outdated
  interface description.  Added missing patch for
  ``include/asm-sparc/termios.h''.

+ Notes from the merge: ``N_MASC'' (8) and ``N_R3964'' (9) are missing
  in ``include/asm-{alpha,i386,m68k,mips,sparc64}/termios.h''


+ Updated ``enable_pps.c'' to work even if ``STA_UNSYNC'' is set.
  Numerous related changes to improve the usefulness.  Fixed bug when
  ADJ_SINGLE_SHOT should be used.

			    NEWS for 0.4.0

+ The patch has been created by CVS-1.9.28 with ``rdiff''.  Manually
  edited patch to remove erroneously changed RCS keywords due to lack
  of ``-ko''.

+ Use new patch for kernel 2.1.131 (also known previously as
  PPSkit-0.4.0pre1.diff.bz2).  Basically this patch merges the recent
  time changes from Linux 2.0 and PPSkit-0.3.8.  ``N_PPSCLOCK'' had to
  be changed from 9 (5 very early) to 11 to avoid conflicts in
  Linux-2.1.  As all ``dot zero'' revisions, this code has not been
  tested by many people...

+ Added new files ``CREDITS'' (from ``README'') and ``MANIFEST''.
  Updated ``README'' for the new version.  Updated ``INSTALL''.

+ Updated enable_pps.c to provide better tests (hopefully).

			    NEWS for 0.3.8

+ Updated README.  Updated INSTALL.

+ Checked xntp3-5.93: Unpatched version works with ATOM and CIOGETEV.
  Replaced bad patch for xntp with new one (`patch.xntp3').

+ Updated file <ppsclock.h> to work with glibc2 (libc6) and xntp-3-5.93.

+ Added a fix (and warning) for glibc2 (libc6) to compile enable_pps.c

+ Added a warning about SMP in madtime.txt.

+ Updated patch for kernel 2.0.36. Patch for `completely mad time'
  still needs no changes.

			    NEWS for 0.3.7

+ Changed numeric value for ``N_PPSCLOCK'' in <asm/termios.h> to avoid
  a conflict with ``N_AX25'' in linux-2.0.35.  The new value has been
  negotiated with Alan Cox.

			    NEWS for 0.3.6

+ Updated patch for xntp3-5.92, but you should use a more recent
  version of xntp (3-5.92 has a severe bug)

+ Minor changes to INSTALL to reflect current versions of xntp.

+ Updated patch for `completely mad time'.

+ Merged in patch for adjustable `tickadj', thereby discovering that
  my patch had a broken format.  Updated README to reflect that.

+ Updated Documentation/Configure.help similar to a suggestion of
  Martin Spott <martin@quickstep.dirnet.com> (already sent on Nov '97)

+ Merged patch into 2.0.34.  arch/sparc/kernel/time.c needed manual
  patching.

			    NEWS for 0.3.5

+ Partially replaced patch for SPARC architecture. The current patch
  was provided by Nigel Metheringham
  <Nigel.Metheringham@theplanet.net> on 1998-01-26 for kernel 2.0.33
  (arch/sparc/kernel/time.c, drivers/char/time.c). Untested by me.

+ Corrected minor bug in enable_pps.c and gen_pps.c to make gcc-2.8.0
  happy.

			    NEWS for 0.3.4

+ Added bug fix to update CMOS clock (interval was too short,
  especially for ``tick % 2 != 0''). Patch extended for all
  architectures, but untested for non-i386.

+ Updated patch for "completely mad time" for kernel 2.0.32 (renamed
  patch file).

+ Updated patch for kernel 2.0.32 (Parts of the previous patch are
  included in the standard kernel now). Architectures other than i386
  still need some work.

			    NEWS for 0.3.3

+ Added ``ntp.conf.PPS'' as an example configuration file for xntpd
  and PPS usage (uses ATOM driver)

+ Updated INSTALL to have numeric steps (I hope you'll get lost a bit
  harder now)

+ Modified ``hardware_pps'' to reset calibration interval when
  ``STA_PPSWANDER'' is detected. Dave Mills did not fully confirm the
  problem: ``I gotta put you on hold. It's been awhile since I last
  danced with that code and I have a couple of heavy conferences to
  survive. However, I recall the intent of the code was not
  necessarily to ignore jitter or even wander, as long as the
  calibration interval could safely increase while avoiding a slip of
  the tick, which could cause severe error. The idea is to discipline
  the frequency in a closed- loop system, not necessarily to calculate
  the exact frequency. Once the frequency has been measured and the
  interval increased to the max, it's pretty hard to kick the loop out
  of lock, unless the PPS jitter becomes much larger than the tick
  interval.''

+ Updated xntpd/ntp_refclock patch to give better status messages.

+ Changes to the serial driver have been minimized.

+ Patch has been updated for Linux-2.0.31.

+ Updated kernel patch to include architectures (alpha, m68k, mips,
  ppc, sparc), but did not test anything at all:

    - alpha, m68k, mips, sparc have no ``do_gettimeoffset'' function.

    - mips and sparc have different structure of their
      ``include/asm-<arch>'' directories; they still lack CIOGETEV

			    NEWS for 0.3.2

+ Updated patch for linux-2.0.31pre10.

+ Added new flags to adjtimex(): ``ADJ_TICKADJ'' allows to get/set the
  value of ``tickadj'' within reasonable bounds. As one of the
  reserved fill-ups has been used the size of ``struct timex'' should
  be unchanged, and binary compatibility should be fine.

+ Updated ``enable_pps.c'' to print time state and messages for state
  changes.  State changes are written in comprehensible format now.

+ Removed most of the ``patch-xntp3-5.90.4'' because it's included in
  ``xntp3-5.91''.  In fact the complete patch has been replaced by a
  different one that makes the PPS driver (ATOM) work (tested in
  xntp3-5.90.4).

+ Updated patch for ``Completely Mad Time'' (use CONFIG_M586, added
  debug statements, detect lost timer interrupts).  Descriptive text
  is in a new file ``madtime.txt'' now.  Paths in patch follow usual
  conventions.

+ Updated my own description in CREDITS.  Updated documentation files
  as suggested by users.

+ Removed `#define DEBUG_PPS_SYNC' to turn off debugging in serial.c

			    NEWS for 0.3.1

+ A new version of enable_pps.c with more consistent status reporting
  and some new options is provided.

+ Minor cosmetic changes.

+ Fixed some bugs in adjtimex():

    * STA_UNSYNC causes TIME_ERROR to be returned (as per memorandum).

    * Using ADJ_FREQUENCY automatically adds pps_freq (as per
      memorandum).

    * When not doing a plain old adjtime() the required offset is
      returned in the corresponding field now (as per memorandum).

    * The time returned by adjtimex() will include the time offset to
      improve the resolution (as per memorandum).

    * The jitter returned will be in microseconds and no longer in
      scaled microseconds (as per memorandum).

+ Changed constant ``MAXFREQ'' in <linux/timex.h> to really 200ppm.

+ Included file with patch and description for "completely mad time".

+ Include a patch to make xntpd's PPS driver work for Linux.  This
  patch is an ugly hack, but it seems to do the job until we have
  solved all the other problems.

			    NEWS for 0.3.0

+ I decided to break the single text file with everything into a more
  friendly archive, even if I'll surely exceed 20kB for the first
  time. The version number will present ``political version
  numbering'' (as opposed to ``chronological or automated version
  numbering''.  So we have `0', a version that's not yet perfect;
  `3', the third major attempt to make things better; finally we have
  `0', a release that wants testing.

+ new ioctl CIOGETEV was implemented in the hope it can be used from
  xntpd.  I used a trimmed-down version of Harald Koenig's patch
  (k-dcf.patch-1.3.58).  The time stamps are used for both, the PPS
  routine and the line discipline.

+ implementation of TIOCDCDTIMESTAMP was removed again because of the
  change to serial struct.  Furthermore the new CIOGETEV can do things
  even better (it has an event counter)

+ Much improved testing program (I hope; in fact it's almost
  completely rewritten).  User-visible changes include better error
  reporting and edge detection selectable from command line.

+ Possibly improved pulse generator including emulations for common
  errors (see BUGS).

+ CONFIG_HARD_PPS is CONFIG_PPS_SYNC now (for no very good reason)...

+ Major corrections to the kernel, especially `adjtimex':

    * All parameters are checked now.  Previously several parameters
      were unchecked.

    * It's no longer allowed to change read-only status bits, but
      still no error is returned, because it seems that's how xntpd
      expects things to work (it's easier that way).

    * A plain old `adjtime()' can be done independent of any
      STA_-settings (that's what the memorandum says about
      compatibility with existing applications)

    * Avoided some `if's by grouping checking and setting of values
      together (where it was easy ;-))

    * `adjtimex' now returns an error depending on several status bits
      (e.g. when you enable STA_PPSFREQ when there is no
      STA_PPSSIGNAL)

+ (kernel/sched.c) If the clock's maximum error reached
  NTP_PHASE_LIMIT (16 seconds as per memorandum), the clock is
  declared STA_UNSYNC, and the time state will be TIME_ERROR. The
  specification is not too clear on the latter point.

+ The CMOS clock is now updated if STA_UNSYNC is cleared (and no
  longer if time_state is not TIME_ERROR).

+ The `hardware_pps' (hardpps) routine has two parameters now, the
  timeval and the hardware counter (microtime).  Changed for no good
  reason.  Fixed a bug that required 5 good calibrations before the
  interval was increased (memorandum talks about 4).  

+ Added some comments (at various places), reformatted some lines,
  added debugging code, etc.

+ (arch/i386/kernel/time.c) The code to update the CMOS clock is
  broken!  I was unsure how to fix it, so I added a warning message if
  the code fails.  This has to be fixed soon!

+ (drivers/char/serial.c) The version of the driver has been changed
  by adding a 'a'.  In addition the option `PPS' has been defined for
  CONFIG_PPS_SYNC.  The code to print the startup message has been
  improved (a matter of taste).

	       BAD NEWS: There are no NEWS before 0.3.0
