]> git.ipfire.org Git - thirdparty/libvirt.git/commit
Add support for cpu mode attribute
authorJiri Denemark <jdenemar@redhat.com>
Thu, 18 Aug 2011 10:14:36 +0000 (12:14 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Tue, 17 Jan 2012 10:39:23 +0000 (11:39 +0100)
commitf7dd3a4e62354b5ef98fab6f77bfaa124903a775
tree67d35a69bfa581e2ec1ae18f5f6a5786a75b0a44
parenta6f88cbd2d50596ec0a2e9d1bd6fedcaef8e904e
Add support for cpu mode attribute

The mode can be either of "custom" (default), "host-model",
"host-passthrough". The semantics of each mode is described in the
following examples:

- guest CPU is a default model with specified topology:
    <cpu>
      <topology sockets='1' cores='2' threads='1'/>
    </cpu>

- guest CPU matches selected model:
    <cpu mode='custom' match='exact'>
      <model>core2duo</model>
    </cpu>

- guest CPU should be a copy of host CPU as advertised by capabilities
  XML (this is a short cut for manually copying host CPU specification
  from capabilities to domain XML):
    <cpu mode='host-model'/>

  In case a hypervisor does not support the exact host model, libvirt
  automatically falls back to a closest supported CPU model and
  removes/adds features to match host. This behavior can be disabled by
    <cpu mode='host-model'>
      <model fallback='forbid'/>
    </cpu>

- the same as previous returned by virDomainGetXMLDesc with
  VIR_DOMAIN_XML_UPDATE_CPU flag:
    <cpu mode='host-model' match='exact'>
      <model fallback='allow'>Penryn</model>       --+
      <vendor>Intel</vendor>                         |
      <topology sockets='2' cores='4' threads='1'/>  + copied from
      <feature policy='require' name='dca'/>         | capabilities XML
      <feature policy='require' name='xtpr'/>        |
      ...                                          --+
    </cpu>

- guest CPU should be exactly the same as host CPU even in the aspects
  libvirt doesn't model (such domain cannot be migrated unless both
  hosts contain exactly the same CPUs):
    <cpu mode='host-passthrough'/>

- the same as previous returned by virDomainGetXMLDesc with
  VIR_DOMAIN_XML_UPDATE_CPU flag:
    <cpu mode='host-passthrough' match='minimal'>
      <model>Penryn</model>                        --+ copied from caps
      <vendor>Intel</vendor>                         | XML but doesn't
      <topology sockets='2' cores='4' threads='1'/>  | describe all
      <feature policy='require' name='dca'/>         | aspects of the
      <feature policy='require' name='xtpr'/>        | actual guest CPU
      ...                                          --+
    </cpu>
28 files changed:
docs/formatdomain.html.in
docs/schemas/domaincommon.rng
src/conf/capabilities.c
src/conf/cpu_conf.c
src/conf/cpu_conf.h
src/conf/domain_conf.c
src/cpu/cpu.c
tests/cputest.c
tests/cputestdata/x86-baseline-1-result.xml
tests/cputestdata/x86-baseline-2-result.xml
tests/cputestdata/x86-baseline-no-vendor-result.xml
tests/cputestdata/x86-baseline-some-vendors-result.xml
tests/cputestdata/x86-host+guest,model486-result.xml
tests/cputestdata/x86-host+guest,models,Penryn-result.xml
tests/cputestdata/x86-host+guest,models,qemu64-result.xml
tests/cputestdata/x86-host+guest,models-result.xml
tests/cputestdata/x86-host+guest-result.xml
tests/cputestdata/x86-host+guest.xml
tests/cputestdata/x86-host+min.xml
tests/cputestdata/x86-host+nehalem-force-result.xml
tests/cputestdata/x86-host+pentium3.xml
tests/cputestdata/x86-host+strict-force-extra-result.xml
tests/cputestdata/x86-host-better+pentium3,core2duo-result.xml
tests/cputestdata/x86-host-better+pentium3,pentium3-result.xml
tests/cputestdata/x86-host-better+pentium3-result.xml
tests/cputestdata/x86-host-worse+guest-result.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml
tests/testutilsqemu.c