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

Re: [PATCH v2 14/21] libs/guest: introduce helper to check cpu policy compatibility


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Thu, 22 Apr 2021 10:22:37 +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=rsYFj6pL/DkA8o5Fac6fLwB9XME9+iCdQ5VY7V6Nmuk=; b=M6qpfb79Ux+nakg2IhQxpuFLBskfNCdNOdcJF+XV2IfpI1rm+Ee11tu+R2xlzij4jY1KAkMcSEukQvkB1hVPIFOgtXjD1yL5XuPl8Bs9SV8Du2s+aEYVBf5pIubGik1Xcg8wbnTzuQc+pVTEeDp8KHKIJ4qpYRrsdCr6Fdyma+VoP86biTzg9P9jDf1icvmqjlh/URQkEZxXM0TufyX6kP4GKM+VSmj1RhrSxqiVkzKdTU2Tu/6RcobhogmeTT2+dtIoNt/xxhWBhjS9fd2Wo0Wn/zTkv1nVce31hgnlKv3KeCPZBXJ/t/XoJG7DPLFQCiNgrMZ0C12T3/XF6fS6yw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lg9WDmQalOeFAM/a5ZPJBKKJFyCVl7N5JMYKQ2+TaGqsCfphMmLMvIHjhDGnoF2MzU4ZQMCAqA0TLI2bSRJA+GishIUJVKoIl63ivvWSMsjz+j2bRS/wc9r1vuCMIa3Mn25dztp5/+quKAod4/zxuekK17t3M8noZnNbcxEIPXrSFc35o06UXXACEgqFk6drfytqpc1MAPomuYTzphrymqz1bQuErEmyLlY9HZVVCp6W+X1p5NwZ/bQPSddj2KN5sK45wBspRu75rLwTD45OevSOwUqdY4iAoGoexQvyzrGZxoDkzJI+E7PX/uibqE3rdK3T3ab5fvdcEVDBbCc4Og==
  • Authentication-results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 22 Apr 2021 08:23:01 +0000
  • Ironport-hdrordr: A9a23:fZdtrK5+i0QBd+PYvwPXwTuBI+orLtY04lQ7vn1ZYQBJc8Ceis CllOka0xixszoKRHQ8g7m7VZWoa3m0z/5IyKMWOqqvWxSjhXuwIOhZnO3f6hDDOwm7zO5S0q 98b7NzYeebMXFWhdv3iTPWL/8O29+CmZrHuc7/yDNXQRhue+Vc6W5Ce2SmO2lXYCUDOpYjDp qb4aN81l2dUFAadN6yCHVAf8WrnaypqLvcbRQLBwEq5WC15FvF1JfAHxeVxRsYWT9UqI1SlF TtqADl+r6l98iy1x607QTuxq5Lk9jswMYrPr3ptuEpLFzX6zqAVcBadJCp+Bs0p+yu71hCqq iynz4Qe/5dxlmUUmW8oR7G0xTt3jA0+xbZuCGlqEqmm+PVbnYXDNdAmJJ4f3LimjsdleA56o 1n9Sa4sIdaFhzJliiV3am5azha0nCajFBntMx7tQ0nbaIuLIV/gKZawWZuVLAHJy7+4JBPKp gSMOjsoMx4XHnfU2rUpQBUsaSRd0V2JDiqaG4YtPeY1jBH9UoJs3cw9YgkknAM+IlVceg+28 30dqBhlLR5RsQLd65KBOAYXcutCmDWKCi8Sl6vHQ==
  • Ironport-sdr: 1/LkR1rAdFP0ghiLJ7lgKEFK0gkb3U82qFJBRnv3Cpwa4Vpur3aEY9olnfooT5eQp+e1OdfxlT xZ2Pb3lcKIvDYyHmuhqrdzEShp/t0CyWw0A3KqwNOQ3FxTlTHuyb932YS0ImImRGVdRvT63FyO IqOTbdiqMlcjBrgjfidPYh1xU3b5fj4nerWB+a9B/GD4crXpml2ntGm6kuelSrlpQOc3MRiFjS Q/BT1r3erYtcMdo6f6hkzjXdQEliC7GGmxI30DPqhCYlaYY5WkZncEZXJEKG6iVJd7j0cyAmGt SJU=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Wed, Apr 14, 2021 at 03:36:54PM +0200, Jan Beulich wrote:
> On 13.04.2021 16:01, Roger Pau Monne wrote:
> > --- a/tools/libs/guest/xg_cpuid_x86.c
> > +++ b/tools/libs/guest/xg_cpuid_x86.c
> > @@ -925,3 +925,22 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, 
> > xc_cpu_policy_t policy,
> >  
> >      return rc;
> >  }
> > +
> > +bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t 
> > host,
> > +                                 const xc_cpu_policy_t guest)
> > +{
> > +    struct cpu_policy_errors err = INIT_CPU_POLICY_ERRORS;
> > +    struct cpu_policy h = { &host->cpuid, &host->msr };
> > +    struct cpu_policy g = { &guest->cpuid, &guest->msr };
> > +    int rc = x86_cpu_policies_are_compatible(&h, &g, &err);
> > +
> > +    if ( !rc )
> > +        return true;
> > +
> > +    if ( err.leaf != -1 )
> > +        ERROR("Leaf %#x subleaf %#x is not compatible", err.leaf, 
> > err.subleaf);
> > +    if ( err.msr != -1 )
> > +        ERROR("MSR index %#x is not compatible", err.msr);
> 
> Personally I'm against making assumptions like these ones about what
> (in this case) INIT_CPU_POLICY_ERRORS actually expands to (i.e. three
> times -1). I can see how alternatives to this are quickly going to
> get ugly, so I'll leave it to others to judge.

Would you like me to define a separate POLICY_ERROR? ie:

#define INIT_CPU_POLICY_ERROR -1
#define INIT_CPU_POLICY_ERRORS { INIT_CPU_POLICY_ERROR, \
                                 INIT_CPU_POLICY_ERROR, \
                                 INIT_CPU_POLICY_ERROR }

We already have a bunch of open coded -1 checks anyway, but might
prevent new ones from appearing.

Thanks, Roger.



 


Rackspace

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