hw/nvme: Update the initalization place for the AER queue
authorŁukasz Gieryk <lukasz.gieryk@linux.intel.com>
Mon, 9 May 2022 14:16:19 +0000 (16:16 +0200)
committerKlaus Jensen <k.jensen@samsung.com>
Thu, 23 Jun 2022 21:24:29 +0000 (23:24 +0200)
commitb7698b917abcbe673cbffc15ee41d95d3daa4af3
tree3a17a1e9fe3c859521d67bee40a05dcad09d4ff9
parent751babf5bb7f7e77f2676a9a9e54cc75a947b81b
hw/nvme: Update the initalization place for the AER queue

This patch updates the initialization place for the AER queue, so it’s
initialized once, at controller initialization, and not every time
controller is enabled.

While the original version works for a non-SR-IOV device, as it’s hard
to interact with the controller if it’s not enabled, the multiple
reinitialization is not necessarily correct.

With the SR/IOV feature enabled a segfault can happen: a VF can have its
controller disabled, while a namespace can still be attached to the
controller through the parent PF. An event generated in such case ends
up on an uninitialized queue.

While it’s an interesting question whether a VF should support AER in
the first place, I don’t think it must be answered today.

Signed-off-by: Łukasz Gieryk <lukasz.gieryk@linux.intel.com>
Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
hw/nvme/ctrl.c