[PATCH] qemu_command: Generate memory only after controllers

Michal Prívozník mprivozn at redhat.com
Wed Feb 2 13:26:23 UTC 2022


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 at redhat.com>
> 

Pushed, thanks.

Michal




More information about the libvir-list mailing list