[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/5] xen/arm: Add way to disable traps on accesses to unmapped addresses
On Tue, Jun 03, 2025 at 10:36:40AM +0100, Julien Grall wrote: > Hi Edgar, Hi Julien, > > On 30/05/2025 14:45, Edgar E. Iglesias wrote: > > From: "Edgar E. Iglesias" <edgar.iglesias@xxxxxxx> > > > > Add a per-domain way to optionally disable traps for accesses > > to unmapped addresses. > > > > The domain flag is general but it's only implemented for ARM for now. > > > > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xxxxxxx> > > --- > > tools/libs/light/libxl_arm.c | 3 +++ > > xen/arch/arm/dom0less-build.c | 3 +++ > > xen/arch/arm/domain.c | 3 ++- > > xen/arch/arm/domain_build.c | 3 ++- > > xen/arch/arm/io.c | 37 +++++++++++++++++++++++++++++++++-- > > xen/common/domain.c | 3 ++- > > xen/include/public/domctl.h | 4 +++- > > 7 files changed, 50 insertions(+), 6 deletions(-) > > > > diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c > > index 75c811053c..9530996e72 100644 > > --- a/tools/libs/light/libxl_arm.c > > +++ b/tools/libs/light/libxl_arm.c > > @@ -233,6 +233,9 @@ 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; > > } > > diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c > > index a49764f0ad..a4e0a33632 100644 > > --- a/xen/arch/arm/dom0less-build.c > > +++ b/xen/arch/arm/dom0less-build.c > > @@ -343,6 +343,9 @@ void __init arch_create_domUs(struct dt_device_node > > *node, > > panic("'sve' property found, but CONFIG_ARM64_SVE not > > selected\n"); > > #endif > > } > > + > > + /* Trap accesses to unmapped areas. */ > > + d_cfg->flags |= XEN_DOMCTL_CDF_trap_unmapped_accesses; > > } > > int __init init_intc_phandle(struct kernel_info *kinfo, const char *name, > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > > index 45aeb8bddc..be58a23dd7 100644 > > --- a/xen/arch/arm/domain.c > > +++ b/xen/arch/arm/domain.c > > @@ -612,7 +612,8 @@ int arch_sanitise_domain_config(struct > > xen_domctl_createdomain *config) > > unsigned int max_vcpus; > > unsigned int flags_required = (XEN_DOMCTL_CDF_hvm | > > XEN_DOMCTL_CDF_hap); > > unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | > > XEN_DOMCTL_CDF_vpmu | > > - XEN_DOMCTL_CDF_xs_domain ); > > + XEN_DOMCTL_CDF_xs_domain | > > + XEN_DOMCTL_CDF_trap_unmapped_accesses ); > > Just to double check, doesn't this mean the flag will be allowed on x86? If > so, shouldn't we reject it in an arch? Yes, I had initially thought I could block the flag for x86 in xl but I didn't consider go/ocaml bindings nor Xen internal missconfig. In v4, I'm adding a check in x86's arch_sanitise_domain_config(). Cheers, Edgar > > Cheers, > > -- > Julien Grall >
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |