@c man begin SYNOPSIS
QEMU / KVM CPU model configuration
@c man end

@c man begin DESCRIPTION

@menu
* recommendations_cpu_models_x86::  Recommendations for KVM CPU model configuration on x86 hosts
* recommendations_cpu_models_MIPS:: Supported CPU model configurations on MIPS hosts
* cpu_model_syntax_apps::           Syntax for configuring CPU models
@end menu

QEMU / KVM virtualization supports two ways to configure CPU models

@table @option

@item Host passthrough

This passes the host CPU model features, model, stepping, exactly to the
guest. Note that KVM may filter out some host CPU model features if they
cannot be supported with virtualization. Live migration is unsafe when
this mode is used as libvirt / QEMU cannot guarantee a stable CPU is
exposed to the guest across hosts. This is the recommended CPU to use,
provided live migration is not required.

@item Named model

QEMU comes with a number of predefined named CPU models, that typically
refer to specific generations of hardware released by Intel and AMD.
These allow the guest VMs to have a degree of isolation from the host CPU,
allowing greater flexibility in live migrating between hosts with differing
hardware.
@end table

In both cases, it is possible to optionally add or remove individual CPU
features, to alter what is presented to the guest by default.

Libvirt supports a third way to configure CPU models known as "Host model".
This uses the QEMU "Named model" feature, automatically picking a CPU model
that is similar the host CPU, and then adding extra features to approximate
the host model as closely as possible. This does not guarantee the CPU family,
stepping, etc will precisely match the host CPU, as they would with "Host
passthrough", but gives much of the benefit of passthrough, while making
live migration safe.

@node recommendations_cpu_models_x86
@subsection Recommendations for KVM CPU model configuration on x86 hosts

The information that follows provides recommendations for configuring
CPU models on x86 hosts. The goals are to maximise performance, while
protecting guest OS against various CPU hardware flaws, and optionally
enabling live migration between hosts with heterogeneous CPU models.

@menu
* preferred_cpu_models_intel_x86::       Preferred CPU models for Intel x86 hosts
* important_cpu_features_intel_x86::     Important CPU features for Intel x86 hosts
* preferred_cpu_models_amd_x86::         Preferred CPU models for AMD x86 hosts
* important_cpu_features_amd_x86::       Important CPU features for AMD x86 hosts
* default_cpu_models_x86::               Default x86 CPU models
* other_non_recommended_cpu_models_x86:: Other non-recommended x86 CPUs
@end menu

@node preferred_cpu_models_intel_x86
@subsubsection Preferred CPU models for Intel x86 hosts

The following CPU models are preferred for use on Intel hosts. Administrators /
applications are recommended to use the CPU model that matches the generation
of the host CPUs in use. In a deployment with a mixture of host CPU models
between machines, if live migration compatibility is required, use the newest
CPU model that is compatible across all desired hosts.

@table @option
@item @code{Skylake-Server}
@item @code{Skylake-Server-IBRS}

Intel Xeon Processor (Skylake, 2016)


@item @code{Skylake-Client}
@item @code{Skylake-Client-IBRS}

Intel Core Processor (Skylake, 2015)


@item @code{Broadwell}
@item @code{Broadwell-IBRS}
@item @code{Broadwell-noTSX}
@item @code{Broadwell-noTSX-IBRS}

Intel Core Processor (Broadwell, 2014)


@item @code{Haswell}
@item @code{Haswell-IBRS}
@item @code{Haswell-noTSX}
@item @code{Haswell-noTSX-IBRS}

Intel Core Processor (Haswell, 2013)


@item @code{IvyBridge}
@item @code{IvyBridge-IBRS}

Intel Xeon E3-12xx v2 (Ivy Bridge, 2012)


@item @code{SandyBridge}
@item @code{SandyBridge-IBRS}

Intel Xeon E312xx (Sandy Bridge, 2011)


@item @code{Westmere}
@item @code{Westmere-IBRS}

Westmere E56xx/L56xx/X56xx (Nehalem-C, 2010)


@item @code{Nehalem}
@item @code{Nehalem-IBRS}

Intel Core i7 9xx (Nehalem Class Core i7, 2008)


@item @code{Penryn}

Intel Core 2 Duo P9xxx (Penryn Class Core 2, 2007)


@item @code{Conroe}

Intel Celeron_4x0 (Conroe/Merom Class Core 2, 2006)

@end table

@node important_cpu_features_intel_x86
@subsubsection Important CPU features for Intel x86 hosts

The following are important CPU features that should be used on Intel x86
hosts, when available in the host CPU. Some of them require explicit
configuration to enable, as they are not included by default in some, or all,
of the named CPU models listed above. In general all of these features are
included if using "Host passthrough" or "Host model".


@table @option

@item @code{pcid}

Recommended to mitigate the cost of the Meltdown (CVE-2017-5754) fix

Included by default in Haswell, Broadwell & Skylake Intel CPU models.

Should be explicitly turned on for Westmere, SandyBridge, and IvyBridge
Intel CPU models. Note that some desktop/mobile Westmere CPUs cannot
support this feature.


@item @code{spec-ctrl}

Required to enable the Spectre (CVE-2017-5753 and CVE-2017-5715) fix,
in cases where retpolines are not sufficient.

Included by default in Intel CPU models with -IBRS suffix.

Must be explicitly turned on for Intel CPU models without -IBRS suffix.

Requires the host CPU microcode to support this feature before it
can be used for guest CPUs.


@item @code{ssbd}

Required to enable the CVE-2018-3639 fix

Not included by default in any Intel CPU model.

Must be explicitly turned on for all Intel CPU models.

Requires the host CPU microcode to support this feature before it
can be used for guest CPUs.


@item @code{pdpe1gb}

Recommended to allow guest OS to use 1GB size pages

Not included by default in any Intel CPU model.

Should be explicitly turned on for all Intel CPU models.

Note that not all CPU hardware will support this feature.
@end table


@node preferred_cpu_models_amd_x86
@subsubsection Preferred CPU models for AMD x86 hosts

The following CPU models are preferred for use on Intel hosts. Administrators /
applications are recommended to use the CPU model that matches the generation
of the host CPUs in use. In a deployment with a mixture of host CPU models
between machines, if live migration compatibility is required, use the newest
CPU model that is compatible across all desired hosts.

@table @option

@item @code{EPYC}
@item @code{EPYC-IBPB}

AMD EPYC Processor (2017)


@item @code{Opteron_G5}

AMD Opteron 63xx class CPU (2012)


@item @code{Opteron_G4}

AMD Opteron 62xx class CPU (2011)


@item @code{Opteron_G3}

AMD Opteron 23xx (Gen 3 Class Opteron, 2009)


@item @code{Opteron_G2}

AMD Opteron 22xx (Gen 2 Class Opteron, 2006)


@item @code{Opteron_G1}

AMD Opteron 240 (Gen 1 Class Opteron, 2004)
@end table

@node important_cpu_features_amd_x86
@subsubsection Important CPU features for AMD x86 hosts

The following are important CPU features that should be used on AMD x86
hosts, when available in the host CPU. Some of them require explicit
configuration to enable, as they are not included by default in some, or all,
of the named CPU models listed above. In general all of these features are
included if using "Host passthrough" or "Host model".


@table @option

@item @code{ibpb}

Required to enable the Spectre (CVE-2017-5753 and CVE-2017-5715) fix,
in cases where retpolines are not sufficient.

Included by default in AMD CPU models with -IBPB suffix.

Must be explicitly turned on for AMD CPU models without -IBPB suffix.

Requires the host CPU microcode to support this feature before it
can be used for guest CPUs.


@item @code{virt-ssbd}

Required to enable the CVE-2018-3639 fix

Not included by default in any AMD CPU model.

Must be explicitly turned on for all AMD CPU models.

This should be provided to guests, even if amd-ssbd is also
provided, for maximum guest compatibility.

Note for some QEMU / libvirt versions, this must be force enabled
when when using "Host model", because this is a virtual feature
that doesn't exist in the physical host CPUs.


@item @code{amd-ssbd}

Required to enable the CVE-2018-3639 fix

Not included by default in any AMD CPU model.

Must be explicitly turned on for all AMD CPU models.

This provides higher performance than virt-ssbd so should be
exposed to guests whenever available in the host. virt-ssbd
should none the less also be exposed for maximum guest
compatibility as some kernels only know about virt-ssbd.


@item @code{amd-no-ssb}

Recommended to indicate the host is not vulnerable CVE-2018-3639

Not included by default in any AMD CPU model.

Future hardware generations of CPU will not be vulnerable to
CVE-2018-3639, and thus the guest should be told not to enable
its mitigations, by exposing amd-no-ssb. This is mutually
exclusive with virt-ssbd and amd-ssbd.


@item @code{pdpe1gb}

Recommended to allow guest OS to use 1GB size pages

Not included by default in any AMD CPU model.

Should be explicitly turned on for all AMD CPU models.

Note that not all CPU hardware will support this feature.
@end table


@node default_cpu_models_x86
@subsubsection Default x86 CPU models

The default QEMU CPU models are designed such that they can run on all hosts.
If an application does not wish to do perform any host compatibility checks
before launching guests, the default is guaranteed to work.

The default CPU models will, however, leave the guest OS vulnerable to various
CPU hardware flaws, so their use is strongly discouraged. Applications should
follow the earlier guidance to setup a better CPU configuration, with host
passthrough recommended if live migration is not needed.

@table @option
@item @code{qemu32}
@item @code{qemu64}

QEMU Virtual CPU version 2.5+ (32 & 64 bit variants)

qemu64 is used for x86_64 guests and qemu32 is used for i686 guests, when no
-cpu argument is given to QEMU, or no <cpu> is provided in libvirt XML.
@end table


@node other_non_recommended_cpu_models_x86
@subsubsection Other non-recommended x86 CPUs

The following CPUs models are compatible with most AMD and Intel x86 hosts, but
their usage is discouraged, as they expose a very limited featureset, which
prevents guests having optimal performance.

@table @option

@item @code{kvm32}
@item @code{kvm64}

Common KVM processor (32 & 64 bit variants)

Legacy models just for historical compatibility with ancient QEMU versions.


@item @code{486}
@item @code{athlon}
@item @code{phenom}
@item @code{coreduo}
@item @code{core2duo}
@item @code{n270}
@item @code{pentium}
@item @code{pentium2}
@item @code{pentium3}

Various very old x86 CPU models, mostly predating the introduction of
hardware assisted virtualization, that should thus not be required for
running virtual machines.
@end table

@node recommendations_cpu_models_MIPS
@subsection Supported CPU model configurations on MIPS hosts

QEMU supports variety of MIPS CPU models:

@menu
* cpu_models_MIPS32::               Supported CPU models for MIPS32 hosts
* cpu_models_MIPS64::               Supported CPU models for MIPS64 hosts
* cpu_models_nanoMIPS::             Supported CPU models for nanoMIPS hosts
* preferred_cpu_models_MIPS::       Preferred CPU models for MIPS hosts
@end menu

@node cpu_models_MIPS32
@subsubsection Supported CPU models for MIPS32 hosts

The following CPU models are supported for use on MIPS32 hosts. Administrators /
applications are recommended to use the CPU model that matches the generation
of the host CPUs in use. In a deployment with a mixture of host CPU models
between machines, if live migration compatibility is required, use the newest
CPU model that is compatible across all desired hosts.

@table @option
@item @code{mips32r6-generic}

MIPS32 Processor (Release 6, 2015)


@item @code{P5600}

MIPS32 Processor (P5600, 2014)


@item @code{M14K}
@item @code{M14Kc}

MIPS32 Processor (M14K, 2009)


@item @code{74Kf}

MIPS32 Processor (74K, 2007)


@item @code{34Kf}

MIPS32 Processor (34K, 2006)


@item @code{24Kc}
@item @code{24KEc}
@item @code{24Kf}

MIPS32 Processor (24K, 2003)


@item @code{4Kc}
@item @code{4Km}
@item @code{4KEcR1}
@item @code{4KEmR1}
@item @code{4KEc}
@item @code{4KEm}

MIPS32 Processor (4K, 1999)
@end table

@node cpu_models_MIPS64
@subsubsection Supported CPU models for MIPS64 hosts

The following CPU models are supported for use on MIPS64 hosts. Administrators /
applications are recommended to use the CPU model that matches the generation
of the host CPUs in use. In a deployment with a mixture of host CPU models
between machines, if live migration compatibility is required, use the newest
CPU model that is compatible across all desired hosts.

@table @option
@item @code{I6400}

MIPS64 Processor (Release 6, 2014)


@item @code{Loongson-2F}

MIPS64 Processor (Loongson 2, 2008)


@item @code{Loongson-2E}

MIPS64 Processor (Loongson 2, 2006)


@item @code{mips64dspr2}

MIPS64 Processor (Release 2, 2006)


@item @code{MIPS64R2-generic}
@item @code{5KEc}
@item @code{5KEf}

MIPS64 Processor (Release 2, 2002)


@item @code{20Kc}

MIPS64 Processor (20K, 2000)


@item @code{5Kc}
@item @code{5Kf}

MIPS64 Processor (5K, 1999)


@item @code{VR5432}

MIPS64 Processor (VR, 1998)


@item @code{R4000}

MIPS64 Processor (MIPS III, 1991)
@end table

@node cpu_models_nanoMIPS
@subsubsection Supported CPU models for nanoMIPS hosts

The following CPU models are supported for use on nanoMIPS hosts. Administrators /
applications are recommended to use the CPU model that matches the generation
of the host CPUs in use. In a deployment with a mixture of host CPU models
between machines, if live migration compatibility is required, use the newest
CPU model that is compatible across all desired hosts.

@table @option
@item @code{I7200}

MIPS I7200 (nanoMIPS, 2018)

@end table

@node preferred_cpu_models_MIPS
@subsubsection Preferred CPU models for MIPS hosts

The following CPU models are preferred for use on different MIPS hosts:

@table @option
@item @code{MIPS III}
R4000

@item @code{MIPS32R2}
34Kf

@item @code{MIPS64R6}
I6400

@item @code{nanoMIPS}
I7200
@end table

@node cpu_model_syntax_apps
@subsection Syntax for configuring CPU models

The example below illustrate the approach to configuring the various
CPU models / features in QEMU and libvirt

@menu
* cpu_model_syntax_qemu::    QEMU command line
* cpu_model_syntax_libvirt:: Libvirt guest XML
@end menu

@node cpu_model_syntax_qemu
@subsubsection QEMU command line

@table @option

@item Host passthrough

@example
   $ qemu-system-x86_64 -cpu host
@end example

With feature customization:

@example
   $ qemu-system-x86_64 -cpu host,-vmx,...
@end example

@item Named CPU models

@example
   $ qemu-system-x86_64 -cpu Westmere
@end example

With feature customization:

@example
   $ qemu-system-x86_64 -cpu Westmere,+pcid,...
@end example

@end table

@node cpu_model_syntax_libvirt
@subsubsection Libvirt guest XML

@table @option

@item Host passthrough

@example
   <cpu mode='host-passthrough'/>
@end example

With feature customization:

@example
   <cpu mode='host-passthrough'>
       <feature name="vmx" policy="disable"/>
       ...
   </cpu>
@end example

@item Host model

@example
   <cpu mode='host-model'/>
@end example

With feature customization:

@example
   <cpu mode='host-model'>
       <feature name="vmx" policy="disable"/>
       ...
   </cpu>
@end example

@item Named model

@example
   <cpu mode='custom'>
       <model name="Westmere"/>
   </cpu>
@end example

With feature customization:

@example
   <cpu mode='custom'>
       <model name="Westmere"/>
       <feature name="pcid" policy="require"/>
       ...
   </cpu>
@end example

@end table

@c man end

@ignore

@setfilename qemu-cpu-models
@settitle QEMU / KVM CPU model configuration

@c man begin SEEALSO
The HTML documentation of QEMU for more precise information and Linux
user mode emulator invocation.
@c man end

@c man begin AUTHOR
Daniel P. Berrange
@c man end

@end ignore
