freebsd-nq/sys/sparc64
Marius Strobl eab1708c9e 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
2005-02-17 00:13:49 +00:00
..
central
compile
conf o Enable puc(4) and uart(4). 2005-01-30 09:27:49 +00:00
creator
ebus Don't panic when we're asked to allocate a resource type that we know 2005-01-09 18:58:08 +00:00
fhc
include - Re-write OF_decode_addr() with a bus-neutral approach, adding support 2005-02-12 19:13:51 +00:00
isa Since we are quite unlikely to ever face another platform which 2005-02-06 13:46:39 +00:00
pci At least on some U30 there's a spurious duplicate device node of an EBus 2005-01-20 13:29:31 +00:00
sbus /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
sparc64 UltraSparc II[e,i] based systems come up with the tick compare register 2005-02-17 00:13:49 +00:00