/contrib/ntp/html/build/hints/solaris.xtra.4095849

https://bitbucket.org/freebsd/freebsd-head/ · Unknown · 74 lines · 61 code · 13 blank · 0 comment · 0 complexity · d3b9c368526a1df85095c4158e619dce MD5 · raw file

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