aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/megaraid.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/megaraid.c')
-rw-r--r--drivers/scsi/megaraid.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index 6ee88c59953e..6fe884a2d00d 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -35,6 +35,7 @@
35#include <linux/blkdev.h> 35#include <linux/blkdev.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37#include <asm/io.h> 37#include <asm/io.h>
38#include <linux/completion.h>
38#include <linux/delay.h> 39#include <linux/delay.h>
39#include <linux/proc_fs.h> 40#include <linux/proc_fs.h>
40#include <linux/reboot.h> 41#include <linux/reboot.h>
@@ -4477,8 +4478,6 @@ mega_internal_command(adapter_t *adapter, lockscope_t ls, megacmd_t *mc,
4477 4478
4478 scb->idx = CMDID_INT_CMDS; 4479 scb->idx = CMDID_INT_CMDS;
4479 4480
4480 scmd->state = 0;
4481
4482 /* 4481 /*
4483 * Get the lock only if the caller has not acquired it already 4482 * Get the lock only if the caller has not acquired it already
4484 */ 4483 */
@@ -4488,15 +4487,7 @@ mega_internal_command(adapter_t *adapter, lockscope_t ls, megacmd_t *mc,
4488 4487
4489 if( ls == LOCK_INT ) spin_unlock_irqrestore(&adapter->lock, flags); 4488 if( ls == LOCK_INT ) spin_unlock_irqrestore(&adapter->lock, flags);
4490 4489
4491 /* 4490 wait_for_completion(&adapter->int_waitq);
4492 * Wait till this command finishes. Do not use
4493 * wait_event_interruptible(). It causes panic if CTRL-C is hit when
4494 * dumping e.g., physical disk information through /proc interface.
4495 */
4496#if 0
4497 wait_event_interruptible(adapter->int_waitq, scmd->state);
4498#endif
4499 wait_event(adapter->int_waitq, scmd->state);
4500 4491
4501 rval = scmd->result; 4492 rval = scmd->result;
4502 mc->status = scmd->result; 4493 mc->status = scmd->result;
@@ -4530,16 +4521,7 @@ mega_internal_done(Scsi_Cmnd *scmd)
4530 4521
4531 adapter = (adapter_t *)scmd->device->host->hostdata; 4522 adapter = (adapter_t *)scmd->device->host->hostdata;
4532 4523
4533 scmd->state = 1; /* thread waiting for its command to complete */ 4524 complete(&adapter->int_waitq);
4534
4535 /*
4536 * See comment in mega_internal_command() routine for
4537 * wait_event_interruptible()
4538 */
4539#if 0
4540 wake_up_interruptible(&adapter->int_waitq);
4541#endif
4542 wake_up(&adapter->int_waitq);
4543 4525
4544} 4526}
4545 4527
@@ -4861,7 +4843,7 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
4861 } 4843 }
4862 4844
4863 init_MUTEX(&adapter->int_mtx); 4845 init_MUTEX(&adapter->int_mtx);
4864 init_waitqueue_head(&adapter->int_waitq); 4846 init_completion(&adapter->int_waitq);
4865 4847
4866 adapter->this_id = DEFAULT_INITIATOR_ID; 4848 adapter->this_id = DEFAULT_INITIATOR_ID;
4867 adapter->host->this_id = DEFAULT_INITIATOR_ID; 4849 adapter->host->this_id = DEFAULT_INITIATOR_ID;