[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools/cpuid: Plumb nested_virt down into xc_cpuid_apply_policy()
commit bfcc97c08c2258316d1cd92c23a441d97ad6ff4e Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Sep 29 14:48:52 2020 +0100 Commit: Wei Liu <wl@xxxxxxx> CommitDate: Wed Sep 30 15:18:08 2020 +0000 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@xxxxxxxxxx> Acked-by: Wei Liu <wl@xxxxxxx> --- tools/libs/ctrl/include/xenctrl.h | 4 ++-- tools/libs/guest/xg_cpuid_x86.c | 14 +++++--------- tools/libxl/libxl_cpuid.c | 3 ++- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/tools/libs/ctrl/include/xenctrl.h b/tools/libs/ctrl/include/xenctrl.h index 73e9535fc8..ba70bec9c4 100644 --- a/tools/libs/ctrl/include/xenctrl.h +++ b/tools/libs/ctrl/include/xenctrl.h @@ -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); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index dc50106975..aae6931a11 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -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); diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c index f54eb83a90..08e85dcffb 100644 --- a/tools/libxl/libxl_cpuid.c +++ b/tools/libxl/libxl_cpuid.c @@ -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" }; -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |