[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 05/14] xen: arm: implement XEN_DOMCTL_set_address_size
On 11/07/2013 04:44 PM, Ian Campbell wrote: > This is subarch specific to plumb through to arm32 and arm64 versions. > > The toolstack uses this to select 32- vs 64-bit guests (or rather it does on > x86 and soon will for arm too). > > I noticed that domctl.c and sysctl.c weren't including xen/hypercall.h to get > their arch_do_fooctl prototypes, so fix that. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- > xen/arch/arm/arm32/Makefile | 1 + > xen/arch/arm/arm32/domctl.c | 35 +++++++++++++++++++++++ > xen/arch/arm/arm64/Makefile | 1 + > xen/arch/arm/arm64/domctl.c | 59 > +++++++++++++++++++++++++++++++++++++++ > xen/arch/arm/domctl.c | 7 ++++- > xen/arch/arm/sysctl.c | 1 + > xen/include/asm-arm/hypercall.h | 3 ++ > 7 files changed, 106 insertions(+), 1 deletion(-) > create mode 100644 xen/arch/arm/arm32/domctl.c > create mode 100644 xen/arch/arm/arm64/domctl.c > > diff --git a/xen/arch/arm/arm32/Makefile b/xen/arch/arm/arm32/Makefile > index aacdcb9..65ecff4 100644 > --- a/xen/arch/arm/arm32/Makefile > +++ b/xen/arch/arm/arm32/Makefile > @@ -7,5 +7,6 @@ obj-y += traps.o > obj-y += domain.o > obj-y += vfp.o > obj-y += smpboot.o > +obj-y += domctl.o > > obj-$(EARLY_PRINTK) += debug.o > diff --git a/xen/arch/arm/arm32/domctl.c b/xen/arch/arm/arm32/domctl.c > new file mode 100644 > index 0000000..c2ca4d3 > --- /dev/null > +++ b/xen/arch/arm/arm32/domctl.c > @@ -0,0 +1,35 @@ > +/****************************************************************************** > + * Subarch-specific domctl.c > + * > + * Copyright (c) 2013, Citrix Systems > + */ > + > +#include <xen/config.h> > +#include <xen/types.h> > +#include <xen/lib.h> > +#include <xen/errno.h> > +#include <xen/sched.h> > +#include <xen/hypercall.h> > +#include <public/domctl.h> > + > +long subarch_do_domctl(struct xen_domctl *domctl, struct domain *d, > + XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) > +{ > + switch ( domctl->cmd ) > + { > + case XEN_DOMCTL_set_address_size: > + return domctl->u.address_size.size == 32 ? 0 : -EINVAL; > + default: > + return -ENOSYS; > + } > +} > + > +/* > + * Local variables: > + * mode: C > + * c-file-style: "BSD" > + * c-basic-offset: 4 > + * tab-width: 4 > + * indent-tabs-mode: nil > + * End: > + */ > diff --git a/xen/arch/arm/arm64/Makefile b/xen/arch/arm/arm64/Makefile > index 5d28bad..d2d5875 100644 > --- a/xen/arch/arm/arm64/Makefile > +++ b/xen/arch/arm/arm64/Makefile > @@ -6,5 +6,6 @@ obj-y += traps.o > obj-y += domain.o > obj-y += vfp.o > obj-y += smpboot.o > +obj-y += domctl.o > > obj-$(EARLY_PRINTK) += debug.o > diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c > new file mode 100644 > index 0000000..e2b4617 > --- /dev/null > +++ b/xen/arch/arm/arm64/domctl.c > @@ -0,0 +1,59 @@ > +/****************************************************************************** > + * Subarch-specific domctl.c > + * > + * Copyright (c) 2013, Citrix Systems > + */ > + > +#include <xen/config.h> > +#include <xen/types.h> > +#include <xen/lib.h> > +#include <xen/errno.h> > +#include <xen/sched.h> > +#include <xen/hypercall.h> > +#include <public/domctl.h> > + > +static long switch_mode(struct domain *d, enum domain_type type) > +{ > + if ( d == NULL ) > + return -EINVAL; > + if ( d->tot_pages != 0 ) > + return -EBUSY; > + if ( d->arch.type == type ) > + return 0; > + > + d->arch.type = type; > + > + return 0; > +} > + > +long subarch_do_domctl(struct xen_domctl *domctl, struct domain *d, > + XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) > +{ > + switch ( domctl->cmd ) > + { > + case XEN_DOMCTL_set_address_size: > + switch ( domctl->u.address_size.size ) > + { > + case 32: > + return switch_mode(d, DOMAIN_PV32); > + case 64: > + return switch_mode(d, DOMAIN_PV64); > + default: > + return -EINVAL; > + } > + break; > + > + default: > + return -ENOSYS; > + } > +} > + > +/* > + * Local variables: > + * mode: C > + * c-file-style: "BSD" > + * c-basic-offset: 4 > + * tab-width: 4 > + * indent-tabs-mode: nil > + * End: > + */ > diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c > index 851ee40..546e86b 100644 > --- a/xen/arch/arm/domctl.c > +++ b/xen/arch/arm/domctl.c > @@ -9,12 +9,17 @@ > #include <xen/lib.h> > #include <xen/errno.h> > #include <xen/sched.h> > +#include <xen/hypercall.h> > #include <public/domctl.h> > > long arch_do_domctl(struct xen_domctl *domctl, struct domain *d, > XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) > { > - return -ENOSYS; > + switch ( domctl->cmd ) > + { > + default: > + return subarch_do_domctl(domctl, d, u_domctl); > + } > } > > void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) > diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c > index 6388204..98bab6a 100644 > --- a/xen/arch/arm/sysctl.c > +++ b/xen/arch/arm/sysctl.c > @@ -10,6 +10,7 @@ > #include <xen/types.h> > #include <xen/lib.h> > #include <xen/errno.h> > +#include <xen/hypercall.h> I think this line should be in a separate patch. The other part looks good: Acked-by: Julien Grall <julien.grall@xxxxxxxxxx> -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |