Port-amiga archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Keyboard lockup with NetBSD5
On Wed, 11 Nov 2009, Frank Wille wrote:
John Klos wrote:
Was this inadvertent fallout from the timer updates?
Which timer updates?
You mean it was caused by the new timecounter code, we fixed a few weeks
ago? No.
Actually, I think the timecounter code could have affected this. The
delay() routine was completely rewritten. I'm not sure how accurate the
old version was, or how accurate the new one is.
Re that 2000 usec delay used apparently came from me when the Amiga 1200
support was added. Presumably that was needed to make the 1200 I had
access to at the time, and hasn't caused any problems until NetBSD 5.0,
which had the new timecounter code.
Another new thing in NetBSD 5.0 which may have a affect is that the
handling of spl*() and IPL levels was revised. I've not been able to use
a serial port to connect to another machine's serial console [although I
have verified that the Amiga serial console does still work OK]. One
thing in particular I think may be causing problems is the mutex
implementation. The mutex_enter_spin() will raise the IPL level (or leave
it alone if the requested IPL is lower than the current level), but the
mutex_exit() won't lower the IPL until the outermost spin mutex is
released. This means that if something enters a mutex with IPL_VM,
followed by a short code segment that enters and exits a mutex with
IPL_SCHED or IPL_HIGH, the IPL will remain at IPL_SCHED or IPL_HIGH until
the mutex_exit is called that entered with IPL_VM. This means code can
possibly be running at a higher IPL longer than expected. I'm not sure
this could affect the kbd interrupt handling or not.
--
Michael L. Hitch mhitch%montana.edu@localhost
Computer Consultant
Information Technology Center
Montana State University Bozeman, MT USA
Home |
Main Index |
Thread Index |
Old Index