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

[PATCH v2 00/21] libs/guest: new CPUID/MSR interface


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Tue, 13 Apr 2021 16:01:18 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ltsHBeDJ2qJwdwl/SHwh1KG+uRV1emL1KyXCwmkrGU=; b=QXu0lwo9jc1kPiTynZvTYCNiQUkBnH4ayQnY3BE0kJA2+GmxOndV+bOUeYDgXriiyYIUW70V/bMtGzCmLVlkUvMarRLdA4hCpOUJ6DXKa9X0Mm4RDF5e/d6nqEupUb+ACsO2hHi2B5NG6bjYYDH6AYVsSTP9QGcF438C3BEQQrr4I81hGDbouI0ju1i6cCnMWTev3X1AOfnTJzRmY0mV6aGcDUdyl5ZnHZ5+8AUyiLKqde+T5TadTcV4B/WBYitfAK3Tep9iDn4uQe2i7iYwpbS7eCSxMaiwEBK4uFMyht0jiMeRphYgmPYbCvFZrV+5peKmsXDqt3bbeVPpnD4Fsw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dbEi3TyS79tS264An7mVnZ2Y4Nj7OLRZVi3bsFQjwoETT9c2p+uZpI0BWDn23WUnBb10LYHcyZjaN/0f0hVDd+zGMTRUdyZ83Qm07xrRcPt6Mun5I3WDU+MMVpVx8hAkhov8j0SWwLWWVIc0/PC0gRE3qi4/7lai9w5Zkzd2278nuag3pqdEZmALdosqN0BfaMTCa0wse8cacnwznZ+/fsfwtzMmYB53V71ENItXr8AAXd9niaxg/dBrx1qv2ISpebFbfaGYwA/LjpHCBoXbwhJx+BAYdMBiS+T/8pCPynBVPZPUbGukk4pGUFAqgf6ULzRYew1zhIiLYJRC3kNpYQ==
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monne <roger.pau@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>
  • Delivery-date: Tue, 13 Apr 2021 14:02:15 +0000
  • Ironport-hdrordr: A9a23:Fq043KuUnIwt9+rISDotHjvK7skCrIMji2hD6mlwRA09T+Wxi9 2ukPMH1RX9lTYWXzUalcqdPbSbKEmwybde544NMbC+GDT3oWfAFvAG0aLO4R3FXxf/+OlUyL t6f8FFYuHYIFBmga/BjzWQPM0nxLC8npyAocf74zNTQRpxa6dmhj0JaDqzNkFtXgFJCd4YOf OnhvZvnDardXQJYsnTPBBsM9TrnNHXiIngJScPGh9P0mKzpAm14733GQXw5GZ8bxpzx94ZkF TtokjCyYiI99q6zRLd0GG71eUtpPLRjuFtKebJpswcKjDHghulaoJ7S9S5zU0IidDq0nkGup 3hpAohItRS5hrqDx2IiCqo4SbM+nIP7GLv0lCRi3eLm72HeBsKT/BvqKgcVzmx0TtFgPhMlJ hl8kjcir9sSTTHpyj578igbWATqmOE5UAMvMRWs2ZSSuIlGdhshL1axmx5OrEaEhn37Yg2ed Med/301bJtfVSWY2uxhBgI/PWcGnA6HhKxSkMfoMCi0z9PgHBjz0cDrfZv50s9yA==
  • Ironport-sdr: rbawLs5aBlFA+zyCybKkI4eXJEjsv/akIxLZAWhmupSCLjcvmg3m3vZ3xNM0o/U3Y5ZUz0pRi6 HCWQKVd5nKpt9nhmon9GDN3F3wZJzW6pBsUyyD0cK4a01NKnQVsuv8JArlmWr/DrSEgNJlj4zR erqkKQX4voV3/w/YSKTcQC6TIjvGBtprxGzGoC9TxIeeqxr3r28gF7lgWsBcI6SHCuNTWcZts6 QuXdY2X/iv9vGyi5OL1dqld1RDH6G4WUxA+xW9VjT71XakA1YYAMx1Y5rnhnKtly1jdIjchjB7 Lko=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hello,

The following series introduces a new CPUID/MSR interface for the
xenguest library. Such interface handles both CPUID and MSRs using the
same opaque object, and provides some helpers for the user to peek or
modify such data without exposing the backing type. This is useful for
future development as CPUID and MSRs are closely related, so it makes
handling those much easier if they are inside the same object (ie: a
change to a CPUID bit might expose or hide an MSR).

In this patch series libxl and other in tree users have been switched to
use the new interface, so it shouldn't result in any functional change
from a user point of view.

Note there are still some missing pieces likely. The way to modify CPUID
data is not ideal, as it requires fetching a leaf and modifying it
directly. We might want some kind of interface in order to set specific
CPUID features more easily, but that's to be discussed, and would be
done as a follow up series.

Thanks, Roger.

Roger Pau Monne (21):
  libxl: don't ignore the return value from xc_cpuid_apply_policy
  libs/guest: rename xc_get_cpu_policy_size to xc_cpu_policy_get_size
  libs/guest: introduce xc_cpu_policy_t
  libs/guest: introduce helper to fetch a system cpu policy
  libs/guest: introduce helper to fetch a domain cpu policy
  libs/guest: introduce helper to serialize a cpu policy
  tools: switch existing users of xc_get_{system,domain}_cpu_policy
  libs/guest: introduce a helper to apply a cpu policy to a domain
  libs/guest: allow fetching a specific CPUID leaf from a cpu policy
  tests/cpu-policy: add sorted MSR test
  libs/guest: allow fetching a specific MSR entry from a cpu policy
  libs/guest: allow updating a cpu policy CPUID data
  libs/guest: allow updating a cpu policy MSR data
  libs/guest: introduce helper to check cpu policy compatibility
  libs/guest: obtain a compatible cpu policy from two input ones
  libs/guest: make a cpu policy compatible with older Xen versions
  libs/guest: introduce helper set cpu topology in cpu policy
  libs/guest: rework xc_cpuid_xend_policy
  libs/guest: apply a featureset into a cpu policy
  libs/{light,guest}: implement xc_cpuid_apply_policy in libxl
  libs/guest: (re)move xc_cpu_policy_apply_cpuid

 tools/include/libxl.h                    |   6 +-
 tools/include/xen-tools/libs.h           |   5 +
 tools/include/xenctrl.h                  | 102 ++--
 tools/libs/guest/Makefile                |   2 +-
 tools/libs/guest/xg_cpuid_x86.c          | 710 +++++++++++++++--------
 tools/libs/guest/xg_sr_common_x86.c      |  17 +-
 tools/libs/light/libxl_cpuid.c           | 230 +++++++-
 tools/libs/light/libxl_create.c          |   5 +-
 tools/libs/light/libxl_dom.c             |   2 +-
 tools/libs/light/libxl_internal.h        |  32 +-
 tools/libs/light/libxl_nocpuid.c         |   5 +-
 tools/misc/xen-cpuid.c                   |  23 +-
 tools/tests/cpu-policy/test-cpu-policy.c |  17 +
 13 files changed, 821 insertions(+), 335 deletions(-)

-- 
2.30.1




 


Rackspace

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