diff options
Diffstat (limited to 'drivers/scsi/megaraid.c')
-rw-r--r-- | drivers/scsi/megaraid.c | 26 |
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; |