1. 21 11月, 2019 2 次提交
    • 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
    • J
  2. 05 12月, 2017 1 次提交
  3. 28 11月, 2017 1 次提交
  4. 11 4月, 2017 1 次提交
  5. 03 4月, 2017 1 次提交
    • A
      qemu: Enforce ACPI, UEFI requirements · 396ca36c
      Andrea Bolognani 提交于
      Depending on the architecture, requirements for ACPI and UEFI can
      be different; more specifically, while on x86 UEFI requires ACPI,
      on aarch64 it's the other way around.
      
      Enforce these requirements when validating the domain, and make
      the error message more accurate by mentioning that they're not
      necessarily applicable to all architectures.
      
      Several aarch64 test cases had to be tweaked because they would
      have failed the validation step otherwise.
      396ca36c
  6. 17 3月, 2017 1 次提交
  7. 16 9月, 2016 1 次提交
    • L
      qemu: map "virtio" video model to "virt" machtype correctly (arm/aarch64) · 706b5b62
      Laszlo Ersek 提交于
      Most of QEMU's PCI display device models, such as:
      
        libvirt video/model/@type  QEMU -device
        -------------------------  ------------
        cirrus                     cirrus-vga
        vga                        VGA
        qxl                        qxl-vga
        virtio                     virtio-vga
      
      come with a linear framebuffer (sometimes called "VGA compatibility
      framebuffer"). This linear framebuffer lives in one of the PCI device's
      MMIO BARs, and allows guest code (primarily: firmware drivers, and
      non-accelerated OS drivers) to display graphics with direct memory access.
      
      Due to architectural reasons on aarch64/KVM hosts, this kind of
      framebuffer doesn't / can't work in
      
        qemu-system-(arm|aarch64) -M virt
      
      machines. Cache coherency issues guarantee a corrupted / unusable display.
      The problem has been researched by several people, including kvm-arm
      maintainers, and it's been decided that the best way (practically the only
      way) to have boot time graphics for such guests is to consolidate on
      QEMU's "virtio-gpu-pci" device.
      
      >From <https://bugzilla.redhat.com/show_bug.cgi?id=1195176>, libvirt
      supports
      
        <devices>
          <video>
            <model type='virtio'/>
          </video>
        </devices>
      
      but libvirt unconditionally maps @type='virtio' to QEMU's "virtio-vga"
      device model. (See the qemuBuildDeviceVideoStr() function and the
      "qemuDeviceVideo" enum impl.)
      
      According to the above, this is not right for the "virt" machine type; the
      qemu-system-(arm|aarch64) binaries don't even recognize the "virtio-vga"
      device model (justifiedly). Whereas "virtio-gpu-pci", which is a pure
      virtio device without a compatibility framebuffer, is available, and works
      fine.
      
      (The ArmVirtQemu ("AAVMF") platform of edk2 -- that is, the UEFI firmware
      for "virt" -- supports "virtio-gpu-pci", as of upstream commit
      3ef3209d3028. See
      <https://tianocore.acgmultimedia.com/show_bug.cgi?id=66>.)
      
      Override the default mapping of "virtio", from "virtio-vga" to
      "virtio-gpu-pci", if qemuDomainMachineIsVirt() evaluates to true.
      
      Cc: Andrea Bolognani <abologna@redhat.com>
      Cc: Drew Jones <drjones@redhat.com>
      Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
      Cc: Martin Kletzander <mkletzan@redhat.com>
      Suggested-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1372901Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Acked-by: NMartin Kletzander <mkletzan@redhat.com>
      706b5b62