Revision a89fcca8185633993018dc081d6b021d005e6d0b authored by Guilherme G. Piccoli on 14 August 2019, 14:26:10 UTC, committed by Jens Axboe on 20 August 2019, 17:02:10 UTC
Commit 1b1031ca63b2 ("nvme: validate cntlid during controller initialisation") introduced a validation for controllers with duplicate cntlid that runs on nvme_init_subsystem(). The problem is that the validation relies on ctrl->cntlid, and this value is assigned (from id_ctrl value) after the call for nvme_init_subsystem() in nvme_init_identify() for non-fabrics scenario. That leads to ctrl->cntlid always being 0 in case we have a physical set of controllers in the same subsystem. This patch fixes that by loading the discovered cntlid id_ctrl value into ctrl->cntlid before the subsystem initialization, only for the non-fabrics case. The patch was tested with emulated nvme devices (qemu) having two controllers in a single subsystem. Without the patch, we couldn't make it work failing in the duplicate check; when running with the patch, we could see the subsystem holding both controllers. For the fabrics case we see ctrl->cntlid has a more intricate relation with the admin connect, so we didn't change that. Fixes: 1b1031ca63b2 ("nvme: validate cntlid during controller initialisation") Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 504db08
Makefile
# SPDX-License-Identifier: GPL-2.0
# Makefile for firmware tools
CFLAGS = -Wall -Wextra -g
all: ihex2fw
%: %.c
$(CC) $(CFLAGS) -o $@ $^
clean:
$(RM) ihex2fw
.PHONY: all clean
Computing file changes ...