public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Chunguang Xu <chunguang.xu@shopee.com>,
	Sagi Grimberg <sagi@grimberg.me>,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Christoph Hellwig <hch@lst.de>, Keith Busch <kbusch@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-nvme@lists.infradead.org
Subject: [PATCH AUTOSEL 6.9 30/44] nvme-fabrics: use reserved tag for reg read/write command
Date: Tue, 18 Jun 2024 08:35:11 -0400	[thread overview]
Message-ID: <20240618123611.3301370-30-sashal@kernel.org> (raw)
In-Reply-To: <20240618123611.3301370-1-sashal@kernel.org>

From: Chunguang Xu <chunguang.xu@shopee.com>

[ Upstream commit 7dc3bfcb4c9cc58970fff6aaa48172cb224d85aa ]

In some scenarios, if too many commands are issued by nvme command in
the same time by user tasks, this may exhaust all tags of admin_q. If
a reset (nvme reset or IO timeout) occurs before these commands finish,
reconnect routine may fail to update nvme regs due to insufficient tags,
which will cause kernel hang forever. In order to workaround this issue,
maybe we can let reg_read32()/reg_read64()/reg_write32() use reserved
tags. This maybe safe for nvmf:

1. For the disable ctrl path,  we will not issue connect command
2. For the enable ctrl / fw activate path, since connect and reg_xx()
   are called serially.

So the reserved tags may still be enough while reg_xx() use reserved tags.

Signed-off-by: Chunguang Xu <chunguang.xu@shopee.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/host/fabrics.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 1f0ea1f32d22f..f6416f8553f03 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -180,7 +180,7 @@ int nvmf_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val)
 	cmd.prop_get.offset = cpu_to_le32(off);
 
 	ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, &res, NULL, 0,
-			NVME_QID_ANY, 0);
+			NVME_QID_ANY, NVME_SUBMIT_RESERVED);
 
 	if (ret >= 0)
 		*val = le64_to_cpu(res.u64);
@@ -226,7 +226,7 @@ int nvmf_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val)
 	cmd.prop_get.offset = cpu_to_le32(off);
 
 	ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, &res, NULL, 0,
-			NVME_QID_ANY, 0);
+			NVME_QID_ANY, NVME_SUBMIT_RESERVED);
 
 	if (ret >= 0)
 		*val = le64_to_cpu(res.u64);
@@ -271,7 +271,7 @@ int nvmf_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val)
 	cmd.prop_set.value = cpu_to_le64(val);
 
 	ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, NULL, NULL, 0,
-			NVME_QID_ANY, 0);
+			NVME_QID_ANY, NVME_SUBMIT_RESERVED);
 	if (unlikely(ret))
 		dev_err(ctrl->device,
 			"Property Set error: %d, offset %#x\n",
-- 
2.43.0


  parent reply	other threads:[~2024-06-18 12:37 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-18 12:34 [PATCH AUTOSEL 6.9 01/44] scsi: core: alua: I/O errors for ALUA state transitions Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 02/44] scsi: sr: Fix unintentional arithmetic wraparound Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 03/44] scsi: qedf: Don't process stag work during unload and recovery Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 04/44] scsi: qedf: Wait for stag work during unload Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 05/44] scsi: qedf: Set qed_slowpath_params to zero before use Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 06/44] efi/libstub: zboot.lds: Discard .discard sections Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 07/44] efi: pstore: Return proper errors on UEFI failures Sasha Levin
2024-06-18 12:40   ` Ard Biesheuvel
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 08/44] ACPI: EC: Abort address space access upon error Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 09/44] ACPI: EC: Avoid returning AE_OK on errors in address space handler Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 10/44] btrfs: ensure fast fsync waits for ordered extents after a write failure Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 11/44] tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 12/44] PNP: Hide pnp_bus_type from the non-PNP code Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 13/44] ACPI: AC: Properly notify powermanagement core about changes Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 14/44] wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 15/44] wifi: mac80211: apply mcast rate only if interface is up Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 16/44] wifi: mac80211: handle tasklet frames before stopping Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 17/44] wifi: cfg80211: fix 6 GHz scan request building Sasha Levin
2024-06-18 12:34 ` [PATCH AUTOSEL 6.9 18/44] wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 19/44] wifi: iwlwifi: mvm: remove stale STA link data during restart Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 20/44] wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 21/44] wifi: iwlwifi: mvm: handle BA session teardown in RF-kill Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 22/44] wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 23/44] wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 24/44] wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan() Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 25/44] selftests: cachestat: Fix build warnings on ppc64 Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 26/44] selftests/openat2: " Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 27/44] selftests/overlayfs: Fix build error " Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 28/44] selftests/futex: pass _GNU_SOURCE without a value to the compiler Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 29/44] of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw() Sasha Levin
2024-06-18 12:35 ` Sasha Levin [this message]
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 31/44] LoongArch: Fix GMAC's phy-mode definitions in dts Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 32/44] Input: silead - Always support 10 fingers Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 33/44] platform/x86/amd/hsmp: Check HSMP support on AMD family of processors Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 34/44] net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input() Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 35/44] ila: block BH in ila_output() Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 36/44] io_uring: fix possible deadlock in io_register_iowq_max_workers() Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 37/44] arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 38/44] drm/amdgpu/pptable: Fix UBSAN array-index-out-of-bounds Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 39/44] null_blk: fix validation of block size Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 40/44] kconfig: gconf: give a proper initial state to the Save button Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 41/44] kconfig: remove wrong expr_trans_bool() Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 42/44] input: Add event code for accessibility key Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 43/44] input: Add support for "Do Not Disturb" Sasha Levin
2024-06-18 12:35 ` [PATCH AUTOSEL 6.9 44/44] HID: Ignore battery for ELAN touchscreens 2F2C and 4116 Sasha Levin
  -- strict thread matches above, loose matches on Subject: below --
2024-06-17 13:19 [PATCH AUTOSEL 6.9 01/44] scsi: core: alua: I/O errors for ALUA state transitions Sasha Levin
2024-06-17 13:19 ` [PATCH AUTOSEL 6.9 30/44] nvme-fabrics: use reserved tag for reg read/write command Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240618123611.3301370-30-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=chunguang.xu@shopee.com \
    --cc=hch@lst.de \
    --cc=kbusch@kernel.org \
    --cc=kch@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=sagi@grimberg.me \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox