From patchwork Thu Jan 23 04:23:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346747 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 72D8217EF for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5181424125 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726099AbgAWEXz (ORCPT ); Wed, 22 Jan 2020 23:23:55 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:37317 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725989AbgAWEXy (ORCPT ); Wed, 22 Jan 2020 23:23:54 -0500 Received: by mail-pf1-f195.google.com with SMTP id p14so907822pfn.4 for ; Wed, 22 Jan 2020 20:23:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7o+BNm/IzRdivKrs0RtluJbnTOMycONXvD6+28zFVxg=; b=P7ryl+LJeLZRqgUOJBYvfIPCYXiXD+kWgwC2z3a6o+GrSYhwNSv3BpdklVT3za8ovJ W69I2SWb7kRMi5JOvf9t1hLpqTliVMG6BBynmWnfcAY37fCELbjCsPUpGu3+zccyvPt/ q1nSjycpXoDurY6zzB6ZFM41je2Tdz4IX7PwCbckmtgThb4c1e67P5iNlqmThsFiLcTm YIAQVvq0+L6wHfzt6eyvTR9Hkn6eyhWEht5VA7lYJqrGrX2WSC+dQ7LS97Hl1K0S0Dta TiH5Bm6BVo7pvMxsq/Vs6RLM0WNhKiZ2x5oVZPL/MpsbW9pms7QbT+QmS3UrwomWY5Zb 0Mhg== X-Gm-Message-State: APjAAAW2akyU20LKizeMYCsLc3bEREcV0o26Ta+l2SwxDZh5le3dff1X SvHzNlv+ENTEULPj27mJ6fk= X-Google-Smtp-Source: APXvYqzV75qjVpjo6BbZi2dp8dUY0LcGQOFNbDDjGMJwe7ETEVji/1TbJocvJ1YQrIVSIq4+WUhLKQ== X-Received: by 2002:a63:78c:: with SMTP id 134mr1803678pgh.279.1579753434121; Wed, 22 Jan 2020 20:23:54 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:23:53 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Himanshu Madhani , Martin Wilck , Roman Bolshakov , Quinn Tran , Daniel Wagner Subject: [PATCH v2 1/6] qla2xxx: Check locking assumptions at runtime in qla2x00_abort_srb() Date: Wed, 22 Jan 2020 20:23:40 -0800 Message-Id: <20200123042345.23886-2-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Document the locking assumptions this function relies on and also verify these locking assumptions at runtime. Acked-by: Himanshu Madhani Reviewed-by: Martin Wilck Reviewed-by: Roman Bolshakov Cc: Quinn Tran Cc: Daniel Wagner Signed-off-by: Bart Van Assche Reviewed-by: Daniel Wagner --- drivers/scsi/qla2xxx/qla_os.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index b520a980d1dc..79387ac8936f 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -1700,6 +1700,8 @@ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, bool ret_cmd; uint32_t ratov_j; + lockdep_assert_held(qp->qp_lock_ptr); + if (qla2x00_chip_is_down(vha)) { sp->done(sp, res); return; From patchwork Thu Jan 23 04:23:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346749 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9425E14B4 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7CBF824125 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726167AbgAWEX4 (ORCPT ); Wed, 22 Jan 2020 23:23:56 -0500 Received: from mail-pl1-f196.google.com ([209.85.214.196]:45091 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725989AbgAWEX4 (ORCPT ); Wed, 22 Jan 2020 23:23:56 -0500 Received: by mail-pl1-f196.google.com with SMTP id b22so766853pls.12 for ; Wed, 22 Jan 2020 20:23:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Lb5yyoS3EkSQCPU+sdt5CraGBd9WCJZ1QftjbtXZwxg=; b=PGV3u7zfhAtM1ANuQL3TW1wojmbSxfqmKWCHRgCVFOzCTtXqTR9Bhf035RyOzNixCS KC5PB9C5LPG4xmRIVkuEc+MrRSVVGYBDmqIZjbli8fzrlWH/YOvVLXVkj6Y10gwKgd7e Q0DdmHVY9Vc3CDE4myGdlpOiJXbur2G0LRbMTaUe14KgaxNTQ6ylrB1NIUkfAma+lzpp fq+GCVNuPnAO6VwMLZFTzSmdCsJZc81XSdcpyXtFST3lyxYfm7aqPsSLpUTHAvCCLBGq +6aIpl8lr2lZxFsmME0zSC23fVOD/tQM5THDI/5ZBKG+qdQX9XNo80rLen3Uw8kAfpjr lfSw== X-Gm-Message-State: APjAAAVwlc0v87RRn2RrhVedTzLUUFWFcD6pXr+4gszAaabhITuTLddC j+mKWkVjciyQ5OerKuGSgkM= X-Google-Smtp-Source: APXvYqxpvW7IktOv9iEowYjZxJ6SBXVP/nc+33SS0NbmHWHGRRiCqnL542VCt4I9OPmK2CJm4SkvVg== X-Received: by 2002:a17:902:9b93:: with SMTP id y19mr41503plp.89.1579753435525; Wed, 22 Jan 2020 20:23:55 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:23:54 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Himanshu Madhani , Roman Bolshakov , Quinn Tran , Martin Wilck , Daniel Wagner Subject: [PATCH v2 2/6] qla2xxx: Simplify the code for aborting SCSI commands Date: Wed, 22 Jan 2020 20:23:41 -0800 Message-Id: <20200123042345.23886-3-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Since the SCSI core does not reuse the tag of the SCSI command that is being aborted by .eh_abort() before .eh_abort() has finished it is not necessary to check from inside that callback whether or not the SCSI command has already completed. Instead, rely on the firmware to return an error code when attempting to abort a command that has already completed. Additionally, rely on the firmware to return an error code when attempting to abort an already aborted command. In qla2x00_abort_srb(), use blk_mq_request_started() instead of sp->completed and sp->aborted. This patch eliminates several race conditions triggered by the removed member variables. Acked-by: Himanshu Madhani Reviewed-by: Roman Bolshakov Cc: Quinn Tran Cc: Martin Wilck Cc: Daniel Wagner Signed-off-by: Bart Van Assche Reviewed-by: Daniel Wagner --- drivers/scsi/qla2xxx/qla_def.h | 3 --- drivers/scsi/qla2xxx/qla_isr.c | 5 ----- drivers/scsi/qla2xxx/qla_os.c | 27 ++++++++++++++------------- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index ed32e9715794..c5a067f45005 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -597,9 +597,6 @@ typedef struct srb { struct fc_port *fcport; struct scsi_qla_host *vha; unsigned int start_timer:1; - unsigned int abort:1; - unsigned int aborted:1; - unsigned int completed:1; uint32_t handle; uint16_t flags; diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index e7bad0bfffda..0c9bfe77ba8a 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -2504,11 +2504,6 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt) return; } - if (sp->abort) - sp->aborted = 1; - else - sp->completed = 1; - if (sp->cmd_type != TYPE_SRB) { req->outstanding_cmds[handle] = NULL; ql_dbg(ql_dbg_io, vha, 0x3015, diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 79387ac8936f..a34f27b2d602 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -1253,17 +1253,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd) return SUCCESS; spin_lock_irqsave(qpair->qp_lock_ptr, flags); - if (sp->completed) { - spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); - return SUCCESS; - } - - if (sp->abort || sp->aborted) { - spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); - return FAILED; - } - - sp->abort = 1; sp->comp = ∁ spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); @@ -1688,6 +1677,10 @@ qla2x00_loop_reset(scsi_qla_host_t *vha) return QLA_SUCCESS; } +/* + * The caller must ensure that no completion interrupts will happen + * while this function is in progress. + */ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, unsigned long *flags) __releases(qp->qp_lock_ptr) @@ -1696,6 +1689,7 @@ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, DECLARE_COMPLETION_ONSTACK(comp); scsi_qla_host_t *vha = qp->vha; struct qla_hw_data *ha = vha->hw; + struct scsi_cmnd *cmd = GET_CMD_SP(sp); int rval; bool ret_cmd; uint32_t ratov_j; @@ -1717,7 +1711,6 @@ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, } sp->comp = ∁ - sp->abort = 1; spin_unlock_irqrestore(qp->qp_lock_ptr, *flags); rval = ha->isp_ops->abort_command(sp); @@ -1741,13 +1734,17 @@ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, } spin_lock_irqsave(qp->qp_lock_ptr, *flags); - if (ret_cmd && (!sp->completed || !sp->aborted)) + if (ret_cmd && blk_mq_request_started(cmd->request)) sp->done(sp, res); } else { sp->done(sp, res); } } +/* + * The caller must ensure that no completion interrupts will happen + * while this function is in progress. + */ static void __qla2x00_abort_all_cmds(struct qla_qpair *qp, int res) { @@ -1794,6 +1791,10 @@ __qla2x00_abort_all_cmds(struct qla_qpair *qp, int res) spin_unlock_irqrestore(qp->qp_lock_ptr, flags); } +/* + * The caller must ensure that no completion interrupts will happen + * while this function is in progress. + */ void qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) { From patchwork Thu Jan 23 04:23:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346751 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B544C18B6 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9D9C724125 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726181AbgAWEX6 (ORCPT ); Wed, 22 Jan 2020 23:23:58 -0500 Received: from mail-pj1-f67.google.com ([209.85.216.67]:50179 "EHLO mail-pj1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725989AbgAWEX5 (ORCPT ); Wed, 22 Jan 2020 23:23:57 -0500 Received: by mail-pj1-f67.google.com with SMTP id r67so594709pjb.0 for ; Wed, 22 Jan 2020 20:23:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vP7CMCpbNU0C3WEyj/Qz7lS3jQEUgPukezd7sfuo0ds=; b=GeCnQdyDH6FmYQpBW2ZtcSEvUw2uhzDX0qJWE6Ogm7FixycIEzuHZoj4NTAZ54vn5x yg/PJQEAt01YXpIKiUDX4WsKq6bNIP/pZ7fA0cf/DdWcQ5gP2VMTLxrH1azfY8TIGZ8G iTjsQzLGiJwY/RfjzIn5XBysD67K3jeB7rf791lYMYuBnQ/IXGvgSce5feFDtw400qI5 mfMbfq6TT/H77Ihc6npnI5LwaI8+aXaUrRVyRJELR1n/NsOR6LlylAhIDOu4ZQBeP4KZ e+gx2IXE5Rc3esF/2nlyDsOTmoudHgzWTQXrwPngnLg/jP7Uys4O27yy+XaffwUFPoF5 DkXg== X-Gm-Message-State: APjAAAVjSN3rkibzV6QAvUV+Km4vpdDoIDwpazfUm0P7m3Vt5kpcvdIE L47JO8IVMZWeNNLvo7W/QWI= X-Google-Smtp-Source: APXvYqwkMH/PE6l3jeec1R15tMNJShIm6c8MbyXvKNvqveLUutgVlJGFUvTJUSNtcSKQs4ZPv72WgA== X-Received: by 2002:a17:902:a5c3:: with SMTP id t3mr14786101plq.145.1579753437093; Wed, 22 Jan 2020 20:23:57 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.23.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:23:56 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Quinn Tran , Martin Wilck , Daniel Wagner , Roman Bolshakov Subject: [PATCH v2 3/6] qla2xxx: Suppress endianness complaints in qla2x00_configure_local_loop() Date: Wed, 22 Jan 2020 20:23:42 -0800 Message-Id: <20200123042345.23886-4-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Instead of changing endianness in-place, write the data in CPU endian format in another buffer and copy that buffer back. This patch does not change any functionality but silences some sparse endianness warnings. Cc: Quinn Tran Cc: Martin Wilck Cc: Daniel Wagner Cc: Roman Bolshakov Signed-off-by: Bart Van Assche Reviewed-by: Daniel Wagner --- drivers/scsi/qla2xxx/qla_def.h | 2 +- drivers/scsi/qla2xxx/qla_init.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index c5a067f45005..b04d334933ef 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -414,7 +414,7 @@ struct els_logo_payload { struct els_plogi_payload { uint8_t opcode; uint8_t rsvd[3]; - uint8_t data[112]; + __be32 data[112 / 4]; }; struct ct_arg { diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 9e6b56527b25..880f2be062a9 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -5060,7 +5060,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha) if (N2N_TOPO(ha)) { if (test_and_clear_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags)) { /* borrowing */ - u32 *bp, i, sz; + u32 *bp, sz; memset(ha->init_cb, 0, ha->init_cb_size); sz = min_t(int, sizeof(struct els_plogi_payload), @@ -5068,13 +5068,12 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha) rval = qla24xx_get_port_login_templ(vha, ha->init_cb_dma, (void *)ha->init_cb, sz); if (rval == QLA_SUCCESS) { + __be32 *q = &ha->plogi_els_payld.data[0]; + bp = (uint32_t *)ha->init_cb; - for (i = 0; i < sz/4 ; i++, bp++) - *bp = cpu_to_be32(*bp); + cpu_to_be32_array(q, bp, sz / 4); - memcpy(&ha->plogi_els_payld.data, - (void *)ha->init_cb, - sizeof(ha->plogi_els_payld.data)); + memcpy(bp, q, sizeof(ha->plogi_els_payld.data)); } else { ql_dbg(ql_dbg_init, vha, 0x00d1, "PLOGI ELS param read fail.\n"); From patchwork Thu Jan 23 04:23:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346753 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D7DC7184C for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BF93B24125 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726204AbgAWEX7 (ORCPT ); Wed, 22 Jan 2020 23:23:59 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:32852 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726191AbgAWEX7 (ORCPT ); Wed, 22 Jan 2020 23:23:59 -0500 Received: by mail-pl1-f195.google.com with SMTP id ay11so797505plb.0 for ; Wed, 22 Jan 2020 20:23:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9e5hMIV71CaH6APz7IMhqhksRnmdpm3TpSukMvY5/fc=; b=rYkuXLmj+/QP9sUf2FzknM/ns8hlcYsT+9gDT3EkjzHfpo0Y20hAOfW9JIKb2FeySd jxGz4/JKQwFWdE9pp3py/R4o7h5bMF9HqvR2vb+ejZc/7jjS60nvNE2PN3yKVgST5xrB honipp91E40gtgs6e/hbh4KrxiITWgdygm1EAb4jF3eF4m2UDH4Y0csFO6uHpQoGB/cB q5YD193n+nt+IDscgvw9pSRFFAwtrtjUwGfOT/uwmZbpRWe2mRuQLo9PafktqOrDjP7t KiTQTW80xvMr74zpMpNHDh/46oq/LbL7K2K4y5QuiF+1TDM8MBkmDoNS1P9lodVtKnoj GGyg== X-Gm-Message-State: APjAAAXZfADHtwMS4e2iq5ufv4wvKt+yvQe6O988oC/TqAFMUlBgMFov UjgG2x1hyfqzuCsCqQoOqJQ= X-Google-Smtp-Source: APXvYqzHtiiU6eUB+lP2InSP5gjPE0FbN+ZX5CFoIwOe0XvUtwrm2C8SoOvZNunBN+cyfa5bLTjKhQ== X-Received: by 2002:a17:902:7883:: with SMTP id q3mr14138223pll.113.1579753438507; Wed, 22 Jan 2020 20:23:58 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.23.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:23:57 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Quinn Tran , Martin Wilck , Daniel Wagner , Roman Bolshakov Subject: [PATCH v2 4/6] qla2xxx: Fix sparse warnings triggered by the PCI state checking code Date: Wed, 22 Jan 2020 20:23:43 -0800 Message-Id: <20200123042345.23886-5-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch fixes the following sparse warnings: drivers/scsi/qla2xxx/qla_mbx.c:120:21: warning: restricted pci_channel_state_t degrades to integer drivers/scsi/qla2xxx/qla_mbx.c:120:37: warning: restricted pci_channel_state_t degrades to integer From include/linux/pci.h: enum pci_channel_state { /* I/O channel is in normal state */ pci_channel_io_normal = (__force pci_channel_state_t) 1, /* I/O to channel is blocked */ pci_channel_io_frozen = (__force pci_channel_state_t) 2, /* PCI card is dead */ pci_channel_io_perm_failure = (__force pci_channel_state_t) 3, }; Cc: Quinn Tran Cc: Martin Wilck Cc: Daniel Wagner Cc: Roman Bolshakov Signed-off-by: Bart Van Assche Reviewed-by: Daniel Wagner Reviewed-by: Roman Bolshakov --- drivers/scsi/qla2xxx/qla_mbx.c | 5 ++--- drivers/scsi/qla2xxx/qla_mr.c | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 9e09964f5c0e..ff945d35ba8e 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -117,10 +117,9 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp) ql_dbg(ql_dbg_mbx, vha, 0x1000, "Entered %s.\n", __func__); - if (ha->pdev->error_state > pci_channel_io_frozen) { + if (ha->pdev->error_state == pci_channel_io_perm_failure) { ql_log(ql_log_warn, vha, 0x1001, - "error_state is greater than pci_channel_io_frozen, " - "exiting.\n"); + "PCI channel failed permanently, exiting.\n"); return QLA_FUNCTION_TIMEOUT; } diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c index bad043c40622..33161af2c16a 100644 --- a/drivers/scsi/qla2xxx/qla_mr.c +++ b/drivers/scsi/qla2xxx/qla_mr.c @@ -53,10 +53,9 @@ qlafx00_mailbox_command(scsi_qla_host_t *vha, struct mbx_cmd_32 *mcp) struct qla_hw_data *ha = vha->hw; scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev); - if (ha->pdev->error_state > pci_channel_io_frozen) { + if (ha->pdev->error_state == pci_channel_io_perm_failure) { ql_log(ql_log_warn, vha, 0x115c, - "error_state is greater than pci_channel_io_frozen, " - "exiting.\n"); + "PCI channel failed permanently, exiting.\n"); return QLA_FUNCTION_TIMEOUT; } From patchwork Thu Jan 23 04:23:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346755 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0F1961902 for ; Thu, 23 Jan 2020 04:24:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E1FAD24125 for ; Thu, 23 Jan 2020 04:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726205AbgAWEYA (ORCPT ); Wed, 22 Jan 2020 23:24:00 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:44054 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725989AbgAWEYA (ORCPT ); Wed, 22 Jan 2020 23:24:00 -0500 Received: by mail-pg1-f193.google.com with SMTP id x7so684311pgl.11 for ; Wed, 22 Jan 2020 20:24:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q67q+ZIimFokwlwPHxPZ1RkWcY1q40l9vcSwtRqU7yE=; b=nUHDuWr48Taet+XHvE+e1GoErfkE+KInwBdT3uXN5Pd/LcdA/JD/fCz6LM2rrJKEwl zUH+TntyI919ZpbVDgXug7ulQmVsZQiCyIEbJn6zb355GXD2yre2sYV/8G/7MaCHgJqD SgidvaPeELdWCI3k5TVCqRVSbxFpY7dYa8d3GVLcis09+OBM+WEORTkVRpmvxrSJF04e D8E30UQ+Fqt4qtiIqSzYLkcMGs8ZJEKngYFHrp0kWkqPCN1e4AwNbSNcaGsL3r5H5HSA QKuRlbIahy99EE9/81O2RO6imV0K2z7+XlTs1FbcJtaM+4ZTPG5F1PniGnvQrmsLHpJE HFjA== X-Gm-Message-State: APjAAAU1ERFrOwWOzni0qqnBYjUdO8he7g1Jutx0yJrc0Wi9xeCFWWlk qHCCxzrl+wD8Fco6z+RQTVHPnfLr X-Google-Smtp-Source: APXvYqz7fExpE3TBFvSY0W/RHKtAn0o1ygz8asaAeMbgwVmWvgFIWKewXmGntkXtaf0Z+dyeJc3C/w== X-Received: by 2002:a62:7681:: with SMTP id r123mr2541617pfc.169.1579753439979; Wed, 22 Jan 2020 20:23:59 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.23.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:23:59 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Quinn Tran , Martin Wilck , Daniel Wagner , Roman Bolshakov Subject: [PATCH v2 5/6] qla2xxx: Convert MAKE_HANDLE() from a define into an inline function Date: Wed, 22 Jan 2020 20:23:44 -0800 Message-Id: <20200123042345.23886-6-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch allows sparse to verify the endianness of the arguments passed to MAKE_HANDLE(). Cc: Quinn Tran Cc: Martin Wilck Cc: Daniel Wagner Cc: Roman Bolshakov Signed-off-by: Bart Van Assche --- drivers/scsi/qla2xxx/qla_def.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index b04d334933ef..968f19995063 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -119,7 +119,10 @@ typedef struct { #define LSD(x) ((uint32_t)((uint64_t)(x))) #define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16)) -#define MAKE_HANDLE(x, y) ((uint32_t)((((uint32_t)(x)) << 16) | (uint32_t)(y))) +static inline uint32_t MAKE_HANDLE(uint16_t x, uint16_t y) +{ + return ((uint32_t)x << 16) | y; +} /* * I/O register From patchwork Thu Jan 23 04:23:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11346757 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CF9E114B4 for ; Thu, 23 Jan 2020 04:24:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B6F3324676 for ; Thu, 23 Jan 2020 04:24:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726227AbgAWEYC (ORCPT ); Wed, 22 Jan 2020 23:24:02 -0500 Received: from mail-pg1-f195.google.com ([209.85.215.195]:36437 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725989AbgAWEYC (ORCPT ); Wed, 22 Jan 2020 23:24:02 -0500 Received: by mail-pg1-f195.google.com with SMTP id k3so704631pgc.3 for ; Wed, 22 Jan 2020 20:24:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gHUpc4aIhYZMfKp3dMo0ZA46Tg26g1TgLcTwggGP2GE=; b=CEpZ5b3nWG9RmSmAW1TKPAcXlvarxSkR4yFpBy07fwethxzfnM8OFHuZgKUvZMQ8gx VgMRHxPYrR8KL6urmcO/8R1lYoehVW2mDbnxzDirWEoIHOaUO0eThXw0RU7Rs8kfijfY fqziNn7aOiVShv+RSQqQmcOQ/G65N/PqZyDYoBtnDp1YgbQl+meaPhhj7a87HvUxLVEG G3TtP2cOwcyCxRH5Vj6WhjykZwiYPDE8ym9iemKeMwt2c9esXgfi8otaWybAi22GdSTr YpaUfWIh9gxhxoyFLzYut5289uNkK1E2nboL3Gzo381ajbs+7vFoMBW7DY/jE56pyJyS 8lTg== X-Gm-Message-State: APjAAAU6O8QziSBz6Tod2MmlKtgIQUcQAji5ZZerl9drWJqN/SPWV09I FM8YZF8Juav9mzr2BGT4pVU= X-Google-Smtp-Source: APXvYqzaXZjLUt1h6bFULom9d/aEBhE3LqvutIhWfJuWfRASzsmv7H2qxIygNV3OG0JHlteSkbj9sw== X-Received: by 2002:aa7:8115:: with SMTP id b21mr5864604pfi.80.1579753441431; Wed, 22 Jan 2020 20:24:01 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:d957:4568:237a:bc62]) by smtp.gmail.com with ESMTPSA id p16sm492879pfq.184.2020.01.22.20.24.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 20:24:00 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Quinn Tran , Martin Wilck , Daniel Wagner , Roman Bolshakov Subject: [PATCH v2 6/6] qla2xxx: Fix the endianness annotations for the port attribute max_frame_size member Date: Wed, 22 Jan 2020 20:23:45 -0800 Message-Id: <20200123042345.23886-7-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200123042345.23886-1-bvanassche@acm.org> References: <20200123042345.23886-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Make sure that sparse doesn't complain about the statements that load or store the port attribute max_frame_size member. The port attribute data structures represent FC protocol data and hence use big endian format. This patch only changes the meaning of two ql_dbg() statements. Cc: Quinn Tran Cc: Martin Wilck Cc: Daniel Wagner Cc: Roman Bolshakov Signed-off-by: Bart Van Assche Reviewed-by: Daniel Wagner --- drivers/scsi/qla2xxx/qla_def.h | 4 ++-- drivers/scsi/qla2xxx/qla_gs.c | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 968f19995063..5c6bae116b58 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2741,7 +2741,7 @@ struct ct_fdmiv2_port_attr { uint8_t fc4_types[32]; uint32_t sup_speed; uint32_t cur_speed; - uint32_t max_frame_size; + __be32 max_frame_size; uint8_t os_dev_name[32]; uint8_t host_name[256]; uint8_t node_name[WWN_SIZE]; @@ -2772,7 +2772,7 @@ struct ct_fdmi_port_attr { uint8_t fc4_types[32]; uint32_t sup_speed; uint32_t cur_speed; - uint32_t max_frame_size; + __be32 max_frame_size; uint8_t os_dev_name[32]; uint8_t host_name[256]; } a; diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index aaa4a5bbf2ff..594b366db0ef 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c @@ -1848,14 +1848,13 @@ qla2x00_fdmi_rpa(scsi_qla_host_t *vha) eiter = entries + size; eiter->type = cpu_to_be16(FDMI_PORT_MAX_FRAME_SIZE); eiter->len = cpu_to_be16(4 + 4); - eiter->a.max_frame_size = IS_FWI2_CAPABLE(ha) ? + eiter->a.max_frame_size = cpu_to_be32(IS_FWI2_CAPABLE(ha) ? le16_to_cpu(icb24->frame_payload_size) : - le16_to_cpu(ha->init_cb->frame_payload_size); - eiter->a.max_frame_size = cpu_to_be32(eiter->a.max_frame_size); + le16_to_cpu(ha->init_cb->frame_payload_size)); size += 4 + 4; ql_dbg(ql_dbg_disc, vha, 0x203c, - "Max_Frame_Size=%x.\n", eiter->a.max_frame_size); + "Max_Frame_Size=%x.\n", be32_to_cpu(eiter->a.max_frame_size)); /* OS device name. */ eiter = entries + size; @@ -2419,14 +2418,13 @@ qla2x00_fdmiv2_rpa(scsi_qla_host_t *vha) eiter = entries + size; eiter->type = cpu_to_be16(FDMI_PORT_MAX_FRAME_SIZE); eiter->len = cpu_to_be16(4 + 4); - eiter->a.max_frame_size = IS_FWI2_CAPABLE(ha) ? + eiter->a.max_frame_size = cpu_to_be32(IS_FWI2_CAPABLE(ha) ? le16_to_cpu(icb24->frame_payload_size) : - le16_to_cpu(ha->init_cb->frame_payload_size); - eiter->a.max_frame_size = cpu_to_be32(eiter->a.max_frame_size); + le16_to_cpu(ha->init_cb->frame_payload_size)); size += 4 + 4; ql_dbg(ql_dbg_disc, vha, 0x20bc, - "Max_Frame_Size = %x.\n", eiter->a.max_frame_size); + "Max_Frame_Size = %x.\n", be32_to_cpu(eiter->a.max_frame_size)); /* OS device name. */ eiter = entries + size;