aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r--drivers/scsi/aic7xxx/aic79xx.seq4
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_core.c55
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.c3
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx.seq2
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_core.c2
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c3
6 files changed, 40 insertions, 29 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.seq b/drivers/scsi/aic7xxx/aic79xx.seq
index 58bc17591b54..2fb78e35a9e5 100644
--- a/drivers/scsi/aic7xxx/aic79xx.seq
+++ b/drivers/scsi/aic7xxx/aic79xx.seq
@@ -217,7 +217,7 @@ BEGIN_CRITICAL;
217scbdma_tohost_done: 217scbdma_tohost_done:
218 test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone; 218 test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone;
219 /* 219 /*
220 * An SCB has been succesfully uploaded to the host. 220 * An SCB has been successfully uploaded to the host.
221 * If the SCB was uploaded for some reason other than 221 * If the SCB was uploaded for some reason other than
222 * bad SCSI status (currently only for underruns), we 222 * bad SCSI status (currently only for underruns), we
223 * queue the SCB for normal completion. Otherwise, we 223 * queue the SCB for normal completion. Otherwise, we
@@ -1281,7 +1281,7 @@ END_CRITICAL;
1281 * Is it a disconnect message? Set a flag in the SCB to remind us 1281 * Is it a disconnect message? Set a flag in the SCB to remind us
1282 * and await the bus going free. If this is an untagged transaction 1282 * and await the bus going free. If this is an untagged transaction
1283 * store the SCB id for it in our untagged target table for lookup on 1283 * store the SCB id for it in our untagged target table for lookup on
1284 * a reselction. 1284 * a reselection.
1285 */ 1285 */
1286mesgin_disconnect: 1286mesgin_disconnect:
1287 /* 1287 /*
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
index 63b521d615f2..78971db5b60e 100644
--- a/drivers/scsi/aic7xxx/aic79xx_core.c
+++ b/drivers/scsi/aic7xxx/aic79xx_core.c
@@ -2487,7 +2487,7 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat)
2487 /* 2487 /*
2488 * Although the driver does not care about the 2488 * Although the driver does not care about the
2489 * 'Selection in Progress' status bit, the busy 2489 * 'Selection in Progress' status bit, the busy
2490 * LED does. SELINGO is only cleared by a sucessfull 2490 * LED does. SELINGO is only cleared by a successfull
2491 * selection, so we must manually clear it to insure 2491 * selection, so we must manually clear it to insure
2492 * the LED turns off just incase no future successful 2492 * the LED turns off just incase no future successful
2493 * selections occur (e.g. no devices on the bus). 2493 * selections occur (e.g. no devices on the bus).
@@ -3171,13 +3171,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3171 tinfo->curr.transport_version = 2; 3171 tinfo->curr.transport_version = 2;
3172 tinfo->goal.transport_version = 2; 3172 tinfo->goal.transport_version = 2;
3173 tinfo->goal.ppr_options = 0; 3173 tinfo->goal.ppr_options = 0;
3174 /* 3174 if (scb != NULL) {
3175 * Remove any SCBs in the waiting for selection 3175 /*
3176 * queue that may also be for this target so 3176 * Remove any SCBs in the waiting
3177 * that command ordering is preserved. 3177 * for selection queue that may
3178 */ 3178 * also be for this target so that
3179 ahd_freeze_devq(ahd, scb); 3179 * command ordering is preserved.
3180 ahd_qinfifo_requeue_tail(ahd, scb); 3180 */
3181 ahd_freeze_devq(ahd, scb);
3182 ahd_qinfifo_requeue_tail(ahd, scb);
3183 }
3181 printerror = 0; 3184 printerror = 0;
3182 } 3185 }
3183 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) 3186 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE)
@@ -3194,13 +3197,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3194 MSG_EXT_WDTR_BUS_8_BIT, 3197 MSG_EXT_WDTR_BUS_8_BIT,
3195 AHD_TRANS_CUR|AHD_TRANS_GOAL, 3198 AHD_TRANS_CUR|AHD_TRANS_GOAL,
3196 /*paused*/TRUE); 3199 /*paused*/TRUE);
3197 /* 3200 if (scb != NULL) {
3198 * Remove any SCBs in the waiting for selection 3201 /*
3199 * queue that may also be for this target so that 3202 * Remove any SCBs in the waiting for
3200 * command ordering is preserved. 3203 * selection queue that may also be for
3201 */ 3204 * this target so that command ordering
3202 ahd_freeze_devq(ahd, scb); 3205 * is preserved.
3203 ahd_qinfifo_requeue_tail(ahd, scb); 3206 */
3207 ahd_freeze_devq(ahd, scb);
3208 ahd_qinfifo_requeue_tail(ahd, scb);
3209 }
3204 printerror = 0; 3210 printerror = 0;
3205 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) 3211 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE)
3206 && ppr_busfree == 0) { 3212 && ppr_busfree == 0) {
@@ -3217,13 +3223,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3217 /*ppr_options*/0, 3223 /*ppr_options*/0,
3218 AHD_TRANS_CUR|AHD_TRANS_GOAL, 3224 AHD_TRANS_CUR|AHD_TRANS_GOAL,
3219 /*paused*/TRUE); 3225 /*paused*/TRUE);
3220 /* 3226 if (scb != NULL) {
3221 * Remove any SCBs in the waiting for selection 3227 /*
3222 * queue that may also be for this target so that 3228 * Remove any SCBs in the waiting for
3223 * command ordering is preserved. 3229 * selection queue that may also be for
3224 */ 3230 * this target so that command ordering
3225 ahd_freeze_devq(ahd, scb); 3231 * is preserved.
3226 ahd_qinfifo_requeue_tail(ahd, scb); 3232 */
3233 ahd_freeze_devq(ahd, scb);
3234 ahd_qinfifo_requeue_tail(ahd, scb);
3235 }
3227 printerror = 0; 3236 printerror = 0;
3228 } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 3237 } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0
3229 && ahd_sent_msg(ahd, AHDMSG_1B, 3238 && ahd_sent_msg(ahd, AHDMSG_1B,
@@ -3251,7 +3260,7 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3251 * the message phases. We check it last in case we 3260 * the message phases. We check it last in case we
3252 * had to send some other message that caused a busfree. 3261 * had to send some other message that caused a busfree.
3253 */ 3262 */
3254 if (printerror != 0 3263 if (scb != NULL && printerror != 0
3255 && (lastphase == P_MESGIN || lastphase == P_MESGOUT) 3264 && (lastphase == P_MESGIN || lastphase == P_MESGOUT)
3256 && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) { 3265 && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) {
3257 3266
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
index 75b23317bd26..4c41332a354b 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -53,6 +53,7 @@ static struct scsi_transport_template *ahd_linux_transport_template = NULL;
53#include <linux/blkdev.h> /* For block_size() */ 53#include <linux/blkdev.h> /* For block_size() */
54#include <linux/delay.h> /* For ssleep/msleep */ 54#include <linux/delay.h> /* For ssleep/msleep */
55#include <linux/device.h> 55#include <linux/device.h>
56#include <linux/slab.h>
56 57
57/* 58/*
58 * Bucket size for counting good commands in between bad ones. 59 * Bucket size for counting good commands in between bad ones.
@@ -2335,7 +2336,7 @@ ahd_linux_queue_abort_cmd(struct scsi_cmnd *cmd)
2335 /* 2336 /*
2336 * The sequencer will never re-reference the 2337 * The sequencer will never re-reference the
2337 * in-core SCB. To make sure we are notified 2338 * in-core SCB. To make sure we are notified
2338 * during reslection, set the MK_MESSAGE flag in 2339 * during reselection, set the MK_MESSAGE flag in
2339 * the card's copy of the SCB. 2340 * the card's copy of the SCB.
2340 */ 2341 */
2341 ahd_outb(ahd, SCB_CONTROL, 2342 ahd_outb(ahd, SCB_CONTROL,
diff --git a/drivers/scsi/aic7xxx/aic7xxx.seq b/drivers/scsi/aic7xxx/aic7xxx.seq
index 15196390e28d..5a4cfc954a9f 100644
--- a/drivers/scsi/aic7xxx/aic7xxx.seq
+++ b/drivers/scsi/aic7xxx/aic7xxx.seq
@@ -1693,7 +1693,7 @@ if ((ahc->flags & AHC_INITIATORROLE) != 0) {
1693 * Is it a disconnect message? Set a flag in the SCB to remind us 1693 * Is it a disconnect message? Set a flag in the SCB to remind us
1694 * and await the bus going free. If this is an untagged transaction 1694 * and await the bus going free. If this is an untagged transaction
1695 * store the SCB id for it in our untagged target table for lookup on 1695 * store the SCB id for it in our untagged target table for lookup on
1696 * a reselction. 1696 * a reselection.
1697 */ 1697 */
1698mesgin_disconnect: 1698mesgin_disconnect:
1699 /* 1699 /*
diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c
index 8dfb59d58992..45aa728a76b2 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_core.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_core.c
@@ -1733,7 +1733,7 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
1733 /* 1733 /*
1734 * Although the driver does not care about the 1734 * Although the driver does not care about the
1735 * 'Selection in Progress' status bit, the busy 1735 * 'Selection in Progress' status bit, the busy
1736 * LED does. SELINGO is only cleared by a sucessfull 1736 * LED does. SELINGO is only cleared by a successfull
1737 * selection, so we must manually clear it to insure 1737 * selection, so we must manually clear it to insure
1738 * the LED turns off just incase no future successful 1738 * the LED turns off just incase no future successful
1739 * selections occur (e.g. no devices on the bus). 1739 * selections occur (e.g. no devices on the bus).
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index fd2b9785ff4f..5e42dac23505 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -129,6 +129,7 @@ static struct scsi_transport_template *ahc_linux_transport_template = NULL;
129#include <linux/mm.h> /* For fetching system memory size */ 129#include <linux/mm.h> /* For fetching system memory size */
130#include <linux/blkdev.h> /* For block_size() */ 130#include <linux/blkdev.h> /* For block_size() */
131#include <linux/delay.h> /* For ssleep/msleep */ 131#include <linux/delay.h> /* For ssleep/msleep */
132#include <linux/slab.h>
132 133
133 134
134/* 135/*
@@ -2290,7 +2291,7 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
2290 * In the non-paging case, the sequencer will 2291 * In the non-paging case, the sequencer will
2291 * never re-reference the in-core SCB. 2292 * never re-reference the in-core SCB.
2292 * To make sure we are notified during 2293 * To make sure we are notified during
2293 * reslection, set the MK_MESSAGE flag in 2294 * reselection, set the MK_MESSAGE flag in
2294 * the card's copy of the SCB. 2295 * the card's copy of the SCB.
2295 */ 2296 */
2296 if ((ahc->flags & AHC_PAGESCBS) == 0) { 2297 if ((ahc->flags & AHC_PAGESCBS) == 0) {