Plan 9 from Bell Labs’s /usr/web/sources/contrib/stallion/patch/panic-rdb/readme

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


This patch address a couple of long-standing issues revolving around
kernel panics and use of rdb.

Previously, rdb simply did not work on mp systems, as it assumed a
splhi was sufficient to lock system resources.  On an mp system,
unless the uart ISR happened to be wired to the same CPU that has
dropped into rdb, I/O will be stolen from the getc poll rdb relies on
to communicate with the remote debugger.  To fix this behavior, rdb
must lock out other machs to avoid sharing resources.

panic is similarly afflicted.  A splhi is issued which is typically not
enough, often resulting in corrupted dumpstack output from prints
on other machs.  Another interesting side-effect is that procs will
continue to run on machs not participating in the panic.  These
changes made panic a first class citizen rather than a variant of
shutdown.

To handle both cases, panic (and each arch) have been updated to
stall out other machs on the next clock interrupt.  This is somewhat
similiar to the exiting mechanism.  The difference is that this allows
the system to pre-emptively shutdown machs apart from exit, which
happens too late.  A nice side-effect of this change is that not only
does this correct rdb behavior, but it also handles the corrupted
dumpstack and racing procs issues nicely.

A final change introduced a new plan9.ini conf variable, consdebug
which enables ^T^Td at boot, which permits use of rdb early in the
boot process.

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.