Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Feb 2005 00:13:49 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/sparc64/sparc64 tick.c
Message-ID:  <200502170013.j1H0Dn2M060888@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marius      2005-02-17 00:13:49 UTC

  FreeBSD src repository

  Modified files:
    sys/sparc64/sparc64  tick.c 
  Log:
  UltraSparc II[e,i] based systems come up with the tick compare register
  loaded, the tick interrupt enabled and a handler that resets the tick
  counter on every tick interrupt. While this isn't documented this can
  cause DELAY() to wait for a value the tick counter will not reach when
  used in early boot, i.e. before cpu_initclocks() is called, depending
  on when in the cycle DELAY() is called, the delay value and the value
  the tick compare register is set to. The excessive use of DELAY() in
  uart(4) when probing Sun keyboards seems to always manage to trigger
  this, resulting in a hang during boot.
  Disable the tick interrupt in tick_init(), which is called early in
  sparc64_init(), until the interrupt is enabled again in tick_start(),
  called by cpu_initclocks(), with our own handler. This fixes the hang
  during probing Sun keyboards on AXi boards and Ultra 10, with other
  machines like Ultra 5 probably being affected but not tested.
  
  Additional testing by:  Matthias Muthmann
  MFC after:              1 week
  
  Revision  Changes    Path
  1.15      +6 -0      src/sys/sparc64/sparc64/tick.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200502170013.j1H0Dn2M060888>