summaryrefslogtreecommitdiffstats
path: root/lib/libthr/thread/thr_mutex.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2010-12-23 15:17:28 +0000
committerjhb <jhb@FreeBSD.org>2010-12-23 15:17:28 +0000
commitbdcd5b684b7c24a1020cd522268e8883a3d6a281 (patch)
tree5acaa8bd4690e81161f5f60c27de927498dc1c8c /lib/libthr/thread/thr_mutex.c
parent63146a595208cadf45b77b5a5653b8bac04084e0 (diff)
downloadFreeBSD-src-bdcd5b684b7c24a1020cd522268e8883a3d6a281.zip
FreeBSD-src-bdcd5b684b7c24a1020cd522268e8883a3d6a281.tar.gz
Drop the icu_lock spinlock while pausing briefly after masking the
interrupt in the I/O APIC before moving it to a different CPU. If the interrupt had been triggered by the I/O APIC after locking icu_lock but before we masked the pin in the I/O APIC, then this could cause the interrupt to be pending on the "old" CPU and it would finally trigger after we had moved the interrupt to the new CPU. This could cause us to panic as there was no interrupt source associated with the old IDT vector on the old CPU. Dropping the lock after the interrupt is masked but before it is moved allows the interrupt to fire and be handled in this case before it is moved. Tested by: Daniel Braniss danny of cs huji ac il MFC after: 1 week
Diffstat (limited to 'lib/libthr/thread/thr_mutex.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud