[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/18] x86/mem_sharing: Enable mem_sharing on first memop
On 08.01.2020 18:14, Tamas K Lengyel wrote: > It is wasteful to require separate hypercalls to enable sharing on both the > parent and the client domain during VM forking. To speed things up we enable > sharing on the first memop in case it wasn't already enabled. > > Signed-off-by: Tamas K Lengyel <tamas.lengyel@xxxxxxxxx> > --- > xen/arch/x86/mm/mem_sharing.c | 36 +++++++++++++++++++++-------------- > 1 file changed, 22 insertions(+), 14 deletions(-) > > diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c > index 3f36cd6bbc..b8a9228ecf 100644 > --- a/xen/arch/x86/mm/mem_sharing.c > +++ b/xen/arch/x86/mm/mem_sharing.c > @@ -1412,6 +1412,24 @@ static int range_share(struct domain *d, struct domain > *cd, > return rc; > } > > +static inline int mem_sharing_control(struct domain *d, bool enable) > +{ > + if ( enable ) > + { > + if ( unlikely(!is_hvm_domain(d)) ) > + return -ENOSYS; -EOPNOTSUPP or some such please. ENOSYS has a very specific meaning, which (according to my understanding) doesn't apply here. > + if ( unlikely(!hap_enabled(d)) ) > + return -ENODEV; Doesn't this allow dropping the HAP check from mem_sharing_enabled(d)? > + if ( unlikely(is_iommu_enabled(d)) ) > + return -EXDEV; > + } > + > + d->arch.hvm.mem_sharing.enabled = enable; > + return 0; > +} > + > int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg) > { > int rc; > @@ -1433,10 +1451,8 @@ int > mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg) > if ( rc ) > goto out; > > - /* Only HAP is supported */ > - rc = -ENODEV; > - if ( !mem_sharing_enabled(d) ) > - goto out; > + if ( !mem_sharing_enabled(d) && (rc = mem_sharing_control(d, true)) ) > + return rc; Perhaps already in patch 6, doesn't this eliminate the need for the individual mem_sharing_enabled() checks in the case blocks? > @@ -1703,18 +1719,10 @@ int mem_sharing_domctl(struct domain *d, struct > xen_domctl_mem_sharing_op *mec) > { > int rc; > > - /* Only HAP is supported */ > - if ( !hap_enabled(d) ) > - return -ENODEV; > - > - switch ( mec->op ) > + switch( mec->op ) Please don't corrupt proper Xen style. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |