aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Reed <mdr@sgi.com>2006-05-24 16:07:57 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-06-10 17:01:52 -0400
commitd6be06c84da9626b10443c664ee55bda96fb3514 (patch)
tree603c279d787722b9a64208ae7255c34a74af7405
parent419835e285c3e39cd62c8c8426da0aebea9cd89f (diff)
[SCSI] mptfc: abort of board reset leaves port dead requiring reboot
The driver uses msleep_interruptible() in the code path responsible for resetting the card's ports via the lsiutil command. If a <ctrl-c> is received during the reset it can leave a port in such a state that the only way to regain its use is to reboot the system. Changing from msleep_interruptible() to msleep() corrects the problem. Signed-off-by: Michael Reed <mdr@sgi.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r--drivers/message/fusion/mptbase.c30
-rw-r--r--drivers/message/fusion/mptfc.c2
-rw-r--r--drivers/message/fusion/mptscsih.c2
3 files changed, 17 insertions, 17 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 330c29080e3c..08779d79a1f0 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -2291,7 +2291,7 @@ MakeIocReady(MPT_ADAPTER *ioc, int force, int sleepFlag)
2291 } 2291 }
2292 2292
2293 if (sleepFlag == CAN_SLEEP) { 2293 if (sleepFlag == CAN_SLEEP) {
2294 msleep_interruptible(1); 2294 msleep(1);
2295 } else { 2295 } else {
2296 mdelay (1); /* 1 msec delay */ 2296 mdelay (1); /* 1 msec delay */
2297 } 2297 }
@@ -2679,7 +2679,7 @@ SendIocInit(MPT_ADAPTER *ioc, int sleepFlag)
2679 state = mpt_GetIocState(ioc, 1); 2679 state = mpt_GetIocState(ioc, 1);
2680 while (state != MPI_IOC_STATE_OPERATIONAL && --cntdn) { 2680 while (state != MPI_IOC_STATE_OPERATIONAL && --cntdn) {
2681 if (sleepFlag == CAN_SLEEP) { 2681 if (sleepFlag == CAN_SLEEP) {
2682 msleep_interruptible(1); 2682 msleep(1);
2683 } else { 2683 } else {
2684 mdelay(1); 2684 mdelay(1);
2685 } 2685 }
@@ -2931,7 +2931,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
2931 2931
2932 /* wait 1 msec */ 2932 /* wait 1 msec */
2933 if (sleepFlag == CAN_SLEEP) { 2933 if (sleepFlag == CAN_SLEEP) {
2934 msleep_interruptible(1); 2934 msleep(1);
2935 } else { 2935 } else {
2936 mdelay (1); 2936 mdelay (1);
2937 } 2937 }
@@ -2948,7 +2948,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
2948 } 2948 }
2949 /* wait .1 sec */ 2949 /* wait .1 sec */
2950 if (sleepFlag == CAN_SLEEP) { 2950 if (sleepFlag == CAN_SLEEP) {
2951 msleep_interruptible (100); 2951 msleep (100);
2952 } else { 2952 } else {
2953 mdelay (100); 2953 mdelay (100);
2954 } 2954 }
@@ -3038,7 +3038,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
3038 3038
3039 /* wait 1 msec */ 3039 /* wait 1 msec */
3040 if (sleepFlag == CAN_SLEEP) { 3040 if (sleepFlag == CAN_SLEEP) {
3041 msleep_interruptible (1); 3041 msleep (1);
3042 } else { 3042 } else {
3043 mdelay (1); 3043 mdelay (1);
3044 } 3044 }
@@ -3086,7 +3086,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
3086 return 0; 3086 return 0;
3087 } 3087 }
3088 if (sleepFlag == CAN_SLEEP) { 3088 if (sleepFlag == CAN_SLEEP) {
3089 msleep_interruptible (10); 3089 msleep (10);
3090 } else { 3090 } else {
3091 mdelay (10); 3091 mdelay (10);
3092 } 3092 }
@@ -3137,7 +3137,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
3137 SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag); 3137 SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag);
3138 3138
3139 if (sleepFlag == CAN_SLEEP) { 3139 if (sleepFlag == CAN_SLEEP) {
3140 msleep_interruptible (1000); 3140 msleep (1000);
3141 } else { 3141 } else {
3142 mdelay (1000); 3142 mdelay (1000);
3143 } 3143 }
@@ -3159,7 +3159,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
3159 return hard_reset_done; 3159 return hard_reset_done;
3160 } 3160 }
3161 if (sleepFlag == CAN_SLEEP) { 3161 if (sleepFlag == CAN_SLEEP) {
3162 msleep_interruptible (10); 3162 msleep (10);
3163 } else { 3163 } else {
3164 mdelay (10); 3164 mdelay (10);
3165 } 3165 }
@@ -3230,7 +3230,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3230 3230
3231 /* wait 100 msec */ 3231 /* wait 100 msec */
3232 if (sleepFlag == CAN_SLEEP) { 3232 if (sleepFlag == CAN_SLEEP) {
3233 msleep_interruptible (100); 3233 msleep (100);
3234 } else { 3234 } else {
3235 mdelay (100); 3235 mdelay (100);
3236 } 3236 }
@@ -3309,7 +3309,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3309 3309
3310 /* wait 1 sec */ 3310 /* wait 1 sec */
3311 if (sleepFlag == CAN_SLEEP) { 3311 if (sleepFlag == CAN_SLEEP) {
3312 msleep_interruptible (1000); 3312 msleep (1000);
3313 } else { 3313 } else {
3314 mdelay (1000); 3314 mdelay (1000);
3315 } 3315 }
@@ -3337,7 +3337,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3337 3337
3338 /* wait 1 sec */ 3338 /* wait 1 sec */
3339 if (sleepFlag == CAN_SLEEP) { 3339 if (sleepFlag == CAN_SLEEP) {
3340 msleep_interruptible (1000); 3340 msleep (1000);
3341 } else { 3341 } else {
3342 mdelay (1000); 3342 mdelay (1000);
3343 } 3343 }
@@ -3371,7 +3371,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3371 3371
3372 /* wait 100 msec */ 3372 /* wait 100 msec */
3373 if (sleepFlag == CAN_SLEEP) { 3373 if (sleepFlag == CAN_SLEEP) {
3374 msleep_interruptible (100); 3374 msleep (100);
3375 } else { 3375 } else {
3376 mdelay (100); 3376 mdelay (100);
3377 } 3377 }
@@ -3465,7 +3465,7 @@ SendIocReset(MPT_ADAPTER *ioc, u8 reset_type, int sleepFlag)
3465 } 3465 }
3466 3466
3467 if (sleepFlag == CAN_SLEEP) { 3467 if (sleepFlag == CAN_SLEEP) {
3468 msleep_interruptible(1); 3468 msleep(1);
3469 } else { 3469 } else {
3470 mdelay (1); /* 1 msec delay */ 3470 mdelay (1); /* 1 msec delay */
3471 } 3471 }
@@ -3905,7 +3905,7 @@ WaitForDoorbellAck(MPT_ADAPTER *ioc, int howlong, int sleepFlag)
3905 intstat = CHIPREG_READ32(&ioc->chip->IntStatus); 3905 intstat = CHIPREG_READ32(&ioc->chip->IntStatus);
3906 if (! (intstat & MPI_HIS_IOP_DOORBELL_STATUS)) 3906 if (! (intstat & MPI_HIS_IOP_DOORBELL_STATUS))
3907 break; 3907 break;
3908 msleep_interruptible (1); 3908 msleep (1);
3909 count++; 3909 count++;
3910 } 3910 }
3911 } else { 3911 } else {
@@ -3954,7 +3954,7 @@ WaitForDoorbellInt(MPT_ADAPTER *ioc, int howlong, int sleepFlag)
3954 intstat = CHIPREG_READ32(&ioc->chip->IntStatus); 3954 intstat = CHIPREG_READ32(&ioc->chip->IntStatus);
3955 if (intstat & MPI_HIS_DOORBELL_INTERRUPT) 3955 if (intstat & MPI_HIS_DOORBELL_INTERRUPT)
3956 break; 3956 break;
3957 msleep_interruptible(1); 3957 msleep(1);
3958 count++; 3958 count++;
3959 } 3959 }
3960 } else { 3960 } else {
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index 770df553047a..74714e5bcf03 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -678,7 +678,7 @@ mptfc_GetFcPortPage0(MPT_ADAPTER *ioc, int portnum)
678 */ 678 */
679 if (pp0dest->PortState == MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN) { 679 if (pp0dest->PortState == MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN) {
680 if (count-- > 0) { 680 if (count-- > 0) {
681 msleep_interruptible(100); 681 msleep(100);
682 goto try_again; 682 goto try_again;
683 } 683 }
684 printk(MYIOC_s_INFO_FMT "Firmware discovery not" 684 printk(MYIOC_s_INFO_FMT "Firmware discovery not"
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 2d81831cf628..8242b16e3168 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1922,7 +1922,7 @@ mptscsih_tm_wait_for_completion(MPT_SCSI_HOST * hd, ulong timeout )
1922 break; 1922 break;
1923 } 1923 }
1924 spin_unlock_irqrestore(&hd->ioc->FreeQlock, flags); 1924 spin_unlock_irqrestore(&hd->ioc->FreeQlock, flags);
1925 msleep_interruptible(250); 1925 msleep(250);
1926 } while (--loop_count); 1926 } while (--loop_count);
1927 1927
1928 return status; 1928 return status;