Message ID | 20221108150252.2123727-2-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/12] nvme-pci: don't call nvme_init_ctrl_finish from nvme_passthru_end | expand |
> nvme_passthrough_end can race with a reset, so we should not call > nvme_init_ctrl_finish from here. Instead just log that the controller > capabilities might have changed. Can you explain here what is the problem caused by calling this from here?
[note to self: the subject should say nvme instead of nvme-pci] On Wed, Nov 09, 2022 at 04:55:47AM +0200, Sagi Grimberg wrote: >> nvme_passthrough_end can race with a reset, so we should not call >> nvme_init_ctrl_finish from here. Instead just log that the controller >> capabilities might have changed. > > Can you explain here what is the problem caused by calling this from > here? I'll add it to the next version: - stores to the cels xarray can race - the new opal initialization can race and in general it just updates random controller fields without a reset, which I'm worried about hitting completely untested code.
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index f94b05c585cbc..706499d4bfefb 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1120,8 +1120,10 @@ void nvme_passthru_end(struct nvme_ctrl *ctrl, u32 effects, mutex_unlock(&ctrl->subsys->lock); mutex_unlock(&ctrl->scan_lock); } - if (effects & NVME_CMD_EFFECTS_CCC) - nvme_init_ctrl_finish(ctrl); + if (effects & NVME_CMD_EFFECTS_CCC) { + 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); flush_work(&ctrl->scan_work);
nvme_passthrough_end can race with a reset, so we should not call nvme_init_ctrl_finish from here. Instead just log that the controller capabilities might have changed. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/nvme/host/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)