History log of /netbsd/sys/arch/sparc/sparc/timer.c (Results 1 – 25 of 34)
Revision Date Author Comments
# ea9054c6 12-Jan-2018 mrg <mrg@NetBSD.org>

fix hang at 4B microseconds (1h12 or so), and simplify part of the previous


# 203fcd2a 12-Jan-2018 mrg <mrg@NetBSD.org>

fix time goes backwards problems on sparc.

there are a few things here:
- there's a race between reading the limit register (which clears
the interrupt and the limit bit) and increasing the latest

fix time goes backwards problems on sparc.

there are a few things here:
- there's a race between reading the limit register (which clears
the interrupt and the limit bit) and increasing the latest offset.
this can happen easily if an interrupt comes between the read and
the call to tickle_tc() that increases the offset (i obverved this
actually happening.)
- in early boot, sometimes the counter can cycle twice before the
tickle happens.

to handle these issues, add two workarounds:
- if the limit bit isn't set, but the counter value is less than
the previous value, and the offset hasn't changed, use the same
fixup as if the limit bit was set. this handles the first case
above.
- add a hard-workaround for never allowing returning a smaller
value (except during 32 bit overflow): if the result is less than
the last result, add fixups until it does (or until it would
overflow.)

the first workaround fixes general run-time issues, and the second
fixes issues only seen during boot.

also expand some comments in timer_sun4m.c and re-enable the sun4m
sub-microsecond tmr_ustolim4m() support (but it's always called with
at least 'tick' microseconds, so the end result is the same.)

show more ...


# f01aae19 19-Jan-2014 mrg <mrg@NetBSD.org>

remove schedintr_4m(), and go back to only having the level 14
timer call statclock/schedclock. the randomness for this clock
makes the hardclock() call very jittery.

instead of this, trigger a sof

remove schedintr_4m(), and go back to only having the level 14
timer call statclock/schedclock. the randomness for this clock
makes the hardclock() call very jittery.

instead of this, trigger a softintr IPI at level 10 on non-primary
CPUs from the primary CPU's clock interrupt (at level 10.) this
cleans up the generic sparc timer code a little as well.

this makes the time goes backwards problem *much* less frequent,
but i still see it sometimes.

show more ...


# f606ca72 19-Oct-2013 mrg <mrg@NetBSD.org>

- remove unused but set variables.
- use __USE() where necessary.
- remove useless 'volatile' markers

kd.c:consinit() might be wrong for old proms, but i've not
changed it really.


# 3c6264af 29-Jul-2012 matt <matt@NetBSD.org>

Fix more -fno-common fallout.


# e6195b0c 17-Jul-2011 mrg <mrg@NetBSD.org>

convert all the sparc drivers that attach on my ss20 to use device_t,
cfdata_t and CFATTACH_DECL_NEW().

fd/fdc could use better testing, but i'm pretty sure i got it right.


# 8cf919c1 01-Jul-2011 dyoung <dyoung@NetBSD.org>

#include <sys/bus.h> instead of <machine/bus.h>.


# 3762176f 14-Feb-2011 mrg <mrg@NetBSD.org>

use schedintr() (not schedintr_4m()) on MP or single CPU configurations.


# 50368a15 04-Jan-2010 mrg <mrg@NetBSD.org>

rework the timer interrupt usage on MP sun4m systems a little. use
either schedintr() or schedintr_4m() and make sure we call hardclock()
and schedclock() appropriately. the level10 interrupt isn't

rework the timer interrupt usage on MP sun4m systems a little. use
either schedintr() or schedintr_4m() and make sure we call hardclock()
and schedclock() appropriately. the level10 interrupt isn't used much
for MP sun4m systems anymore..

now, besides crazy interrupts panics, sparc smp is functionaly again.

show more ...


# 1ee1eb05 03-Jan-2010 mrg <mrg@NetBSD.org>

add an explicit "bool mpsafe" to intr_establish(). only set it to true
for the sun4m timer/counter interrupts. this gets lev10/14 working again
on SMP systems, where those interrupts started taking

add an explicit "bool mpsafe" to intr_establish(). only set it to true
for the sun4m timer/counter interrupts. this gets lev10/14 working again
on SMP systems, where those interrupts started taking the kernel lock and
hanging...

show more ...


# df7f595e 18-Mar-2009 cegger <cegger@NetBSD.org>

Ansify function definitions w/o arguments. Generated with sed.


# 4b293a84 03-Dec-2007 ad <ad@NetBSD.org>

Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implemen

Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.

show more ...


# 09b51ec9 07-Jun-2006 kardel <kardel@NetBSD.org>

convert to timecounters (from branch simonb-timecounters)


# 8fbe0d85 16-Nov-2005 uwe <uwe@NetBSD.org>

Drop trailing whitespace.


# 7257cf94 14-Nov-2005 uwe <uwe@NetBSD.org>

ANSIify. Same binary code is produced for GENERIC.MP + KGDB + DDB.


# d20841bb 13-Feb-2004 wiz <wiz@NetBSD.org>

Uppercase CPU, plural is CPUs.


# a4183603 15-Jul-2003 lukem <lukem@NetBSD.org>

__KERNEL_RCSID()


# cc782e8a 12-Mar-2003 jdc <jdc@NetBSD.org>

Make this compile with only SUN4 defined.


# 67998a86 06-Jan-2003 pk <pk@NetBSD.org>

Move schedintr() to clock.c and initialise schedhz in initclocks(), so
these are available to all timer implementations.


# 1df04e66 31-Dec-2002 pk <pk@NetBSD.org>

Make the schedintr() code common for all timers.


# 45c45fca 10-Dec-2002 pk <pk@NetBSD.org>

intr_establish() signature change: pass NULL for the `fast trap' argument.


# 1b719337 06-Dec-2002 pk <pk@NetBSD.org>

Pass the `device class interrupt level' on to intr_establish() and use to
raise the ipl in the interrupt handlers to the appropriate level. This avoids
interrupt handler interference if one of the de

Pass the `device class interrupt level' on to intr_establish() and use to
raise the ipl in the interrupt handlers to the appropriate level. This avoids
interrupt handler interference if one of the devices actually interrupts at
a lower hardware level than the maximum level assined to a device class.

Based on code from Art Grabowski in openbsd.

show more ...


# f19c04e3 28-Nov-2002 pk <pk@NetBSD.org>

Move timer{match,attach}_mainbus() back into timer.c, since the `timer at
mainbus' configuration declaration is orthogonal to the configured SUN4[CM]
platform options.


# 0fad562c 26-Nov-2002 pk <pk@NetBSD.org>

The presence of the `timer at obio' attachment is independent of the
various CPU support settings.


# 4bf871a7 02-Oct-2002 thorpej <thorpej@NetBSD.org>

Add trailing ; to CFATTACH_DECL.


12