[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] sysctl: report shadow paging capability
commit d974f321a7996e149e71f8773ac8d3448d3a07b7 Author: Roger Pau Monne <roger.pau@xxxxxxxxxx> AuthorDate: Tue Sep 10 17:25:38 2019 +0200 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Sep 12 12:27:45 2019 +0100 sysctl: report shadow paging capability Report whether shadow paging is supported by the hypervisor, since it can be disabled at build time. Reuse and tweak LIBXL_HAVE_PHYSINFO_CAP_HAP as it hasn't appeared in a released version of Xen yet. Requested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- tools/libxl/libxl.c | 2 ++ tools/libxl/libxl.h | 8 ++++---- tools/libxl/libxl_create.c | 10 +++++++++- tools/libxl/libxl_types.idl | 1 + tools/ocaml/libs/xc/xenctrl.ml | 1 + tools/ocaml/libs/xc/xenctrl.mli | 1 + tools/xl/xl_info.c | 5 +++-- xen/arch/x86/sysctl.c | 2 ++ xen/include/public/sysctl.h | 5 ++++- 9 files changed, 27 insertions(+), 8 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 5c0fcf320e..57073c06d5 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -400,6 +400,8 @@ int libxl_get_physinfo(libxl_ctx *ctx, libxl_physinfo *physinfo) physinfo->cap_hvm_directio = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_directio); physinfo->cap_hap = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_hap); + physinfo->cap_shadow = + !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_shadow); GC_FREE; return 0; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 3ff67792a7..466df2cdf5 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -395,11 +395,11 @@ #define LIBXL_HAVE_EXTENDED_VKB 1 /* - * LIBXL_HAVE_PHYSINFO_CAP_HAP indicates that libxl_physinfo has a cap_hap - * field that indicates whether the hardware supports Hardware Assisted - * Paging. + * LIBXL_HAVE_PHYSINFO_CAP_HAP_SHADOW indicates that libxl_physinfo has + * cap_hap and cap_shadow fields reflecting the hardware and Xen availability + * of Hardware Assisted, and Shadow paging support. */ -#define LIBXL_HAVE_PHYSINFO_CAP_HAP 1 +#define LIBXL_HAVE_PHYSINFO_CAP_HAP_SHADOW 1 /* * libxl ABI compatibility diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 3b45065597..59dbcb50a0 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -44,7 +44,15 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc, if (rc) return rc; - libxl_defbool_setdefault(&c_info->hap, info.cap_hap); + if (info.cap_hap) + libxl_defbool_setdefault(&c_info->hap, true); + else if (info.cap_shadow) + libxl_defbool_setdefault(&c_info->hap, false); + else { + LOG(ERROR, "neither hap nor shadow paging available"); + return ERROR_INVAL; + } + libxl_defbool_setdefault(&c_info->oos, true); } diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 9e1f8515d3..6f431baec2 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -1026,6 +1026,7 @@ libxl_physinfo = Struct("physinfo", [ ("cap_pv", bool), ("cap_hvm_directio", bool), # No longer HVM specific ("cap_hap", bool), + ("cap_shadow", bool), ], dir=DIR_OUT) libxl_connectorinfo = Struct("connectorinfo", [ diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml index bfb3d8e181..43aafa7e22 100644 --- a/tools/ocaml/libs/xc/xenctrl.ml +++ b/tools/ocaml/libs/xc/xenctrl.ml @@ -108,6 +108,7 @@ type physinfo_cap_flag = | CAP_PV | CAP_DirectIO | CAP_HAP + | CAP_Shadow type physinfo = { diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli index 8bc36ec8f6..1bcfa3f839 100644 --- a/tools/ocaml/libs/xc/xenctrl.mli +++ b/tools/ocaml/libs/xc/xenctrl.mli @@ -93,6 +93,7 @@ type physinfo_cap_flag = | CAP_PV | CAP_DirectIO | CAP_HAP + | CAP_Shadow type physinfo = { threads_per_core : int; cores_per_socket : int; diff --git a/tools/xl/xl_info.c b/tools/xl/xl_info.c index aa6724bc7f..148c4740ae 100644 --- a/tools/xl/xl_info.c +++ b/tools/xl/xl_info.c @@ -210,12 +210,13 @@ static void output_physinfo(void) info.hw_cap[4], info.hw_cap[5], info.hw_cap[6], info.hw_cap[7] ); - maybe_printf("virt_caps :%s%s%s%s%s\n", + maybe_printf("virt_caps :%s%s%s%s%s%s\n", info.cap_pv ? " pv" : "", info.cap_hvm ? " hvm" : "", info.cap_hvm && info.cap_hvm_directio ? " hvm_directio" : "", info.cap_pv && info.cap_hvm_directio ? " pv_directio" : "", - info.cap_hap ? " hap" : "" + info.cap_hap ? " hap" : "", + info.cap_shadow ? " shadow" : "" ); vinfo = libxl_get_version_info(ctx); diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c index 5777a05ffc..50be0c722a 100644 --- a/xen/arch/x86/sysctl.c +++ b/xen/arch/x86/sysctl.c @@ -165,6 +165,8 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi) pi->capabilities |= XEN_SYSCTL_PHYSCAP_pv; if ( hvm_hap_supported() ) pi->capabilities |= XEN_SYSCTL_PHYSCAP_hap; + if ( IS_ENABLED(CONFIG_SHADOW_PAGING) ) + pi->capabilities |= XEN_SYSCTL_PHYSCAP_shadow; } long arch_do_sysctl( diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h index d4b455619c..e324442f92 100644 --- a/xen/include/public/sysctl.h +++ b/xen/include/public/sysctl.h @@ -93,9 +93,12 @@ struct xen_sysctl_tbuf_op { /* The platform supports Hardware Assisted Paging. */ #define _XEN_SYSCTL_PHYSCAP_hap 3 #define XEN_SYSCTL_PHYSCAP_hap (1u<<_XEN_SYSCTL_PHYSCAP_hap) +/* The platform supports software paging. */ +#define _XEN_SYSCTL_PHYSCAP_shadow 4 +#define XEN_SYSCTL_PHYSCAP_shadow (1u<<_XEN_SYSCTL_PHYSCAP_shadow) /* Max XEN_SYSCTL_PHYSCAP_* constant. Used for ABI checking. */ -#define XEN_SYSCTL_PHYSCAP_MAX XEN_SYSCTL_PHYSCAP_hap +#define XEN_SYSCTL_PHYSCAP_MAX XEN_SYSCTL_PHYSCAP_shadow struct xen_sysctl_physinfo { uint32_t threads_per_core; -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |