IA64 now supports concurrent INIT events on multiple cpus, so I am
going to change KDB on IA64 to send its inter processor interrupt as
INIT instead of as a normal interrupt.  That will get around the
problem of IA64 masking the "non-maskable" interrupt when a processor
disables interrupts, so we can finally get decent debugging data on
processors that are spinning disabled.  It will also get rid of the
need to manually use the KDB init command to get data from spinning
cpus.

The only downside is that INIT can be delivered at any time, including
when the kernel is processing a normal interrupt and is in ivt.S.
Because that code saves the interrupt state, it is not possible to get
a backtrace if a non-maskable interrupt arrives in the middle of ivt.S.
In an attempt to avoid that problem, I will send a normal interrupt
first and, if any cpus have not responded after a few seconds, then KDB
will hit them with INIT.

Any objections?  I will add an option to preserve the existing
behaviour (only use a normal interrupt) just in case any platforms are
still having problems with multiple INIT events.

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

Reply via email to