Every kernel up to the current RHEL3 U6 beta kernel contain a number of problems
in the a100u2w driver:
- Possible deadlocks:
(1) spinlock for pHCB->BitAllocFlagLock will be called twice in a row in
orc_device_reset() resulting in a deadlock.
(2) Wait routine which assumes interrupt was called with interrupts disabled.
Bus reset sequence in orc_reset_scsi_bus() will call wait function
waitSCSIRSTdone() after spin_lock_irqsave() is called. Since timer interrutps
are diabled, jiffies will not be updated and the system will stall.
(3) SCSI bus reset sequence will not finish if SCSI bus reset was called.
During SCSI bus reset, firmware uses 0x1b to notice interrupts. However,
a100u2w driver does not recognize 0x1b and reports DID_ERROR to SCSI layer.
Therefore SCSI bus reset will terminate abnormally and the bus reset sequence
cannot finish.
- Stall on startup when a tape is being used while the system is rebooted. The
driver assumes that the bus will be reset, when in fact it might not have been.
The patch comes from Kosuke TATSUKAWA <tatsu@ab.jp.nec.com>, backported from the
current a100u2w driver from Initio.