diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/scsi/aic7xxx | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.seq | 4 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_core.c | 55 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 3 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx.seq | 2 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_core.c | 2 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 3 |
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; | |||
217 | scbdma_tohost_done: | 217 | scbdma_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 | */ |
1286 | mesgin_disconnect: | 1286 | mesgin_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 | */ |
1698 | mesgin_disconnect: | 1698 | mesgin_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) { |