Appendix B. Using KVM Virtualization on Multiple Architectures

By default, KVM virtualization on Red Hat Enterprise Linux 7 is compatible with the AMD64 and Intel 64 architectures. However, starting with Red Hat Enterprise Linux 7.5, KVM virtualization is also supported on the following architectures, thanks to the introduction of the kernel-alt packages:
Note that when using virtualization on these architectures, the installation, usage, and feature support differ from AMD64 and Intel 64 in certain respects. For more information, see the sections below:

B.1. Using KVM Virtualization on IBM POWER Systems

Starting with Red Hat Enterprise Linux 7.5, KVM virtualization is supported on IBM POWER8 Systems and IBM POWER9 systems. However, IBM POWER8 does not use kernel-alt, which means that these two architectures differ in certain aspects.

Installation

To install KVM virtualization on Red Hat Enterprise Linux 7 for IBM POWER 8 and POWER9 Systems:
  1. Install the host system from the bootable image on the Customer Portal:
    For detailed instructions, see the Red Hat Enterprise Linux 7 Installation Guide.
  2. Ensure that your host system meets the hypervisor requirements:
    • Verify that you have the correct machine type:
      # grep ^platform /proc/cpuinfo
      The output of this command must include the PowerNV entry, which indicates that you are running on a supported PowerNV machine type:
      platform        : PowerNV
      
    • Load the KVM-HV kernel module:
      # modprobe kvm_hv
    • Verify that the KVM-HV kernel module is loaded:
      # lsmod | grep kvm
      If KVM-HV was loaded successfully, the output of this command includes kvm_hv.
  3. Install the qemu-kvm-ma package in addition to other virtualization packages described in Chapter 2, Installing the Virtualization Packages.

Architecture Specifics

KVM virtualization on Red Hat Enterprise Linux 7.5 for IBM POWER differs from KVM on AMD64 and Intel 64 systems in the following:
  • The recommended minimum memory allocation for a guest on an IBM POWER host is 2GB RAM.
  • The SPICE protocol is not supported on IBM POWER Systems. To display the graphical output of a guest, use the VNC protocol. In addition, only the following virtual graphics card devices are supported:
    • vga - only supported in -vga std mode and not in -vga cirrus mode
    • virtio-vga
    • virtio-gpu
  • The following virtualization features are disabled on AMD64 and Intel 64 hosts, but work on IBM POWER. However, they are not supported by Red Hat, and therefore not recommended for use:
    • I/O threads
  • SMBIOS configuration is not available.
  • POWER8 guests, including compatibility mode guests, may fail to start with an error similar to:
    qemu-kvm: Failed to allocate KVM HPT of order 33 (try smaller maxmem?): Cannot allocate memory
    This is significantly more likely to occur on guests that use Red Hat Enterprise Linux 7.3 or prior.
    To fix this problem, do one of the following:
    • Increase the CMA memory pool available for the guest's hashed page table (HPT) by adding kvm_cma_resv_ratio=memory to the host's kernel command line, where memory is the percentage of host memory that should be reserved for the CMA pool (defaults to 5).
    • Reduce the maximum hot-plugged memory for the guest by using the virsh edit guestname command and lowering the value of the <maxMemory> element.
    • If the guest allows for memory hot plug, update the guest to Red Hat Enterprise Linux 7.4 or later.
      To ensure that memory hot plug is enabled for the guest, search for the <maxMemory> element and NUMA topology setting in the guest's XML configuration:
      # virsh dumpxml guestname | grep maxMemory
      <maxMemory slots='16' unit='KiB'>16777216</maxMemory>
      
      # virsh dumpxml guestname | grep cell
      <cell id='0' cpus='0-2' memory='1048576' unit='KiB'/>
      
      If these elements are not present in the XML configuration, updating to Red Hat Enterprise Linux 7.4 will not fix the problem.
  • Transparent huge pages (THPs) currently do not provide any notable performance benefits on IBM POWER8 guests
    Also note that the sizes of static huge pages on IBM POWER8 systems are 16MiB and 16GiB, as opposed to 2MiB and 1GiB on AMD 64 and Intel64 and on IBM POWER9. As a consequence, migrating a guest from an IBM POWER8 host to an IBM POWER9 host fails if the guest is configured with static huge pages.
    In addition, to be able to use static huge pages or THPs on IBM POWER8 guests, you must first set up huge pages on the host.
  • A number of virtual peripheral devices that are supported on AMD64 and Intel 64 systems are not supported on IBM POWER systems, or a different device is supported as a replacement:
    • Devices used for PCI-E hierarchy, including the ioh3420 and xio3130-downstream devices, are not supported. This functionality is replaced by multiple independent PCI root bridges, provided by the spapr-pci-host-bridge device.
    • UHCI and EHCI PCI controllers are not supported. Use OHCI and XHCI controllers instead.
    • IDE devices, including the virtual IDE CD-ROM (ide-cd) and the virtual IDE disk (ide-hd), are not supported. Use the virtio-scsi and virtio-blk devices instead.
    • Emulated PCI NICs (rtl8139) are not supported. Use the virtio-net device instead.
    • Sound devices, including intel-hda, hda-output, and AC97, are not supported.
    • USB redirection devices, including usb-redir and usb-tablet, are not supported.
  • The kvm-clock service does not have to be configured for time management on IBM POWER systems.
  • The pvpanic device is not supported on IBM POWER systems. However, an equivalent functionality is available and activated on this architecture by default. To enable it on a guest, use the <on_crash> configuration element with the preserve value. In addition, make sure to remove the <panic> element from the <devices> section, as its presence can lead to the guest failing to boot on IBM POWER systems.
  • On POWER8 systems, the host machine must run in single-threaded mode to support guests. This is automatically configured if the qemu-kvm-ma packages are installed. However, guests running on a single-threaded hosts can still use multiple threads.