cvs commit: src/sys/boot/i386/libi386 time.c

Oliver Fromme olli at FreeBSD.org
Mon Jun 16 17:04:23 UTC 2008


olli        2008-06-16 17:04:04 UTC

  FreeBSD src repository

  Modified files:
    sys/boot/i386/libi386 time.c 
  Log:
  SVN rev 179825 on 2008-06-16 17:04:04Z by olli
  
  Implement a workaround for a long-standing problem in
  libi386's time(), caused by a qemu bug.  The bug might
  be present in other BIOSes, too.
  
  qemu either does not simulate the AT RTC correctly or
  has a broken BIOS 1A/02 implementation, and will return
  an incorrect value if the RTC is read while it is being
  updated.
  
  The effect is worsened by the fact that qemu's INT 15/86
  function ("wait" a.k.a. usleep) is non-implmeneted or
  broken and returns immediately, causing beastie.4th to
  spin in a tight loop calling the "read RTC" function
  millions of times, triggering the problem quickly.
  
  Therefore, we keep reading the BIOS value until we get
  the same result twice.  This change fixes beastie.4th's
  countdown under qemu.
  
  Approved by:    des (mentor)
  
  Revision  Changes    Path
  1.6       +32 -8     src/sys/boot/i386/libi386/time.c


More information about the cvs-src mailing list