Messages in this thread Patch in this message | | | From | Daniel Wagner <> | Subject | [PATCH v3] nvme: update firmware version after commit | Date | Mon, 30 Oct 2023 17:00:44 +0100 |
| |
The firmware version sysfs entry needs to be updated after a successfully firmware activation.
nvme-cli stopped issuing an Identify Controller command to list the current firmware information and relies on sysfs showing the current firmware version.
Reported-by: Kenji Tomonaga <tkenbo@gmail.com> Signed-off-by: Daniel Wagner <dwagner@suse.de> ---
Only compile tested. Asked for testing.
changes:
v3: - use afi variable directly, no _to_cpu helper - fix bit mask size
v2: - use fw slot info instead issuing another identify controller command - https://lore.kernel.org/linux-nvme/20231013163420.3097-1-dwagner@suse.de
v1: - initial version - https://lore.kernel.org/linux-nvme/20231013062623.6745-1-dwagner@suse.de/
drivers/nvme/host/core.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 37b6fa746662..e8511bff78d2 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -4053,8 +4053,21 @@ static void nvme_get_fw_slot_info(struct nvme_ctrl *ctrl) return; if (nvme_get_log(ctrl, NVME_NSID_ALL, NVME_LOG_FW_SLOT, 0, NVME_CSI_NVM, - log, sizeof(*log), 0)) + log, sizeof(*log), 0)) { dev_warn(ctrl->device, "Get FW SLOT INFO log error\n"); + goto out_free_log; + } + + if (log->afi & 0x70) { + dev_info(ctrl->device, + "Firmware is activated after next Controller Level Reset\n"); + goto out_free_log; + } + + memcpy(ctrl->subsys->firmware_rev, &log->frs[log->afi & 0x7], + sizeof(ctrl->subsys->firmware_rev)); + +out_free_log: kfree(log); } -- 2.42.0
| |