]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme: Print capabilities changes just once
authorBreno Leitao <leitao@debian.org>
Thu, 15 Jun 2023 09:49:03 +0000 (02:49 -0700)
committerKeith Busch <kbusch@kernel.org>
Wed, 21 Jun 2023 16:40:05 +0000 (09:40 -0700)
This current dev_info() could be very verbose and being printed very
frequently depending on some userspace application sending some specific
commands.

Just print this message once and skip it until the controller resets.
Use a controller flag (NVME_CTRL_DIRTY_CAPABILITY) to track if the
capability needs a reset.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/core.c
drivers/nvme/host/nvme.h

index 76e8f8b4098e5840a8bc595b1f027b814f6ad0fb..4b7f9edab5e84d25ba33c3ea2b3a0d269877effa 100644 (file)
@@ -1125,8 +1125,11 @@ void nvme_passthru_end(struct nvme_ctrl *ctrl, u32 effects,
                mutex_unlock(&ctrl->scan_lock);
        }
        if (effects & NVME_CMD_EFFECTS_CCC) {
-               dev_info(ctrl->device,
+               if (!test_and_set_bit(NVME_CTRL_DIRTY_CAPABILITY,
+                                     &ctrl->flags)) {
+                       dev_info(ctrl->device,
 "controller capabilities changed, reset may be required to take effect.\n");
+               }
        }
        if (effects & (NVME_CMD_EFFECTS_NIC | NVME_CMD_EFFECTS_NCC)) {
                nvme_queue_scan(ctrl);
@@ -3280,6 +3283,7 @@ int nvme_init_ctrl_finish(struct nvme_ctrl *ctrl, bool was_suspended)
                        return ret;
        }
 
+       clear_bit(NVME_CTRL_DIRTY_CAPABILITY, &ctrl->flags);
        ctrl->identified = true;
 
        return 0;
index 78308f15e090f2e761ccd3abecddb60bb3faf634..f3182134487ac8487fbeaad35c5c56ed23a3d02a 100644 (file)
@@ -243,6 +243,7 @@ enum nvme_ctrl_flags {
        NVME_CTRL_STARTED_ONCE          = 2,
        NVME_CTRL_STOPPED               = 3,
        NVME_CTRL_SKIP_ID_CNS_CS        = 4,
+       NVME_CTRL_DIRTY_CAPABILITY      = 5,
 };
 
 struct nvme_ctrl {