summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2016-01-03 08:06:02 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2016-01-07 05:43:08 +0300
commit707d62b37fbb1de74da6e5cf263bcd8223ae3cf7 (patch)
tree21db484b3859630593a189a59838f312ebd81498 /block
parent8b00c3d5d40da0477fceffadcfbc2c09f24104d0 (diff)
downloadlinux-707d62b37fbb1de74da6e5cf263bcd8223ae3cf7.tar.xz
ncr5380: Fix EH during arbitration and selection
During arbitration and selection, the relevant command is invisible to exception handlers and can be found only in a pointer on the stack of a different thread. When eh_abort_handler can't find a given command, it can't decide whether that command was completed already or is still in arbitration or selection phase. But it must return either SUCCESS (e.g. command completed earlier) or FAILED (could not abort the nexus, try bus reset). The solution is to make sure all commands belonging to the LLD are always visible to exception handlers. Add another scsi_cmnd pointer to the hostdata struct to track the command in arbitration or selection phase. Replace 'retain_dma_irq' with the new 'selecting' pointer, to bring atari_NCR5380.c into line with NCR5380.c. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Hannes Reinecke <hare@suse.com> Tested-by: Ondrej Zary <linux@rainbow-software.org> Tested-by: Michael Schmitz <schmitzmic@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions