lkml.org 
[lkml]   [2018]   [Apr]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 69/72] Revert "mtip32xx: use runtime tag to initialize command header"
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    This reverts commit 9bf9e352ed51d4cdee107675609ba12b42d00c5b which was
    commit a4e84aae8139aca9fbfbced1f45c51ca81b57488 upstream.

    Ben writes:
    MQ IO schedulers were introduced in 4.11, so this shouldn't be
    needed in older branches. It also causes a performance
    regression (fixed upstream). Please revert this for 4.4 and
    4.9.

    So let's revert it!

    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Jens Axboe <axboe@fb.com>
    Cc: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/block/mtip32xx/mtip32xx.c | 36 ++++++++++++------------------------
    1 file changed, 12 insertions(+), 24 deletions(-)

    --- a/drivers/block/mtip32xx/mtip32xx.c
    +++ b/drivers/block/mtip32xx/mtip32xx.c
    @@ -169,25 +169,6 @@ static bool mtip_check_surprise_removal(
    return false; /* device present */
    }

    -/* we have to use runtime tag to setup command header */
    -static void mtip_init_cmd_header(struct request *rq)
    -{
    - struct driver_data *dd = rq->q->queuedata;
    - struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq);
    - u32 host_cap_64 = readl(dd->mmio + HOST_CAP) & HOST_CAP_64;
    -
    - /* Point the command headers at the command tables. */
    - cmd->command_header = dd->port->command_list +
    - (sizeof(struct mtip_cmd_hdr) * rq->tag);
    - cmd->command_header_dma = dd->port->command_list_dma +
    - (sizeof(struct mtip_cmd_hdr) * rq->tag);
    -
    - if (host_cap_64)
    - cmd->command_header->ctbau = __force_bit2int cpu_to_le32((cmd->command_dma >> 16) >> 16);
    -
    - cmd->command_header->ctba = __force_bit2int cpu_to_le32(cmd->command_dma & 0xFFFFFFFF);
    -}
    -
    static struct mtip_cmd *mtip_get_int_command(struct driver_data *dd)
    {
    struct request *rq;
    @@ -199,9 +180,6 @@ static struct mtip_cmd *mtip_get_int_com
    if (IS_ERR(rq))
    return NULL;

    - /* Internal cmd isn't submitted via .queue_rq */
    - mtip_init_cmd_header(rq);
    -
    return blk_mq_rq_to_pdu(rq);
    }

    @@ -3840,8 +3818,6 @@ static int mtip_queue_rq(struct blk_mq_h
    struct request *rq = bd->rq;
    int ret;

    - mtip_init_cmd_header(rq);
    -
    if (unlikely(mtip_check_unal_depth(hctx, rq)))
    return BLK_MQ_RQ_QUEUE_BUSY;

    @@ -3873,6 +3849,7 @@ static int mtip_init_cmd(void *data, str
    {
    struct driver_data *dd = data;
    struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq);
    + u32 host_cap_64 = readl(dd->mmio + HOST_CAP) & HOST_CAP_64;

    /*
    * For flush requests, request_idx starts at the end of the
    @@ -3889,6 +3866,17 @@ static int mtip_init_cmd(void *data, str

    memset(cmd->command, 0, CMD_DMA_ALLOC_SZ);

    + /* Point the command headers at the command tables. */
    + cmd->command_header = dd->port->command_list +
    + (sizeof(struct mtip_cmd_hdr) * request_idx);
    + cmd->command_header_dma = dd->port->command_list_dma +
    + (sizeof(struct mtip_cmd_hdr) * request_idx);
    +
    + if (host_cap_64)
    + cmd->command_header->ctbau = __force_bit2int cpu_to_le32((cmd->command_dma >> 16) >> 16);
    +
    + cmd->command_header->ctba = __force_bit2int cpu_to_le32(cmd->command_dma & 0xFFFFFFFF);
    +
    sg_init_table(cmd->sg, MTIP_MAX_SG);
    return 0;
    }

    \
     
     \ /
      Last update: 2018-04-06 16:56    [W:2.609 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site