Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Nov 2011 10:32:15 +0200
From:      Kostik Belousov <kostikbel@gmail.com>
To:        arch@freebsd.org
Cc:        current@freebsd.org, avg@freebsd.org
Subject:   Stop scheduler on panic
Message-ID:  <20111113083215.GV50300@deviant.kiev.zoral.com.ua>

next in thread | raw e-mail | index | archive | help

--RecmMh7zm4dDGtcP
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I was tricked into finishing the work by Andrey Gapon, who developed
the patch to reliably stop other processors on panic.  The patch
greatly improves the chances of getting dump on panic on SMP host.
Several people already saw the patchset, and I remember that Andrey
posted it to some lists.

The change stops other (*) processors early upon the panic.  This way,
no parallel manipulation of the kernel memory is performed by CPUs.
In particular, the kernel memory map is static.  Patch prevents the
panic thread from blocking and switching out.

* - in the context of the description, other means not current.

Since other threads are not run anymore, lock owner cannot release a
lock which is required by panic thread.  Due to this, we need to fake
a lock acquisition after the panic, which adds minimal overhead to the
locking cost. The patch tries to not add any overhead on the fast path
of the lock acquire.  The check for the after-panic condition was
reduced to single memory access, done only when the quick cas lock
attempt failed, and braced with __unlikely compiler hint.

For now, the new mode of operation is disabled by default, since some
further USB changes are needed to make USB keyboard usable in that
environment.

With the patch, getting a dump from the machine without debugger
compiled in is much more realistic.  Please comment, I will commit the
change in 2 weeks unless strong reasons not to are given.

http://people.freebsd.org/~kib/misc/stop_cpus_on_panic.1.patch


--RecmMh7zm4dDGtcP
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (FreeBSD)

iEYEARECAAYFAk6/gI8ACgkQC3+MBN1Mb4hPZACdGVqOo6jiI4LP4qLX/9Kv19y6
U2UAni3euzO0s2e8m1kKpC00dSByyUR/
=tKJL
-----END PGP SIGNATURE-----

--RecmMh7zm4dDGtcP--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111113083215.GV50300>