• J
    qemu: Store default CPU in domain XML · 5e939cea
    Jiri Denemark 提交于
    When starting a domain without a CPU model specified in the domain XML,
    QEMU will choose a default one. Which is fine unless the domain gets
    migrated to another host because libvirt doesn't perform any CPU ABI
    checks and the virtual CPU provided by QEMU on the destination host can
    differ from the one on the source host.
    
    With QEMU 4.2.0 we can probe for the default CPU model used by QEMU for
    a particular machine type and store it in the domain XML. This way the
    chosen CPU model is more visible to users and libvirt will make sure
    the guest will see the exact same CPU after migration.
    
    Architecture specific notes
    - aarch64: We only set the default CPU for TCG domains as KVM requires
      explicit "-cpu host" to work.
    
    - ppc64: The default CPU for KVM is "host" thanks to some hacks in QEMU,
      we will translate the default model to the model corresponding to the
      host CPU ("POWER8" on a Power8 host, "POWER9" on Power9 host, etc.).
      This is not a problem as the corresponding CPU model is in fact an
      alias for "host". This is probably not ideal, but it's not wrong and
      the default virtual CPU configured by libvirt is the same QEMU would
      use. TCG uses various CPU models depending on machine type and its
      version.
    
    - s390x: The default CPU for KVM is "host" while TCG defaults to "qemu".
    
    - x86_64: The default CPU model (qemu64) is not runnable on any host
      with KVM, but QEMU just disables unavailable features and starts
      happily.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1598151
    https://bugzilla.redhat.com/show_bug.cgi?id=1598162Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
    Reviewed-by: NJán Tomko <jtomko@redhat.com>
    5e939cea
qemu_domain.c 482.5 KB