scsi: atari_scsi: Reset DMA during bus reset only under ST-DMA lock
authorFinn Thain <fthain@telegraphics.com.au>
Sun, 15 Jan 2017 23:50:57 +0000 (18:50 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 1 Feb 2017 02:39:22 +0000 (21:39 -0500)
The atari_scsi driver should not access Falcon DMA chip registers unless
it has acquired exclusive access to that chip. If the driver doesn't
have exclusive access then there's no need for a DMA reset as there are
no scsi commands in progress.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
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>
drivers/scsi/atari_scsi.c

index b2ffab6577a6bba6338f13ae0dda4ef267a2a3c9..f792420c533ecee25036b0c16817eb0db3c564f4 100644 (file)
@@ -682,7 +682,8 @@ static int atari_scsi_bus_reset(struct scsi_cmnd *cmd)
        if (IS_A_TT()) {
                tt_scsi_dma.dma_ctrl = 0;
        } else {
-               st_dma.dma_mode_status = 0x90;
+               if (stdma_is_locked_by(scsi_falcon_intr))
+                       st_dma.dma_mode_status = 0x90;
                atari_dma_active = 0;
                atari_dma_orig_addr = NULL;
        }