Return to solaris.xtra.4095849 CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / html / hints |
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: ----------------------------------------------------------------------------