diff options
author | jhb <jhb@FreeBSD.org> | 2012-03-30 20:17:39 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2012-03-30 20:17:39 +0000 |
commit | 98a50d54e52d23d301e1d7f73f41cd564c3d9671 (patch) | |
tree | c259ceff59130d45a30debab81ddd4f44ec7416a /sys/dev | |
parent | 0f7a6b4eb78584a88dfb32549c62e351d32b33fe (diff) | |
download | FreeBSD-src-98a50d54e52d23d301e1d7f73f41cd564c3d9671.zip FreeBSD-src-98a50d54e52d23d301e1d7f73f41cd564c3d9671.tar.gz |
Attempt to make machine check handling a bit more robust:
- Don't malloc() new MCA records for machine checks logged due to a
CMCI or MC# exception. Instead, use a pre-allocated pool of records.
When a CMCI or MC# exception fires, schedule a swi to refill the pool.
The pool is sized to hold at least one record per available machine
bank, and one record per CPU. This should handle the case of all CPUs
triggering a single bank at once as well as the case a single CPU
triggering all of its banks. The periodic scans still use malloc()
since they are run from a safe context.
- Since we have to create an swi to handle refills, make the periodic scan
a second swi for the same thread instead of having a separate taskqueue
thread for the scans.
Suggested by: mdf (avoiding malloc())
MFC after: 2 weeks
Diffstat (limited to 'sys/dev')
0 files changed, 0 insertions, 0 deletions