From nobody Mon Feb 9 10:57:45 2026 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.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 (zohomail.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=1578503745; cv=none; d=zohomail.com; s=zohoarc; b=auD+vzz7xPSdgumHAkwpt1Ek6HBZXFtKvgRyTnVGW+h6SB+3MBZfrs9ZiqBPrGM8ak2kUD1koJKExPA1y2xLxiL4RtHI4EtQUg/mwkLyAe2EWjjQvcJ3t/KmeUshWqLrHxkagZNLoiOl7AsGTmSnazE31KtJceWkfuIgaVOxiDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1578503745; 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; bh=IOmlGf/bwKpdfMKwISyZOzbKGGbIoAa0+Btl31Kdy4U=; b=fSXfj+8iPV9S0AYaeWrlPNuSUSd7R13HufgscIoj6xq6q5v3C4FdGKynIMMdAS3C8XdPcqvbAp9vEyQF/vKQeMlPAFDtY4o1fLk0CN/CY4f+4ojtfiGce1lZ06mNiUGelifd/kmEniyu2v9pIkWFsM16nbBoTBwQu/NuGGQvf8M= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=none (zohomail.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 157850374563690.6990187606998; Wed, 8 Jan 2020 09:15:45 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipEvL-0000yd-14; Wed, 08 Jan 2020 17:15:15 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipEvJ-0000xU-R2 for xen-devel@lists.xenproject.org; Wed, 08 Jan 2020 17:15:13 +0000 Received: from mga14.intel.com (unknown [192.55.52.115]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 5d238150-323a-11ea-b85f-12813bfff9fa; Wed, 08 Jan 2020 17:14:44 +0000 (UTC) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Jan 2020 09:14:43 -0800 Received: from tlengyel-mobl2.amr.corp.intel.com (HELO localhost.localdomain) ([10.251.132.23]) by orsmga005.jf.intel.com with ESMTP; 08 Jan 2020 09:14:42 -0800 X-Inumbo-ID: 5d238150-323a-11ea-b85f-12813bfff9fa X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,410,1571727600"; d="scan'208";a="395806119" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Date: Wed, 8 Jan 2020 09:14:09 -0800 Message-Id: <4e285f09f6c68deccf009b16c86898a78e349997.1578503483.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 12/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 | 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 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(is_iommu_enabled(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; @@ -1433,10 +1451,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 ) { @@ -1703,18 +1719,10 @@ 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 ) + switch( mec->op ) { case XEN_DOMCTL_MEM_SHARING_CONTROL: - rc =3D 0; - if ( unlikely(is_iommu_enabled(d) && mec->u.enable) ) - rc =3D -EXDEV; - else - d->arch.hvm.mem_sharing_enabled =3D mec->u.enable; + rc =3D mem_sharing_control(d, mec->u.enable); break; =20 default: --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel