Keith and the list...

Using kdb 4.4...

I am working on taking some of Ingo's realtime patches and getting KDB
to work properly with them.  The first of this step is the
CONFIG_PREEMPT_DESKTOP, which is also in standard kernel.org.

I had a question about the purpose of disabling/enabling the bottom
halves in kdb().  I find that if I have this code in the tree, and then
run "ss" and then "go" the system preemption count gets skewed.  This
causes all kinds of bad mojo with the scheduler and basically breaks the
system.

I tracked the preemption to a local_bh_disable that is done when single
step is started.  But it is not undone when kdb returns, which causes an
interrupt preemption count to get off track in the 8250 serial interrupt
handler.  I am not sure, but this problem may be visible on standard
kernel.org with standard kdb 4.4 with 8250 serial enabled when running
with preemption.

I took out the local_bh_disable/local_bh_enable entirely from kdb()
function, and single step works like a champ.  My question is, what is
the purpose of that usage?  Just to shut off softirq processing while
KDB is running?

The root of the problem is that the softirq preemption count is
overloaded to specify when bh's should be disabled, but the softirq
preemption count is used by other parts of the scheduler without this
overload in mind.  I was thinking of hacking in an additional flag which
identifies if "bottom halves are disabled" especially for kdb without
setting the overloaded preemption count value.

Do you have other ideas?  Is the disable/enable really needed?  Why not
reenable on single step?

Thanks
-steve

---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.

Reply via email to