[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2 00/25] xen/x86: Per-domain CPUID policies



Presented herewith is v2 of the first part of improvement work to support full
per-domain CPUID policies.  More work is pending on top of this series.

This series is available in git form from:

  
http://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=shortlog;h=refs/heads/xen-cpuid-v2

Testing wise, this series has been bisected, checking at each stage that the
guest-visibile CPUID information is identical (other than reported-frequency
values) for different VMs in a number of configurations.

All review comment from v1 have been addressed.  Headline changes are the
dynamic generation of bitfield names, and recalculation of policy in more
places.

Andrew Cooper (25):
  x86/cpuid: Introduce guest_cpuid() and struct cpuid_leaf
  x86/cpuid: Introduce struct cpuid_policy
  x86/cpuid: Move featuresets into struct cpuid_policy
  x86/cpuid: Allocate a CPUID policy for every domain
  x86/cpuid: Recalculate a domains CPUID policy when appropriate
  x86/hvm: Dispatch cpuid_viridian_leaves() from guest_cpuid()
  x86/cpuid: Dispatch cpuid_hypervisor_leaves() from guest_cpuid()
  x86/cpuid: Introduce named feature bitfields
  x86/hvm: Improve hvm_efer_valid() using named features
  x86/hvm: Improve CR4 verification using named features
  x86/vvmx: Use hvm_cr4_guest_valid_bits() to calculate MSR_IA32_VMX_CR4_FIXED1
  x86/pv: Improve pv_cpuid() using named features
  x86/hvm: Improve CPUID and MSR handling using named features
  x86/svm: Improvements using named features
  x86/pv: Use per-domain policy information when calculating the cpumasks
  x86/pv: Use per-domain policy information in pv_cpuid()
  x86/hvm: Use per-domain policy information in hvm_cpuid()
  x86/cpuid: Drop the temporary linear feature bitmap from struct cpuid_policy
  x86/cpuid: Calculate appropriate max_leaf values for the global policies
  x86/cpuid: Perform max_leaf calculations in guest_cpuid()
  x86/cpuid: Move all leaf 7 handling into guest_cpuid()
  x86/hvm: Use guest_cpuid() rather than hvm_cpuid()
  x86/svm: Use guest_cpuid() rather than hvm_cpuid()
  x86/cpuid: Effectively remove pv_cpuid() and hvm_cpuid()
  x86/cpuid: Alter the legacy-path prototypes to match guest_cpuid()

 tools/tests/x86_emulator/x86_emulate.c |  15 +-
 tools/tests/x86_emulator/x86_emulate.h |  60 ++-
 xen/arch/arm/domctl.c                  |   5 +
 xen/arch/x86/cpuid.c                   | 860 ++++++++++++++++++++++++++++++---
 xen/arch/x86/domain.c                  |  11 +-
 xen/arch/x86/domctl.c                  |  41 +-
 xen/arch/x86/hvm/emulate.c             |  10 +-
 xen/arch/x86/hvm/hvm.c                 | 518 +++-----------------
 xen/arch/x86/hvm/mtrr.c                |  13 +-
 xen/arch/x86/hvm/nestedhvm.c           |   6 +-
 xen/arch/x86/hvm/svm/svm.c             |  63 +--
 xen/arch/x86/hvm/viridian.c            |  65 ++-
 xen/arch/x86/hvm/vmx/vmx.c             |  35 +-
 xen/arch/x86/hvm/vmx/vvmx.c            |  58 +--
 xen/arch/x86/setup.c                   |   4 +-
 xen/arch/x86/sysctl.c                  |  21 +-
 xen/arch/x86/time.c                    |   2 +
 xen/arch/x86/traps.c                   | 472 ++----------------
 xen/arch/x86/x86_emulate/x86_emulate.c |  34 +-
 xen/arch/x86/x86_emulate/x86_emulate.h |  12 +-
 xen/common/domctl.c                    |   4 -
 xen/include/asm-x86/cpufeature.h       |   1 +
 xen/include/asm-x86/cpuid.h            | 194 +++++++-
 xen/include/asm-x86/domain.h           |   5 +-
 xen/include/asm-x86/hvm/emulate.h      |   8 +-
 xen/include/asm-x86/hvm/hvm.h          |   4 +-
 xen/include/asm-x86/hvm/nestedhvm.h    |   2 +-
 xen/include/asm-x86/hvm/vcpu.h         |  10 +-
 xen/include/asm-x86/hvm/viridian.h     |   9 +-
 xen/include/asm-x86/mm.h               |   4 +-
 xen/include/asm-x86/processor.h        |   6 +-
 xen/tools/gen-cpuid.py                 |  32 ++
 32 files changed, 1357 insertions(+), 1227 deletions(-)

-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.