#
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.
|