mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
tools/cpuid: Plumb nested_virt down into xc_cpuid_apply_policy()
Nested Virt is the final special case in legacy CPUID handling. Pass the (poorly named) nested_hvm setting down into xc_cpuid_apply_policy() to break the semantic dependency on HVM_PARAM_NESTEDHVM. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Wei Liu <wl@xen.org>
This commit is contained in:
1 parent
50a5215f30
commit
bfcc97c08c
3 files changed
+9
-12
No files matched your search
@@ -1826,7 +1826,7 @@ struct xc_xend_cpuid {
|
||||
* cases, and the generated policy must be compatible with a 4.13.
|
||||
*
|
||||
* Either pass a full new @featureset (and @nr_features), or adjust individual
|
||||
* features (@pae, @itsc).
|
||||
* features (@pae, @itsc, @nested_virt).
|
||||
*
|
||||
* Then (optionally) apply legacy XEND overrides (@xend) to the result.
|
||||
*/
|
||||
@@ -1834,7 +1834,7 @@ int xc_cpuid_apply_policy(xc_interface *xch,
|
||||
uint32_t domid, bool restore,
|
||||
const uint32_t *featureset,
|
||||
unsigned int nr_features, bool pae, bool itsc,
|
||||
const struct xc_xend_cpuid *xend);
|
||||
bool nested_virt, const struct xc_xend_cpuid *xend);
|
||||
int xc_mca_op(xc_interface *xch, struct xen_mc *mc);
|
||||
int xc_mca_op_inject_v2(xc_interface *xch, unsigned int flags,
|
||||
xc_cpumap_t cpumap, unsigned int nr_cpus);
|
||||
|
||||
@@ -427,7 +427,7 @@ static int xc_cpuid_xend_policy(
|
||||
|
||||
int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
|
||||
const uint32_t *featureset, unsigned int nr_features,
|
||||
bool pae, bool itsc,
|
||||
bool pae, bool itsc, bool nested_virt,
|
||||
const struct xc_xend_cpuid *xend)
|
||||
{
|
||||
int rc;
|
||||
@@ -559,7 +559,11 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
|
||||
p->extd.itsc = itsc;
|
||||
|
||||
if ( di.hvm )
|
||||
{
|
||||
p->basic.pae = pae;
|
||||
p->basic.vmx = nested_virt;
|
||||
p->extd.svm = nested_virt;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !di.hvm )
|
||||
@@ -625,14 +629,6 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* These settings are necessary to cause earlier HVM_PARAM_NESTEDHVM
|
||||
* to be reflected correctly in CPUID. Xen will discard these bits if
|
||||
* configuration hasn't been set for the domain.
|
||||
*/
|
||||
p->basic.vmx = true;
|
||||
p->extd.svm = true;
|
||||
}
|
||||
|
||||
rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves);
|
||||
|
||||
@@ -422,6 +422,7 @@ void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore,
|
||||
{
|
||||
bool pae = true;
|
||||
bool itsc;
|
||||
bool nested_virt = libxl_defbool_val(info->nested_hvm);
|
||||
|
||||
/*
|
||||
* For PV guests, PAE is Xen-controlled (it is the 'p' that differentiates
|
||||
@@ -452,7 +453,7 @@ void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore,
|
||||
info->tsc_mode == LIBXL_TSC_MODE_ALWAYS_EMULATE);
|
||||
|
||||
xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0,
|
||||
pae, itsc, info->cpuid);
|
||||
pae, itsc, nested_virt, info->cpuid);
|
||||
}
|
||||
|
||||
static const char *input_names[2] = { "leaf", "subleaf" };
|
||||
|
||||