Taikun Logo

Taikun OCP Guide

Table of Contents

hw_emulation_architecture – Configuring QEMU instance
emulation architecture

25.0.0 (Yoga)

The libvirt driver now allows for handling of specific cpu
architectures when defined within the image metadata properties, to be
emulated through QEMU.

Added hw_emulation_architecture as an available
image_meta property.


The following only applies to environments using libvirt compute
hosts. and should be considered experimental in its entirety, during its
first release as a feature.


This capability is to fill a need with environments that do not have
the capability to support the various cpu architectures that are present
today with physical hardware. A small subset of architectures that are
supported both within libvirt and QEMU have been selected as prime
candidates for emulation support.

While support has been added for the below base architectures, this
does not guarantee that every subset or custom operating system that
leverages one of these architectures will function.


QEMU Binary Support

To ensure that libvirt and QEMU can properly handle the level of cpu
emulation desired by the end-user, you are required to install the
specific qemu-system-XXX, qemu-efi-arm,
qemu-efi-aarch64 binaries on the compute nodes that will be
providing support.

Console Support

Consideration need to be made in regards to which architectures you
want to support, as there are limitations on support through spice,
novnc, and serial. All testing and validation has been done to ensure
that spice and serial connections function as expected.

  • AARCH64 – Spice & Serial
  • S390X – Serial
  • PPC64LE – Spice & Serial
  • MIPSEL – untested

Supported Emulated

The supported emulated architectures require specific image meta
properties to be set in order to trigger the proper settings to be
configured by libvirtd.

For end users the emulation architecture of an instance is controlled
by the selection of an image with the
hw_emulation_architecture image metadata property set.


Tested and Validated as functional

$ openstack image set --property hw_emulation_architecture=aarch64 $IMAGE
$ openstack image set --property hw_machine_type=virt $IMAGE
$ openstack image set --property hw_firmware_type=uefi $IMAGE


Tested and Validated as functional

$ openstack image set --property hw_emulation_architecture=s390x $IMAGE
$ openstack image set --property hw_machine_type=s390-ccw-virtio $IMAGE
$ openstack image set --property hw_video_model=virtio $IMAGE


Tested and Validated as functional

$ openstack image set --property hw_emulation_architecture=ppc64le $IMAGE
$ openstack image set --property hw_machine_type=pseries $IMAGE


Testing and validation is ongoing to overcome PCI issues


Support is currently impacted, one current method for support is
manually patching and compiling as defined in libvirt bug XML error: No
PCI buses available

$ openstack image set --property hw_emulation_architecture=mipsel $IMAGE
$ openstack image set --property hw_machine_type=virt $IMAGE