Improve default machine type selection
Jim Fehlig
jfehlig at suse.com
Thu Mar 16 21:51:58 UTC 2023
On 3/16/23 11:56, Jim Fehlig wrote:
> On 3/15/23 08:40, Ján Tomko wrote:
>> On a Monday in 2023, Jim Fehlig wrote:
>>> If an explicit machine type is not specified in the VM config, the qemu
>>> driver will select the first machine type in the list of machine types for
>>> the specified accelerator. See virQEMUCapsGetPreferredMachine
>>>
>>> https://gitlab.com/libvirt/libvirt/-/blob/master/src/qemu/qemu_capabilities.c#L6133
>>>
>>> On my test machines, this works reasonably well for x86_64 where the first
>>> machine type is pc-i440fx-7.1. But for aarch64, the first machine is
>>> integratorcp, which is not very useful with maxCpus=1 and other limitations.
>>
>> Is it possible to run such machine with libvirt?
>
> I just did a quick check with libvirt 9.1.0 (qemu is a bit older, at 7.1.0):
>
> # cat test.xml
> <domain type='kvm'>
> <name>test</name>
> <memory unit='KiB'>2097152</memory>
> <vcpu placement='static'>1</vcpu>
> <os>
> <type>hvm</type>
> <loader readonly='yes'
> type='pflash'>/usr/share/qemu/aavmf-aarch64-code.bin</loader>
> <nvram template='/usr/share/qemu/aavmf-aarch64-vars.bin'/>
> <boot dev='hd'/>
> </os>
> <clock offset='utc'/>
> <on_poweroff>destroy</on_poweroff>
> <on_reboot>restart</on_reboot>
> <on_crash>destroy</on_crash>
> <devices>
> <emulator>/usr/bin/qemu-system-aarch64</emulator>
> <disk type='file' device='disk'>
> <driver name='qemu' type='qcow2' discard='unmap'/>
> <source file='/var/lib/libvirt/images/test.qcow2'/>
> <target dev='vda' bus='virtio'/>
> </disk>
> </devices>
> </domain>
To be fair, this config does not work when specifying machine='virt'
# virsh create test.xml
error: Failed to create domain from test.xml
error: internal error: process exited while connecting to monitor:
2023-03-16T21:37:30.895916Z qemu-system-aarch64: KVM is not supported for this
guest CPU type
2023-03-16T21:37:30.895989Z qemu-system-aarch64: kvm_init_vcpu:
kvm_arch_init_vcpu failed (0): Invalid argument
It worked after adding
<cpu mode='host-passthrough'/>
> # virsh create test.xml
> error: Failed to create domain from test.xml
> error: internal error: Unexpected enum value 0 for virDomainDeviceAddressType
>
The same error occurs with host-passthrough CPU and default machine type.
Regards,
Jim
More information about the libvir-list
mailing list