[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] arm: export platform_op XENPF_settime
Hi Stefano, You forgot to CC Daniel for the XSM part. Please use scripts/get_maintainers.pl to get the relevant maintainers. On 05/11/15 16:57, Stefano Stabellini wrote: > Call update_domain_wallclock_time at domain initialization. It's not really what you are doing in the code. You are calling update_domain_wallclock_time when the first vCPU is initialized. Also some rationale to explain why this call should be done here would be good. Finally, I'm a bit surprised that you only need to call update_domain_wallclock_time when the domain is created. x86 needs to call in various places. For instance we may want to call update_domain_wallclock_time in construct_dom0 before clearing the pause flags. This is because the wallclock may be out of sync as construction DOM0 takes some time. > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- > xen/arch/arm/Makefile | 1 + > xen/arch/arm/domain.c | 3 ++ > xen/arch/arm/platform_hypercall.c | 62 > +++++++++++++++++++++++++++++++++++++ > xen/arch/arm/traps.c | 1 + > xen/include/xsm/dummy.h | 12 +++---- > xen/include/xsm/xsm.h | 13 ++++---- You also have to fix xsm/flask/hooks.c. > 6 files changed, 80 insertions(+), 12 deletions(-) > create mode 100644 xen/arch/arm/platform_hypercall.c [..] > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index b2bfc7d..ac9b1b3 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -742,6 +742,9 @@ int arch_set_info_guest( > v->arch.ttbr1 = ctxt->ttbr1; > v->arch.ttbcr = ctxt->ttbcr; > > + if ( v->vcpu_id == 0 ) > + update_domain_wallclock_time(v->domain); > + > v->is_initialised = 1; > > if ( ctxt->flags & VGCF_online ) > diff --git a/xen/arch/arm/platform_hypercall.c > b/xen/arch/arm/platform_hypercall.c > new file mode 100644 > index 0000000..f60d7b3 > --- /dev/null > +++ b/xen/arch/arm/platform_hypercall.c > @@ -0,0 +1,62 @@ > +/****************************************************************************** > + * platform_hypercall.c > + * > + * Hardware platform operations. Intended for use by domain-0 kernel. > + * > + * Copyright (c) 2015, Citrix > + */ > + > +#include <xen/config.h> > +#include <xen/types.h> > +#include <xen/sched.h> > +#include <xen/guest_access.h> > +#include <xen/spinlock.h> > +#include <public/platform.h> > +#include <xsm/xsm.h> > +#include <asm/current.h> > +#include <asm/event.h> > + > +DEFINE_SPINLOCK(xenpf_lock); > + > +long do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op) > +{ Would it make sense to introduce a common platform code which take care of common hypercall? See for instance do_domctl and arch_do_domctl. > + long ret; > + struct xen_platform_op curop, *op = &curop; > + > + if ( copy_from_guest(op, u_xenpf_op, 1) ) > + return -EFAULT; > + > + if ( op->interface_version != XENPF_INTERFACE_VERSION ) > + return -EACCES; > + > + ret = xsm_platform_op(XSM_PRIV, op->cmd); > + if ( ret ) > + return ret; > + > + spin_lock(&xenpf_lock); > + > + switch ( op->cmd ) > + { > + case XENPF_settime32: > + do_settime(op->u.settime32.secs, > + op->u.settime32.nsecs, > + op->u.settime32.system_time); > + break; Do we really want to support settime32 on ARM? > + > + case XENPF_settime64: > + if ( likely(!op->u.settime64.mbz) ) > + do_settime(op->u.settime64.secs, > + op->u.settime64.nsecs, > + op->u.settime64.system_time); > + else > + ret = -EINVAL; > + break; > + > + default: > + ret = -ENOSYS; > + break; > + } > + > + spin_unlock(&xenpf_lock); > + return ret; > +} Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |