cvs commit: src/sys/dev/acpica acpi_timer.c

Nate Lawson njl at FreeBSD.org
Tue Apr 20 17:48:17 PDT 2004


njl         2004/04/20 17:48:17 PDT

  FreeBSD src repository

  Modified files:
    sys/dev/acpica       acpi_timer.c 
  Log:
  Fix several bugs where 32-bit timers and wraparound were not properly
  supported.  Symptoms of this bug included unnecessary use of ACPI-safe
  and a dmesg that has deltas of about 2^24:
  
      ACPI timer looks BAD  min = 2, max = 16777206, width = 16777204
      ACPI timer looks BAD  min = 2, max = 7, width = 5
      ACPI timer looks GOOD min = 4, max = 5, width = 1
      ACPI timer looks BAD  min = 2, max = 16777206, width = 16777204
      ACPI timer looks BAD  min = 2, max = 7, width = 5
      ACPI timer looks BAD  min = 2, max = 16777210, width = 16777208
      ACPI timer looks BAD  min = 4, max = 16777189, width = 16777185
      ACPI timer looks GOOD min = 4, max = 5, width = 1
      ACPI timer looks BAD  min = 2, max = 7, width = 5
      ACPI timer looks BAD  min = 4, max = 16777189, width = 16777185
  
  To fix this:
  * Use a 32 bit timecounter mask when the timer is 32 bits.
  * In test_counter(), use the acpi_TimerDelta function which handles 24/32
    bit timers and wraparound.
  
  Miscellaneous fixes:
  * Use C99 initializers for timecounter struct.
  * Use u_int and uint32_t where appropriate instead of unsigned.
  * Remove whitespace-only lines
  * Remove the old PIIX4 PCI workaround.  The timecounter testing code has
    been in use for long enough to prove it's functional.
  
  Revision  Changes    Path
  1.29      +26 -110   src/sys/dev/acpica/acpi_timer.c


More information about the cvs-src mailing list