Annotation of embedaddon/ntp/html/hints/solaris.xtra.4095849, revision 1.1.1.1

1.1       misho       1:  Bug Id: 4095849
                      2:  Category: kernel
                      3:  Subcategory: syscall
                      4:  State: evaluated
                      5:  Synopsis: time_constant value >6 with PLL in use leads to integer divide
                      6:            zero trap panic
                      7:  Description:
                      8: If the time_constant parameter is 7 or higher, and the phase-lock looping model
                      9: is in use, the system will take a "integer divide zero trap" panic in
                     10: the clock routine as soon as the time_offset becomes non-zero.
                     11: 
                     12: time_constant defaults to 0.  The only place it is set is in the ntp_adjtime
                     13: system call, from the 'constant' element of the timex structure argument.
                     14: 
                     15:  Work around:
                     16: Never set the constant element of the timex structure passed to ntp_adjtime to
                     17: a value larger than 6.
                     18: 
                     19: satish.mynam@Eng 1998-04-30
                     20: 1. Use Sun's version of NTP software instead of PD version. This problem
                     21: is not seen with Sun's NTP version (which is mostly eqivalent to PD NTP 3.4
                     22: plus some Sun's local functionality futures).
                     23: 
                     24: 2. Workaround for the public domain NTP version  ONLY:
                     25:  =====================================================
                     26: The workaround for public domain NTP version is to disable the
                     27: KERNEL_PLL from the NTP code. This way ntp_Adjtime() system call is
                     28: totally bypassed without sacrificing any of the functionality of the
                     29: NTP. The only hit you might see is the way  kernel precision timminig
                     30: is done without the PLL algorithm in the kernel.
                     31: 
                     32:     The easiest way to disable ntp_adjtime option is(without changing
                     33:     any makefiles or other config files) to disable the KERNEL_PLL
                     34:     value in the ./config.h file.
                     35: 
                     36: After doing a ./configure for probing for all the necessary tools(compilers,
                     37: os version, libraries),  please comment out KERNEL_PLL macro in
                     38: the ./config.h  file.  This will disable the KERNEL_PLL part of the source
                     39: code and the newly obtained xntpd is just similar to the old one but it
                     40: does not use ntp_adjtime() system call. This prevents it from panic'ng
                     41: the kernel.
                     42: 
                     43: /*#define KERNEL_PLL 1*/
                     44: 
                     45: I complied a new xntpd binary this way and it does nothave any ntp_adjtime()
                     46: related stuff.
                     47: 
                     48: Default:
                     49: =======
                     50: /net/divya/export/home/mynam/public_domain/ntp/xntp3-5.92/xntpd>strings
                     51: xntpd |
                     52: grep ntp_adjtime
                     53: 354:adj_frequency: ntp_adjtime failed: %m
                     54: 357:loop_config: ntp_adjtime() failed: %m
                     55: 435:get_kernel_info: ntp_adjtime() failed: %m
                     56: 
                     57: With KERNEL_PLL disabled in config.h file
                     58: -=======================
                     59: 
                     60: /net/divya/export/home/mynam/public_domain/ntp/xntp3-5.92/xntpd>strings
                     61: xntpd.nopll | grep ntp_adjtime
                     62: 
                     63:         Integrated in releases:
                     64:  Duplicate of:
                     65:  Patch id:
                     66:  See also: 4133517
                     67:  Summary:
                     68: If the time_constant parameter is 7 or higher, and the phase-lock looping model
                     69: is in use, the system will take a "integer divide zero trap" panic in
                     70: the clock routine as soon as the time_offset becomes non-zero.
                     71: 
                     72: time_constant defaults to 0.  The only place it is set is in the ntp_adjtime
                     73: system call, from the 'constant' element of the timex structure argument.
                     74: ----------------------------------------------------------------------------

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>