I think I located the reason for the Ugh in the scsi cdrom driver.
do_sr_request() (in drivers/cdrom/sr.c).
The function is starting with
save_flags(flags);
cli();
But later uses the macro INIT_SCSI_REQUEST:
#define INIT_SCSI_REQUEST \
if (!CURRENT) { \
CLEAR_INTR; \
spin_unlock_irqrestore(¤t_lock,flags); \
return; \
....
Which does not reset global_irq_holder (when __SMP__ is defined).
Notice also that if the host is "in_recovery" that same function returns
without re-enabling interrupts.
Itai
-- Itai Nahshon nahshon@actcom.co.il Also nahshon@vnet.ibm.com- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu