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