Revert r291022: x86/intr: allow mutex recursion in intr_remove_handler

This was only needed for Xen, and a better way to deal with this issue has
been found, so this commit can be reverted.

Sponsored by:		Citrix Systems R&D
MFC after:		5 days
Reviewed by:		kib
Differential revision:	https://reviews.freebsd.org/D7363
This commit is contained in:
Roger Pau Monné 2016-07-29 16:35:58 +00:00
parent 35fdb32d86
commit 23006680c7

View File

@ -197,28 +197,19 @@ int
intr_remove_handler(void *cookie)
{
struct intsrc *isrc;
int error, mtx_owned;
int error;
isrc = intr_handler_source(cookie);
error = intr_event_remove_handler(cookie);
if (error == 0) {
/*
* Recursion is needed here so PICs can remove interrupts
* while resuming. It was previously not possible due to
* intr_resume holding the intr_table_lock and
* intr_remove_handler recursing on it.
*/
mtx_owned = mtx_owned(&intr_table_lock);
if (mtx_owned == 0)
mtx_lock(&intr_table_lock);
mtx_lock(&intr_table_lock);
isrc->is_handlers--;
if (isrc->is_handlers == 0) {
isrc->is_pic->pic_disable_source(isrc, PIC_NO_EOI);
isrc->is_pic->pic_disable_intr(isrc);
}
intrcnt_updatename(isrc);
if (mtx_owned == 0)
mtx_unlock(&intr_table_lock);
mtx_unlock(&intr_table_lock);
}
return (error);
}