Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1958088pxu; Sun, 13 Dec 2020 08:49:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJwHWAJMyWS4zTNFVZMOHb6FoeQoSvmgtuTqTep5SUkM99MyXhIWS/i0Vwn99IEKgox3h2vy X-Received: by 2002:aa7:c058:: with SMTP id k24mr21276172edo.263.1607878156135; Sun, 13 Dec 2020 08:49:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607878156; cv=none; d=google.com; s=arc-20160816; b=NznffX/cV+xFP2y3zBSE3jDGIIkw3aH8ebmcTLRG45uVDbTL8gY1N1pkK4Lm7YkEvi PosaDaGhsR3+4pcuNv2XORdSsdZGQwislDzLD4E/ia6HLtQWxTP8BRVBfSWeMZ6s6o4n LA8m81Dl9ZwRIZnFQ54XGIJEvafzTNLbiR9P/FcsKyq+Noou04tf0KHZaGHwd/eJ5Oj2 6dTn6iwi+ykmyc7Zq4iTs1xy4W90GbLWb3W0Sec0DjqGHFQl/PTSzMVaIzXk0Umu1jkT DebcAx17jbivk9uSd1gy1YoELzneQehVZPPv0PzlAVX7XkrPfbsfGxZoVVduEOtm9+Pp ehsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:date:cc:to:from:subject:message-id:dkim-signature :dkim-signature; bh=xS7a01I5lz26bVsxh1J5Vr08Ar9u2sFDhy9Tt9bGoW0=; b=GlA74qJLS/EWPKu1+8o0kxkPUGAvnpFN6fjO9B9t7VJrg0NCivJLgqb1gU3sUi53Hu 0RyFuPVGBKBMstSnVGjLqLlaYpFt34C4hIbrEuwXCUs2msXFVKTxIHeiN7QiJ/D/cIxr jQmZSv2Dy4i+Ea1MU4ZOaw2zwAP+zQDX4EfAzfGR2CmkoKlUz7zR6RdYR9KXgTk6OCUt pj9GjegD0yc6oJvU15Td2ZPLYqOqukI/16EZgG673uoywAP3kKgGBb1wGT++y3LWsTv+ b/2caGDSZ/cqhNHtQl55kPelFFRUQlDRg4lrCbz8vxpPzfZ1ZoN1kxuGy72mJnYSuGkr O2KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=rAN79vKo; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=rAN79vKo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rv27si7854827ejb.720.2020.12.13.08.48.52; Sun, 13 Dec 2020 08:49:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=rAN79vKo; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=rAN79vKo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2407762AbgLLTdg (ORCPT + 99 others); Sat, 12 Dec 2020 14:33:36 -0500 Received: from bedivere.hansenpartnership.com ([96.44.175.130]:37496 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404498AbgLLTdg (ORCPT ); Sat, 12 Dec 2020 14:33:36 -0500 Received: from localhost (localhost [127.0.0.1]) by bedivere.hansenpartnership.com (Postfix) with ESMTP id 2DE9C1280862; Sat, 12 Dec 2020 11:32:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hansenpartnership.com; s=20151216; t=1607801576; bh=ySLxiaULiztpp+29NfcC4MnDIuxzi3G/V8W5xOLkf2A=; h=Message-ID:Subject:From:To:Date:From; b=rAN79vKowMb1Ut1iHYA03ED/PNk3iK4xHVYVhntJG853cPTPTyOdOjqbV6g+uOTxl 0YXUCQuYZIJDv4/x0VCyAAk9iacydBsYwVBJ8DQr1aHWplfXHaPhONYce0cwi0bwM1 JSR6exo38dOSyllaqkHXkwlGsoCor1RtuzPHhlNw= Received: from bedivere.hansenpartnership.com ([127.0.0.1]) by localhost (bedivere.hansenpartnership.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HbFaAmR6yZTN; Sat, 12 Dec 2020 11:32:56 -0800 (PST) Received: from jarvis.int.hansenpartnership.com (unknown [IPv6:2601:600:8280:66d1::527]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bedivere.hansenpartnership.com (Postfix) with ESMTPSA id C25671280817; Sat, 12 Dec 2020 11:32:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hansenpartnership.com; s=20151216; t=1607801576; bh=ySLxiaULiztpp+29NfcC4MnDIuxzi3G/V8W5xOLkf2A=; h=Message-ID:Subject:From:To:Date:From; b=rAN79vKowMb1Ut1iHYA03ED/PNk3iK4xHVYVhntJG853cPTPTyOdOjqbV6g+uOTxl 0YXUCQuYZIJDv4/x0VCyAAk9iacydBsYwVBJ8DQr1aHWplfXHaPhONYce0cwi0bwM1 JSR6exo38dOSyllaqkHXkwlGsoCor1RtuzPHhlNw= Message-ID: Subject: [GIT PULL] SCSI fixes for 5.10-rc7 From: James Bottomley To: Andrew Morton , Linus Torvalds Cc: linux-scsi , linux-kernel Date: Sat, 12 Dec 2020 11:32:54 -0800 Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.4 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Five small fixes: four in drivers: hisi_sas: fix internal queue timeout, be2iscsi: revert a prior fix causing problems, bnx2i: add missing dependency, storvsc: late arriving revert of a problem fix, and one in the core. The core one is a minor change to stop paying attention to the busy count when returning out of resources because there's a race window where the queue might not restart due to missing returning I/O. The patch is available here: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes The short changelog is: Andrea Parri (Microsoft) (1): Revert "scsi: storvsc: Validate length of incoming packet in storvsc_on_channel_callback()" Dan Carpenter (1): scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()" Ming Lei (1): scsi: core: Fix race between handling STS_RESOURCE and completion Randy Dunlap (1): scsi: bnx2i: Requires MMU Xiang Chen (1): scsi: hisi_sas: Select a suitable queue for internal I/Os And the diffstat: drivers/scsi/be2iscsi/be_main.c | 4 ++-- drivers/scsi/bnx2i/Kconfig | 1 + drivers/scsi/hisi_sas/hisi_sas_main.c | 6 ++++++ drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 5 +++++ drivers/scsi/scsi_lib.c | 3 +-- drivers/scsi/storvsc_drv.c | 5 ----- 6 files changed, 15 insertions(+), 9 deletions(-) With full diff below. James --- diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index 202ba925c494..5c3513a4b450 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c @@ -3020,7 +3020,6 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } - mem->dma = paddr; mem->va = eq_vaddress; ret = be_fill_queue(eq, phba->params.num_eq_entries, sizeof(struct be_eq_entry), eq_vaddress); @@ -3030,6 +3029,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } + mem->dma = paddr; ret = beiscsi_cmd_eq_create(&phba->ctrl, eq, BEISCSI_EQ_DELAY_DEF); if (ret) { @@ -3086,7 +3086,6 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } - mem->dma = paddr; ret = be_fill_queue(cq, phba->params.num_cq_entries, sizeof(struct sol_cqe), cq_vaddress); if (ret) { @@ -3096,6 +3095,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } + mem->dma = paddr; ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false, false, 0); if (ret) { diff --git a/drivers/scsi/bnx2i/Kconfig b/drivers/scsi/bnx2i/Kconfig index 75ace2302fed..0cc06c2ce0b8 100644 --- a/drivers/scsi/bnx2i/Kconfig +++ b/drivers/scsi/bnx2i/Kconfig @@ -4,6 +4,7 @@ config SCSI_BNX2_ISCSI depends on NET depends on PCI depends on (IPV6 || IPV6=n) + depends on MMU select SCSI_ISCSI_ATTRS select NETDEVICES select ETHERNET diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c index c8dd8588f800..274ccf18ce2d 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_main.c +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c @@ -452,6 +452,12 @@ static int hisi_sas_task_prep(struct sas_task *task, blk_tag = blk_mq_unique_tag(scmd->request); dq_index = blk_mq_unique_tag_to_hwq(blk_tag); *dq_pointer = dq = &hisi_hba->dq[dq_index]; + } else if (hisi_hba->shost->nr_hw_queues) { + struct Scsi_Host *shost = hisi_hba->shost; + struct blk_mq_queue_map *qmap = &shost->tag_set.map[HCTX_TYPE_DEFAULT]; + int queue = qmap->mq_map[raw_smp_processor_id()]; + + *dq_pointer = dq = &hisi_hba->dq[queue]; } else { *dq_pointer = dq = sas_dev->dq; } diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c index 7133ca859b5e..960de375ce69 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c @@ -2452,6 +2452,11 @@ static int interrupt_init_v3_hw(struct hisi_hba *hisi_hba) rc = -ENOENT; goto free_irq_vectors; } + cq->irq_mask = pci_irq_get_affinity(pdev, i + BASE_VECTORS_V3_HW); + if (!cq->irq_mask) { + dev_err(dev, "could not get cq%d irq affinity!\n", i); + return -ENOENT; + } } return 0; diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 60c7a7d74852..03c6d0620bfd 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1703,8 +1703,7 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx, break; case BLK_STS_RESOURCE: case BLK_STS_ZONE_RESOURCE: - if (atomic_read(&sdev->device_busy) || - scsi_device_blocked(sdev)) + if (scsi_device_blocked(sdev)) ret = BLK_STS_DEV_RESOURCE; break; default: diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index 99c8ff81de74..ded00a89bfc4 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -1246,11 +1246,6 @@ static void storvsc_on_channel_callback(void *context) request = (struct storvsc_cmd_request *) ((unsigned long)desc->trans_id); - if (hv_pkt_datalen(desc) < sizeof(struct vstor_packet) - vmscsi_size_delta) { - dev_err(&device->device, "Invalid packet len\n"); - continue; - } - if (request == &stor_device->init_request || request == &stor_device->reset_request) { memcpy(&request->vstor_packet, packet,