diff options
author | Lukasz Maniak <lukasz.maniak@linux.intel.com> | 2022-05-09 16:16:11 +0200 |
---|---|---|
committer | Klaus Jensen <k.jensen@samsung.com> | 2022-06-23 23:24:28 +0200 |
commit | 99f48ae7aea70fb080f04bf1cc846cd6450bd11a (patch) | |
tree | eeec8913da9527008b6b192cf8412765e43d1519 /hw/nvme/ns.c | |
parent | 5e6f963f018f2ebb16c0f9586f17811163d62b4a (diff) | |
download | qemu-99f48ae7aea70fb080f04bf1cc846cd6450bd11a.zip qemu-99f48ae7aea70fb080f04bf1cc846cd6450bd11a.tar.gz qemu-99f48ae7aea70fb080f04bf1cc846cd6450bd11a.tar.bz2 |
hw/nvme: Add support for Secondary Controller List
Introduce handling for Secondary Controller List (Identify command with
CNS value of 15h).
Secondary controller ids are unique in the subsystem, hence they are
reserved by it upon initialization of the primary controller to the
number of sriov_max_vfs.
ID reservation requires the addition of an intermediate controller slot
state, so the reserved controller has the address 0xFFFF.
A secondary controller is in the reserved state when it has no virtual
function assigned, but its primary controller is realized.
Secondary controller reservations are released to NULL when its primary
controller is unregistered.
Signed-off-by: Lukasz Maniak <lukasz.maniak@linux.intel.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Diffstat (limited to 'hw/nvme/ns.c')
-rw-r--r-- | hw/nvme/ns.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 1b9c9d1..870c3ca 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -597,7 +597,7 @@ static void nvme_ns_realize(DeviceState *dev, Error **errp) for (i = 0; i < ARRAY_SIZE(subsys->ctrls); i++) { NvmeCtrl *ctrl = subsys->ctrls[i]; - if (ctrl) { + if (ctrl && ctrl != SUBSYS_SLOT_RSVD) { nvme_attach_ns(ctrl, ns); } } |