On 1/23/24 11:59, Damien Hedde wrote:
Hi all,

We are currently looking into hotplugging nvme devices and it is currently not 
possible:
When nvme was introduced 2 years ago, the feature was disabled.
commit cc6fb6bc506e6c47ed604fcb7b7413dff0b7d845
Author: Klaus Jensen
Date:   Tue Jul 6 10:48:40 2021 +0200

    hw/nvme: mark nvme-subsys non-hotpluggable
We currently lack the infrastructure to handle subsystem hotplugging, so
    disable it.

Do someone know what's lacking or anyone have some tips/idea of what we should 
develop to add the support ?

Problem is that the object model is messed up. In qemu namespaces are attached to controllers, which in turn are children of the PCI device.
There are subsystems, but these just reference the controller.

So if you hotunplug the PCI device you detach/destroy the controller and detach the namespaces from the controller. But if you hotplug the PCI device again the NVMe controller will be attached to the PCI device, but the namespace are still be detached.

Klaus said he was going to fix that, and I dimly remember some patches
floating around. But apparently it never went anywhere.

Fundamental problem is that the NVMe hierarchy as per spec is incompatible with the qemu object model; qemu requires a strict
tree model where every object has exactly _one_ parent.

Cheers,

Hannes


Reply via email to