[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 3/3] tools/arm: Add the trap_unmapped_accesses xl config option
From: "Edgar E. Iglesias" <edgar.iglesias@xxxxxxx> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xxxxxxx> --- docs/man/xl.cfg.5.pod.in | 8 ++++++++ tools/libs/light/libxl_arm.c | 6 +++--- tools/libs/light/libxl_create.c | 3 +++ tools/libs/light/libxl_types.idl | 1 + tools/libs/light/libxl_x86.c | 6 ++++++ tools/xl/xl_parse.c | 3 +++ 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 7339c44efd..55e9cb5bd9 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -3089,6 +3089,14 @@ will be used for the domain. Otherwise, the value specified by the `nr_spis` parameter will be used. The number of SPIs should match the highest interrupt ID that will be assigned to the domain. +=item B<trap_unmapped_accesses=BOOLEAN> + +An Optional boolean parameter that configures handling of accesses to unmapped +address ranges. If enabled, guest accesses will trap. If disabled, guest +accesses will read 0xFFFFFFFF and writes will be ignored. + +This option is only implemented for ARM where the default is enabled. + =back =head3 x86 diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 9530996e72..afc62a5299 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -233,9 +233,6 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, config->arch.sve_vl = d_config->b_info.arch_arm.sve_vl / 128U; } - /* Trap accesses to unmapped areas. */ - config->flags |= XEN_DOMCTL_CDF_trap_unmapped_accesses; - return 0; } @@ -1714,6 +1711,9 @@ int libxl__arch_domain_build_info_setdefault(libxl__gc *gc, /* ACPI is disabled by default */ libxl_defbool_setdefault(&b_info->acpi, false); + /* Trapping of unmapped accesses enabled by default. */ + libxl_defbool_setdefault(&b_info->trap_unmapped_accesses, true); + /* Sanitise SVE parameter */ if (b_info->arch_arm.sve_vl) { unsigned int max_sve_vl = diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c index e03599ea99..38770eea5b 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -667,6 +667,9 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config, if (libxl_defbool_val(b_info->vpmu)) create.flags |= XEN_DOMCTL_CDF_vpmu; + if (libxl_defbool_val(b_info->trap_unmapped_accesses)) + create.flags |= XEN_DOMCTL_CDF_trap_unmapped_accesses; + assert(info->passthrough != LIBXL_PASSTHROUGH_DEFAULT); LOG(DETAIL, "passthrough: %s", libxl_passthrough_to_string(info->passthrough)); diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl index 9bb2969931..e33785c661 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -736,6 +736,7 @@ libxl_domain_build_info = Struct("domain_build_info",[ ("vmtrace_buf_kb", integer), ("vpmu", libxl_defbool), + ("trap_unmapped_accesses", libxl_defbool), ], dir=DIR_IN, copy_deprecated_fn="libxl__domain_build_info_copy_deprecated", diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c index 0b1c2d3a96..a9d470c9f6 100644 --- a/tools/libs/light/libxl_x86.c +++ b/tools/libs/light/libxl_x86.c @@ -26,6 +26,11 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, if (libxl_defbool_val(d_config->b_info.arch_x86.msr_relaxed)) config->arch.misc_flags |= XEN_X86_MSR_RELAXED; + if (libxl_defbool_val(d_config->b_info.trap_unmapped_accesses)) { + LOG(ERROR, "trap_unmapped_accesses is not supported on x86\n"); + return ERROR_FAIL; + } + return 0; } @@ -813,6 +818,7 @@ int libxl__arch_domain_build_info_setdefault(libxl__gc *gc, { libxl_defbool_setdefault(&b_info->acpi, true); libxl_defbool_setdefault(&b_info->arch_x86.msr_relaxed, false); + libxl_defbool_setdefault(&b_info->trap_unmapped_accesses, false); /* * The config parameter "altp2m" replaces the parameter "altp2mhvm". diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 089a88935a..40da75ef74 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -2975,6 +2975,9 @@ skip_usbdev: if (!xlu_cfg_get_long (config, "nr_spis", &l, 0)) b_info->arch_arm.nr_spis = l; + xlu_cfg_get_defbool(config, "trap_unmapped_accesses", + &b_info->trap_unmapped_accesses, 0); + parse_vkb_list(config, d_config); d_config->virtios = NULL; -- 2.43.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |