From: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx> Use msleep() instead of schedule_timeout Signed-off-by: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx> --- drivers/scsi/hpsa.c | 27 ++++++++++++++------------- drivers/scsi/hpsa.h | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 3c079a4..dc5e518 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -1933,7 +1933,7 @@ static int wait_for_device_to_become_ready(struct ctlr_info *h, { int rc = 0; int count = 0; - int waittime = HZ; + int waittime = 1; /* seconds */ struct CommandList *c; c = cmd_special_alloc(h); @@ -1950,11 +1950,11 @@ static int wait_for_device_to_become_ready(struct ctlr_info *h, * the TUR right away, the reset will just abort it. */ set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(waittime); + msleep(1000 * waittime); count++; /* Increase wait time with each try, up to a point. */ - if (waittime < (HZ * HPSA_MAX_WAIT_INTERVAL_SECS)) + if (waittime < HPSA_MAX_WAIT_INTERVAL_SECS) waittime = waittime * 2; /* Send the Test Unit Ready */ @@ -1972,7 +1972,7 @@ static int wait_for_device_to_become_ready(struct ctlr_info *h, break; dev_warn(&h->pdev->dev, "waiting %d secs " - "for device to become ready.\n", waittime / HZ); + "for device to become ready.\n", waittime); rc = 1; /* device not ready. */ } @@ -2838,8 +2838,8 @@ static __devinit int hpsa_message(struct pci_dev *pdev, unsigned char opcode, tag = readl(vaddr + SA5_REPLY_PORT_OFFSET); if (HPSA_TAG_DISCARD_ERROR_BITS(tag) == paddr32) break; - schedule_timeout_uninterruptible( - HPSA_MSG_SEND_RETRY_INTERVAL_SECS * HZ); + set_current_state(TASK_UNINTERRUPTIBLE); + msleep(HPSA_MSG_SEND_RETRY_INTERVAL_MSECS); } iounmap(vaddr); @@ -2953,7 +2953,7 @@ static __devinit int hpsa_hard_reset_controller(struct pci_dev *pdev) pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr); set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(HZ >> 1); + msleep(500); /* enter the D0 power management state */ pmcsr &= ~PCI_PM_CTRL_STATE_MASK; @@ -2961,7 +2961,7 @@ static __devinit int hpsa_hard_reset_controller(struct pci_dev *pdev) pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr); set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(HZ >> 1); + msleep(500); /* Restore the PCI configuration space. The Open CISS * Specification says, "Restore the PCI Configuration @@ -3187,8 +3187,8 @@ static int hpsa_pci_init(struct ctlr_info *h, struct pci_dev *pdev) scratchpad = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); if (scratchpad == HPSA_FIRMWARE_READY) break; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HPSA_BOARD_READY_POLL_INTERVAL); + set_current_state(TASK_UNINTERRUPTIBLE); + msleep(HPSA_BOARD_READY_POLL_INTERVAL_MSECS); } if (scratchpad != HPSA_FIRMWARE_READY) { dev_warn(&pdev->dev, "board not ready, timed out.\n"); @@ -3262,8 +3262,8 @@ static int hpsa_pci_init(struct ctlr_info *h, struct pci_dev *pdev) if (!(readl(h->vaddr + SA5_DOORBELL) & CFGTBL_ChangeReq)) break; /* delay and try again */ - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(10); + set_current_state(TASK_UNINTERRUPTIBLE); + msleep(10); } #ifdef HPSA_DEBUG @@ -3302,7 +3302,8 @@ static int __devinit hpsa_init_one(struct pci_dev *pdev, /* Some devices (notably the HP Smart Array 5i Controller) need a little pause here */ - schedule_timeout_uninterruptible(HPSA_POST_RESET_PAUSE); + set_current_state(TASK_UNINTERRUPTIBLE); + msleep(HPSA_POST_RESET_PAUSE_MSECS); /* Now try to get the controller to respond to a no-op */ for (i = 0; i < HPSA_POST_RESET_NOOP_RETRIES; i++) { diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h index ffa8c50..6bd1949 100644 --- a/drivers/scsi/hpsa.h +++ b/drivers/scsi/hpsa.h @@ -108,7 +108,7 @@ struct ctlr_info { #define HPSA_BUS_RESET_MSG 2 #define HPSA_HOST_RESET_MSG 3 #define HPSA_MSG_SEND_RETRY_LIMIT 10 -#define HPSA_MSG_SEND_RETRY_INTERVAL_SECS 1 +#define HPSA_MSG_SEND_RETRY_INTERVAL_MSECS 1000 /* Maximum time in seconds driver will wait for command completions * when polling before giving up. @@ -139,7 +139,7 @@ struct ctlr_info { #define HPSA_BOARD_READY_ITERATIONS \ ((HPSA_BOARD_READY_WAIT_SECS * 1000) / \ HPSA_BOARD_READY_POLL_INTERVAL_MSECS) -#define HPSA_POST_RESET_PAUSE (30 * HZ) +#define HPSA_POST_RESET_PAUSE_MSECS (3000) #define HPSA_POST_RESET_NOOP_RETRIES (12) /* Defining the diffent access_menthods */ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html