Subject: CVS commit: src/sys/arch/powerpc/powerpc
To: None <source-changes@NetBSD.org>
From: Jachym Holecek <freza@netbsd.org>
List: source-changes
Date: 01/30/2007 05:25:15
Module Name: src
Committed By: freza
Date: Tue Jan 30 05:25:15 UTC 2007
Modified Files:
src/sys/arch/powerpc/powerpc: softintr.c
Log Message:
Protect softintr queues by direct manipulation of PSL_EE because PowerPC
ports have different IPL hierarchies. On macppc, IPL_VM is below IPL_AUDIO
and IPL_SERIAL so the queues got corrupted due to priority inversion.
Also fix a race condition in softintr_schedule() when testing "si_refs > 1",
it can lead to queue corruption and subsequent panic (below). As a side
effect, using PSL_EE directly is faster than going via spl*()/splx().
This is supposed to fix (XXX I don't have the hw):
Panic: kernel diagnostic assert "si->si_refs > 0" failed: file
"[...]arch/powerpc/powerpc/softintr.c" line 116
reported for example in:
http://mail-index.netbsd.org/port-macppc/2007/01/25/0001.html
Discussed with briggs@ and macallan@.
To generate a diff of this commit:
cvs rdiff -r1.5 -r1.6 src/sys/arch/powerpc/powerpc/softintr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.