From nobody Tue Nov 11 08:31:26 2025 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1569426684; cv=none; d=zoho.com; s=zohoarc; b=XE0HBW00HdfMNXoemBTRtpG46wmtT5uazCF6spMgA5QM7nbBEn7RW36EewkFe9TRD/RsZ0CGFuYsgZJXGwLg92TzByAZsuQNPUfl1dL+13yN/nwOdr8ecNM1UN9gDmGAtqa3eBIsDsmvn/jIqzNedsQAM6cijeXcYP5Xdg51b3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569426684; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=V6AjXCTDIaK/zzUnpWwbAZmbYouIjRIrOyL30aeozGk=; b=CmywKOAF91Im7GrWFSvDZv0PtsmPr/B0p5lQ/VjX6J1zPY863pdOFaLayoUupMG0bp5+6SeQe+j51McYidEMeUV7JK1DZpCxiVOjtm+cSYrXZjuxJwj+y6eOI1NrQSN6g+klxjobSp1NmLIvKkMLUFfC1CcsupS8gWPodsIWtIc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1569426684068520.4463937491255; Wed, 25 Sep 2019 08:51:24 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD9Yh-00027m-Il; Wed, 25 Sep 2019 15:50:27 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD9Yg-00026y-Nt for xen-devel@lists.xenproject.org; Wed, 25 Sep 2019 15:50:26 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by localhost (Halon) with ESMTPS id 13f17c02-dfac-11e9-bf31-bc764e2007e4; Wed, 25 Sep 2019 15:49:37 +0000 (UTC) Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Sep 2019 08:49:37 -0700 Received: from tlengyel-mobl2.amr.corp.intel.com (HELO localhost.localdomain) ([10.252.129.153]) by orsmga006.jf.intel.com with ESMTP; 25 Sep 2019 08:49:36 -0700 X-Inumbo-ID: 13f17c02-dfac-11e9-bf31-bc764e2007e4 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,548,1559545200"; d="scan'208";a="193812693" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Date: Wed, 25 Sep 2019 08:48:52 -0700 Message-Id: <31f87866d0f24657ce12e6ca32c8a552639cb34d.1569425745.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [RFC PATCH for-next 14/18] x86/mem_sharing: Enable mem_sharing on first memop X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Tamas K Lengyel , Tamas K Lengyel , Wei Liu , George Dunlap , Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" 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 --- xen/arch/x86/mm/mem_sharing.c | 39 +++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c index 99f24fcf6c..65aa64be99 100644 --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -1402,6 +1402,24 @@ static int range_share(struct domain *d, struct doma= in *cd, return rc; } =20 +static inline int mem_sharing_control(struct domain *d, bool enable) +{ + if ( enable ) + { + if ( unlikely(!is_hvm_domain(d)) ) + return -ENOSYS; + + if ( unlikely(!hap_enabled(d)) ) + return -ENODEV; + + if ( unlikely(has_iommu_pt(d)) ) + return -EXDEV; + } + + d->arch.hvm.mem_sharing.enabled =3D enable; + return 0; +} + int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg) { int rc; @@ -1423,10 +1441,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem= _sharing_op_t) arg) if ( rc ) goto out; =20 - /* Only HAP is supported */ - rc =3D -ENODEV; - if ( !mem_sharing_enabled(d) ) - goto out; + if ( !mem_sharing_enabled(d) && (rc =3D mem_sharing_control(d, true)) ) + return rc; =20 switch ( mso.op ) { @@ -1675,24 +1691,15 @@ int mem_sharing_domctl(struct domain *d, struct xen= _domctl_mem_sharing_op *mec) { int rc; =20 - /* Only HAP is supported */ - if ( !hap_enabled(d) ) - return -ENODEV; - switch(mec->op) { case XEN_DOMCTL_MEM_SHARING_CONTROL: - { - rc =3D 0; - if ( unlikely(has_iommu_pt(d) && mec->u.enable) ) - rc =3D -EXDEV; - else - d->arch.hvm.mem_sharing.enabled =3D mec->u.enable; - } - break; + rc =3D mem_sharing_control(d, mec->u.enable); + break; =20 default: rc =3D -ENOSYS; + break; } =20 return rc; --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel