lkml.org 
[lkml]   [2014]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 09/46] mtip32xx: Increase timeout for STANDBY IMMEDIATE command
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

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

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

    commit 670a641420a3d9586eebe7429dfeec4e7ed447aa upstream.

    Increased timeout for STANDBY IMMEDIATE command to 2 minutes.

    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/block/mtip32xx/mtip32xx.c | 66 ++++++++++++++++++++------------------
    1 file changed, 35 insertions(+), 31 deletions(-)

    --- a/drivers/block/mtip32xx/mtip32xx.c
    +++ b/drivers/block/mtip32xx/mtip32xx.c
    @@ -1493,6 +1493,37 @@ static inline void ata_swap_string(u16 *
    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
    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
    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
    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(unsi
    }
    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



    \
     
     \ /
      Last update: 2014-07-05 02:01    [W:6.194 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site