3.11.10.13 -stable review patch.  If anyone has any objections, please let me 
know.

------------------

From: Asai Thambi S P <asamymuth...@micron.com>

commit 670a641420a3d9586eebe7429dfeec4e7ed447aa upstream.

Increased timeout for STANDBY IMMEDIATE command to 2 minutes.

Signed-off-by: Selvan Mani <sm...@micron.com>
Signed-off-by: Asai Thambi S P <asamymuth...@micron.com>
Signed-off-by: Jens Axboe <ax...@fb.com>
Signed-off-by: Luis Henriques <luis.henriq...@canonical.com>
---
 drivers/block/mtip32xx/mtip32xx.c | 66 +++++++++++++++++++++------------------
 1 file changed, 35 insertions(+), 31 deletions(-)

diff --git a/drivers/block/mtip32xx/mtip32xx.c 
b/drivers/block/mtip32xx/mtip32xx.c
index 4d26c25aa9c5..f394f6d21bd0 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -1493,6 +1493,37 @@ static inline void ata_swap_string(u16 *buf, unsigned 
int len)
                be16_to_cpus(&buf[i]);
 }
 
+static void mtip_set_timeout(struct driver_data *dd,
+                                       struct host_to_dev_fis *fis,
+                                       unsigned int *timeout, u8 erasemode)
+{
+       switch (fis->command) {
+       case ATA_CMD_DOWNLOAD_MICRO:
+               *timeout = 120000; /* 2 minutes */
+               break;
+       case ATA_CMD_SEC_ERASE_UNIT:
+       case 0xFC:
+               if (erasemode)
+                       *timeout = ((*(dd->port->identify + 90) * 2) * 60000);
+               else
+                       *timeout = ((*(dd->port->identify + 89) * 2) * 60000);
+               break;
+       case ATA_CMD_STANDBYNOW1:
+               *timeout = 120000;  /* 2 minutes */
+               break;
+       case 0xF7:
+       case 0xFA:
+               *timeout = 60000;  /* 60 seconds */
+               break;
+       case ATA_CMD_SMART:
+               *timeout = 15000;  /* 15 seconds */
+               break;
+       default:
+               *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS;
+               break;
+       }
+}
+
 /*
  * Request the device identity information.
  *
@@ -1602,6 +1633,7 @@ static int mtip_standby_immediate(struct mtip_port *port)
        int rv;
        struct host_to_dev_fis  fis;
        unsigned long start;
+       unsigned int timeout;
 
        /* Build the FIS. */
        memset(&fis, 0, sizeof(struct host_to_dev_fis));
@@ -1609,6 +1641,8 @@ static int mtip_standby_immediate(struct mtip_port *port)
        fis.opts        = 1 << 7;
        fis.command     = ATA_CMD_STANDBYNOW1;
 
+       mtip_set_timeout(port->dd, &fis, &timeout, 0);
+
        start = jiffies;
        rv = mtip_exec_internal_command(port,
                                        &fis,
@@ -1617,7 +1651,7 @@ static int mtip_standby_immediate(struct mtip_port *port)
                                        0,
                                        0,
                                        GFP_ATOMIC,
-                                       15000);
+                                       timeout);
        dbg_printk(MTIP_DRV_NAME "Time taken to complete standby cmd: %d ms\n",
                        jiffies_to_msecs(jiffies - start));
        if (rv)
@@ -2156,36 +2190,6 @@ static unsigned int implicit_sector(unsigned char 
command,
        }
        return rv;
 }
-static void mtip_set_timeout(struct driver_data *dd,
-                                       struct host_to_dev_fis *fis,
-                                       unsigned int *timeout, u8 erasemode)
-{
-       switch (fis->command) {
-       case ATA_CMD_DOWNLOAD_MICRO:
-               *timeout = 120000; /* 2 minutes */
-               break;
-       case ATA_CMD_SEC_ERASE_UNIT:
-       case 0xFC:
-               if (erasemode)
-                       *timeout = ((*(dd->port->identify + 90) * 2) * 60000);
-               else
-                       *timeout = ((*(dd->port->identify + 89) * 2) * 60000);
-               break;
-       case ATA_CMD_STANDBYNOW1:
-               *timeout = 120000;  /* 2 minutes */
-               break;
-       case 0xF7:
-       case 0xFA:
-               *timeout = 60000;  /* 60 seconds */
-               break;
-       case ATA_CMD_SMART:
-               *timeout = 15000;  /* 15 seconds */
-               break;
-       default:
-               *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS;
-               break;
-       }
-}
 
 /*
  * Executes a taskfile
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to