On Mon, Mar 13, 2023 at 02:25:01PM -0600, 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_capabiliti...
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.
What you're describing is the historical behavior, but these days
it's a bit more complicated than that: we actually go out of our way
to make sure that the default machine for an architecture is the one
that QEMU *originally* listed first. See [1] for the implementation
as well as the rationale.
Would it be possible to select a "better" default machine
type? E.g. 'pc'
for x86_64, 'virt' for aarch64, etc. I'm happy to work on this if folks deem
it's a reasonable improvement. It would benefit tools like the libvirt
terraform provider, which prefer to use something more generic like
<type>hvm</type>.
As much as I would *love* for virt to be the default aarch64 (and
riscv64) machine type, unfortunately our strong backwards
compatibility guarantees prevent us from changing this :(
On the plus side, at least implementing more reasonable defaults at
the application level should be quite straightforward. See [2] for
virt-manager's take.
[1]
https://gitlab.com/libvirt/libvirt/-/commit/26cfb1a3cd39d731099ee7d5d1c47...
[2]
https://github.com/virt-manager/virt-manager/blob/33ff193ee9fcfdb74f95d94...
--
Andrea Bolognani / Red Hat / Virtualization