
On 2/2/22 13:44, Andrea Bolognani wrote:
On Thu, Jan 27, 2022 at 02:47:43PM +0100, Michal Privoznik wrote:
Currently, memory device (def->mems) part of cmd line is generated before any controller. In majority of cases it doesn't matter because neither of memory devices live on a bus that's created by an exposed controller (e.g. there's no DIMM controller, at least not exposed). Except for virtio-mem and virtio-pmem, which do have a PCI address. And if it so happens that the device goes onto non-default bus (pci.0) starting such guest fails, because the controller that creates the desired bus wasn't processed yet. QEMU processes arguments in order.
For instance, if virtio-mem has address with bus='0x01' QEMU refuses to start with the following message:
Bus 'pci.1' not found
Similarly for virtio-pmem. I've successfully tested migration and changing the order does not affect migration stream.
Maybe we should add a test case where the memory device is not on the root bus? We can't catch the QEMU error of course, but that would at least serve as some sort of implicit documentation of the fact that we expect that scenario to work.
Sure, I can do that. I'm not that convinced on its value, but I can alter an existing test case.
For this patch,
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Pushed, thanks. Michal