[libvirt] [PATCH v2 00/22] Fix host-model if the chosen CPU model has more features in QEMU compared to our cpu_map.xml

Jiri Denemark posted 22 patches 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1507918307.git.jdenemar@redhat.com
src/conf/domain_capabilities.c                     |   48 +-
src/conf/domain_capabilities.h                     |   11 +-
src/cpu/cpu.c                                      |   89 +-
src/cpu/cpu.h                                      |   30 +-
src/cpu/cpu_arm.c                                  |    3 +-
src/cpu/cpu_ppc64.c                                |   14 +-
src/cpu/cpu_x86.c                                  |  109 +-
src/libvirt_private.syms                           |    1 +
src/libxl/libxl_capabilities.c                     |    2 +-
src/libxl/libxl_driver.c                           |    2 +-
src/qemu/qemu_capabilities.c                       |  123 +--
src/qemu/qemu_capabilities.h                       |    6 +-
src/qemu/qemu_capspriv.h                           |    5 +
src/qemu/qemu_driver.c                             |    2 +-
src/qemu/qemu_monitor.c                            |    2 +
src/qemu/qemu_monitor.h                            |    1 +
src/qemu/qemu_monitor_json.c                       |   28 +-
src/qemu/qemu_process.c                            |    9 +-
src/test/test_driver.c                             |    2 +-
src/util/virstring.c                               |   37 +
src/util/virstring.h                               |    3 +
tests/cputest.c                                    |  325 ++++--
tests/cputestdata/cpu-cpuid.py                     |   26 +-
tests/cputestdata/cpu-gather.sh                    |    1 +
tests/cputestdata/cpu-parse.sh                     |    2 +-
tests/cputestdata/cpu-reformat.py                  |    9 +
tests/cputestdata/x86_64-cpuid-Core-i5-2540M.json  |  362 +++++++
.../x86_64-cpuid-Core-i7-2600-disabled.xml         |    1 -
.../x86_64-cpuid-Core-i7-2600-enabled.xml          |    1 +
.../cputestdata/x86_64-cpuid-Core-i7-2600-json.xml |    1 +
...x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml |    6 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml |    8 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml   |   25 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml    |   25 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml    |   11 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt.json        |  615 +++++++++++
.../x86_64-cpuid-Core-i7-2600-xsaveopt.xml         |   33 +
tests/cputestdata/x86_64-cpuid-Core-i7-2600.json   |  496 ++++++++-
tests/cputestdata/x86_64-cpuid-Core-i7-2600.xml    |    6 +-
.../x86_64-cpuid-Xeon-E3-1245-disabled.xml         |    1 -
.../x86_64-cpuid-Xeon-E3-1245-enabled.xml          |    2 +-
.../cputestdata/x86_64-cpuid-Xeon-E3-1245-json.xml |    1 +
tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.json   |  712 +++++++++----
tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.xml    |    7 +-
.../x86_64-cpuid-Xeon-E7-4830-disabled.xml         |    5 +
.../x86_64-cpuid-Xeon-E7-4830-enabled.xml          |    8 +
.../x86_64-cpuid-Xeon-E7-4830-guest.xml            |   28 +
.../cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml |   29 +
.../cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml |   14 +
tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json   |  657 ++++++++++++
tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml    |   30 +
tests/domaincapstest.c                             |    6 +-
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml   | 1102 ++++++++++++++++++--
tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml  |  236 ++++-
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml   |  154 ++-
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml   |  154 ++-
56 files changed, 4938 insertions(+), 688 deletions(-)
create mode 100755 tests/cputestdata/cpu-reformat.py
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml
[libvirt] [PATCH v2 00/22] Fix host-model if the chosen CPU model has more features in QEMU compared to our cpu_map.xml
Posted by Jiri Denemark 6 years, 6 months ago
When decoding CPUID data to virCPUDef we need to be careful about using
a CPU model which cannot be directly used on the current host. Normally,
libvirt would notice the features which prevent the model from being
usable and it would disable them in the computed virCPUDef, but this
won't work in case the definition of the CPU model in QEMU contains more
features than what we have in cpu_map.xml. We need to count with the
usability blockers we got from QEMU and explicitly disable all of them
to make the computed virCPUDef usable.

https://bugzilla.redhat.com/show_bug.cgi?id=1464832

See individual patches for diff from version 1. However, most patches
were acked in v1 and were not changed.

Jiri Denemark (22):
  util: Introduce virStringListCopy
  conf: Add usability blockers to virDomainCapsCPUModel
  qemu: Store CPU usability blockers in caps cache
  qemu: Parse unavailable features for CPU models
  cpu: Use virDomainCapsCPUModelsPtr in cpu driver APIs
  cpu: Drop unused parameter from cpuDecode
  conf: Introduce virDomainCapsCPUModelsGet
  cpu_x86: Move x86FeatureFind* to avoid forward prototypes
  cpu_x86: Disable blockers from unusable CPU models
  cputest: Replace bool with cpuTestCPUIDJson enum
  cputest: Avoid calling json_reformat in cpu-parse.sh
  cputest: Print correct feature in virCPUUpdateLive test
  cputest: Test CPU usability blockers
  cputest: Separate QEMUCaps creation from cpuTestCPUIDJson
  cputest: Use CPU models from QEMU when available
  cputest: Add query-cpu-definitions reply for Core-i5-2540M
  cputest: Add CPUID data for Intel(R) Xeon(R) CPU E7-4830
  cputest: Add query-cpu-definitions reply for Xeon-E7-4830
  cputest: Update Xeon-E3-1245 data
  cputest: Add query-cpu-definitions reply for Xeon-E3-1245
  cputest: Update Core-i7-2600 data
  cputest: Make a crippled version of Core-i7-2600

 src/conf/domain_capabilities.c                     |   48 +-
 src/conf/domain_capabilities.h                     |   11 +-
 src/cpu/cpu.c                                      |   89 +-
 src/cpu/cpu.h                                      |   30 +-
 src/cpu/cpu_arm.c                                  |    3 +-
 src/cpu/cpu_ppc64.c                                |   14 +-
 src/cpu/cpu_x86.c                                  |  109 +-
 src/libvirt_private.syms                           |    1 +
 src/libxl/libxl_capabilities.c                     |    2 +-
 src/libxl/libxl_driver.c                           |    2 +-
 src/qemu/qemu_capabilities.c                       |  123 +--
 src/qemu/qemu_capabilities.h                       |    6 +-
 src/qemu/qemu_capspriv.h                           |    5 +
 src/qemu/qemu_driver.c                             |    2 +-
 src/qemu/qemu_monitor.c                            |    2 +
 src/qemu/qemu_monitor.h                            |    1 +
 src/qemu/qemu_monitor_json.c                       |   28 +-
 src/qemu/qemu_process.c                            |    9 +-
 src/test/test_driver.c                             |    2 +-
 src/util/virstring.c                               |   37 +
 src/util/virstring.h                               |    3 +
 tests/cputest.c                                    |  325 ++++--
 tests/cputestdata/cpu-cpuid.py                     |   26 +-
 tests/cputestdata/cpu-gather.sh                    |    1 +
 tests/cputestdata/cpu-parse.sh                     |    2 +-
 tests/cputestdata/cpu-reformat.py                  |    9 +
 tests/cputestdata/x86_64-cpuid-Core-i5-2540M.json  |  362 +++++++
 .../x86_64-cpuid-Core-i7-2600-disabled.xml         |    1 -
 .../x86_64-cpuid-Core-i7-2600-enabled.xml          |    1 +
 .../cputestdata/x86_64-cpuid-Core-i7-2600-json.xml |    1 +
 ...x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml |    6 +
 .../x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml |    8 +
 .../x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml   |   25 +
 .../x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml    |   25 +
 .../x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml    |   11 +
 .../x86_64-cpuid-Core-i7-2600-xsaveopt.json        |  615 +++++++++++
 .../x86_64-cpuid-Core-i7-2600-xsaveopt.xml         |   33 +
 tests/cputestdata/x86_64-cpuid-Core-i7-2600.json   |  496 ++++++++-
 tests/cputestdata/x86_64-cpuid-Core-i7-2600.xml    |    6 +-
 .../x86_64-cpuid-Xeon-E3-1245-disabled.xml         |    1 -
 .../x86_64-cpuid-Xeon-E3-1245-enabled.xml          |    2 +-
 .../cputestdata/x86_64-cpuid-Xeon-E3-1245-json.xml |    1 +
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.json   |  712 +++++++++----
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.xml    |    7 +-
 .../x86_64-cpuid-Xeon-E7-4830-disabled.xml         |    5 +
 .../x86_64-cpuid-Xeon-E7-4830-enabled.xml          |    8 +
 .../x86_64-cpuid-Xeon-E7-4830-guest.xml            |   28 +
 .../cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml |   29 +
 .../cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml |   14 +
 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json   |  657 ++++++++++++
 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml    |   30 +
 tests/domaincapstest.c                             |    6 +-
 tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml   | 1102 ++++++++++++++++++--
 tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml  |  236 ++++-
 tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml   |  154 ++-
 tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml   |  154 ++-
 56 files changed, 4938 insertions(+), 688 deletions(-)
 create mode 100755 tests/cputestdata/cpu-reformat.py
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.json
 create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-disabled.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-enabled.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-guest.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json
 create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml

-- 
2.14.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2 00/22] Fix host-model if the chosen CPU model has more features in QEMU compared to our cpu_map.xml
Posted by John Ferlan 6 years, 6 months ago

On 10/13/2017 02:14 PM, Jiri Denemark wrote:
> When decoding CPUID data to virCPUDef we need to be careful about using
> a CPU model which cannot be directly used on the current host. Normally,
> libvirt would notice the features which prevent the model from being
> usable and it would disable them in the computed virCPUDef, but this
> won't work in case the definition of the CPU model in QEMU contains more
> features than what we have in cpu_map.xml. We need to count with the
> usability blockers we got from QEMU and explicitly disable all of them
> to make the computed virCPUDef usable.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1464832
> 
> See individual patches for diff from version 1. However, most patches
> were acked in v1 and were not changed.
> 

ACK series (to be official I suppose...)

John

> Jiri Denemark (22):
>   util: Introduce virStringListCopy
>   conf: Add usability blockers to virDomainCapsCPUModel
>   qemu: Store CPU usability blockers in caps cache
>   qemu: Parse unavailable features for CPU models
>   cpu: Use virDomainCapsCPUModelsPtr in cpu driver APIs
>   cpu: Drop unused parameter from cpuDecode
>   conf: Introduce virDomainCapsCPUModelsGet
>   cpu_x86: Move x86FeatureFind* to avoid forward prototypes
>   cpu_x86: Disable blockers from unusable CPU models
>   cputest: Replace bool with cpuTestCPUIDJson enum
>   cputest: Avoid calling json_reformat in cpu-parse.sh
>   cputest: Print correct feature in virCPUUpdateLive test
>   cputest: Test CPU usability blockers
>   cputest: Separate QEMUCaps creation from cpuTestCPUIDJson
>   cputest: Use CPU models from QEMU when available
>   cputest: Add query-cpu-definitions reply for Core-i5-2540M
>   cputest: Add CPUID data for Intel(R) Xeon(R) CPU E7-4830
>   cputest: Add query-cpu-definitions reply for Xeon-E7-4830
>   cputest: Update Xeon-E3-1245 data
>   cputest: Add query-cpu-definitions reply for Xeon-E3-1245
>   cputest: Update Core-i7-2600 data
>   cputest: Make a crippled version of Core-i7-2600
> 
>  src/conf/domain_capabilities.c                     |   48 +-
>  src/conf/domain_capabilities.h                     |   11 +-
>  src/cpu/cpu.c                                      |   89 +-
>  src/cpu/cpu.h                                      |   30 +-
>  src/cpu/cpu_arm.c                                  |    3 +-
>  src/cpu/cpu_ppc64.c                                |   14 +-
>  src/cpu/cpu_x86.c                                  |  109 +-
>  src/libvirt_private.syms                           |    1 +
>  src/libxl/libxl_capabilities.c                     |    2 +-
>  src/libxl/libxl_driver.c                           |    2 +-
>  src/qemu/qemu_capabilities.c                       |  123 +--
>  src/qemu/qemu_capabilities.h                       |    6 +-
>  src/qemu/qemu_capspriv.h                           |    5 +
>  src/qemu/qemu_driver.c                             |    2 +-
>  src/qemu/qemu_monitor.c                            |    2 +
>  src/qemu/qemu_monitor.h                            |    1 +
>  src/qemu/qemu_monitor_json.c                       |   28 +-
>  src/qemu/qemu_process.c                            |    9 +-
>  src/test/test_driver.c                             |    2 +-
>  src/util/virstring.c                               |   37 +
>  src/util/virstring.h                               |    3 +
>  tests/cputest.c                                    |  325 ++++--
>  tests/cputestdata/cpu-cpuid.py                     |   26 +-
>  tests/cputestdata/cpu-gather.sh                    |    1 +
>  tests/cputestdata/cpu-parse.sh                     |    2 +-
>  tests/cputestdata/cpu-reformat.py                  |    9 +
>  tests/cputestdata/x86_64-cpuid-Core-i5-2540M.json  |  362 +++++++
>  .../x86_64-cpuid-Core-i7-2600-disabled.xml         |    1 -
>  .../x86_64-cpuid-Core-i7-2600-enabled.xml          |    1 +
>  .../cputestdata/x86_64-cpuid-Core-i7-2600-json.xml |    1 +
>  ...x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml |    6 +
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml |    8 +
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml   |   25 +
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml    |   25 +
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml    |   11 +
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt.json        |  615 +++++++++++
>  .../x86_64-cpuid-Core-i7-2600-xsaveopt.xml         |   33 +
>  tests/cputestdata/x86_64-cpuid-Core-i7-2600.json   |  496 ++++++++-
>  tests/cputestdata/x86_64-cpuid-Core-i7-2600.xml    |    6 +-
>  .../x86_64-cpuid-Xeon-E3-1245-disabled.xml         |    1 -
>  .../x86_64-cpuid-Xeon-E3-1245-enabled.xml          |    2 +-
>  .../cputestdata/x86_64-cpuid-Xeon-E3-1245-json.xml |    1 +
>  tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.json   |  712 +++++++++----
>  tests/cputestdata/x86_64-cpuid-Xeon-E3-1245.xml    |    7 +-
>  .../x86_64-cpuid-Xeon-E7-4830-disabled.xml         |    5 +
>  .../x86_64-cpuid-Xeon-E7-4830-enabled.xml          |    8 +
>  .../x86_64-cpuid-Xeon-E7-4830-guest.xml            |   28 +
>  .../cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml |   29 +
>  .../cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml |   14 +
>  tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json   |  657 ++++++++++++
>  tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml    |   30 +
>  tests/domaincapstest.c                             |    6 +-
>  tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml   | 1102 ++++++++++++++++++--
>  tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml  |  236 ++++-
>  tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml   |  154 ++-
>  tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml   |  154 ++-
>  56 files changed, 4938 insertions(+), 688 deletions(-)
>  create mode 100755 tests/cputestdata/cpu-reformat.py
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-disabled.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-enabled.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-guest.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-host.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt-json.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.json
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-disabled.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-enabled.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-guest.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-host.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830-json.xml
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.json
>  create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.xml
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2 00/22] Fix host-model if the chosen CPU model has more features in QEMU compared to our cpu_map.xml
Posted by Jiri Denemark 6 years, 6 months ago
On Fri, Oct 13, 2017 at 16:46:57 -0400, John Ferlan wrote:
> 
> 
> On 10/13/2017 02:14 PM, Jiri Denemark wrote:
> > When decoding CPUID data to virCPUDef we need to be careful about using
> > a CPU model which cannot be directly used on the current host. Normally,
> > libvirt would notice the features which prevent the model from being
> > usable and it would disable them in the computed virCPUDef, but this
> > won't work in case the definition of the CPU model in QEMU contains more
> > features than what we have in cpu_map.xml. We need to count with the
> > usability blockers we got from QEMU and explicitly disable all of them
> > to make the computed virCPUDef usable.
> > 
> > https://bugzilla.redhat.com/show_bug.cgi?id=1464832
> > 
> > See individual patches for diff from version 1. However, most patches
> > were acked in v1 and were not changed.
> > 
> 
> ACK series (to be official I suppose...)

Pushed, thanks for the review.

Jirka

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list