[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC PATCH v6 32/43] x86/altp2m: Add altp2m_set_view_visibility_locked


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Rose Spangler <Rose.Spangler@xxxxxxxxxxxxxx>
  • Date: Mon, 20 Apr 2026 17:31:55 -0400
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 40.93.13.59) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com; dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com] dmarc=[1,1,header.from=elektrobit.com])
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=; b=LXqs5u1o6ixgRbILiSEPSX+evGnriQoe10H7gHcqSxzkUlcEcHsPNhR4YOaUK3rgjJaskFDhPEIXI1C4+dVt4u5Wtp+YynAMc4dB4ac6iaF9FCACIKERjzIifqp+at0yUJLoaq0tWSni3xIN/p4a5m1gR1aInaR9+eu+eBoB3J7uVFDOODONHpGXpUjLtfT+XMOSdf/CazWp3+clJzxGQu6bzP7RFRFN46EJjH4z3CSXGAKgBdy5hfoukra2KQ1PpBvkKRjN6lssISuwohPHRVadHxn6foYI7TsGH6JqGJialXfvBuoRDPk84JHrxDLc3f2GBKKxIRB+RZuJWKHHMg==
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=; b=n+8+9He+uRsj/WpP/h0qTxLVFvCuvdPw++g5qRPbgoG4BEW8OH+Qo+U2m78Dbgh7giqtJx+29/Rtv5mRQgu20cY0mtpU3Pw7kj1MT5LI0PxCLQhGsvMfQEPk0sE+cW6LjmP/zGggyxMZ0Do8hH8eFh3juzmT2pFDrUGxcWUTqWq2vX6JvkwQkiEriNA8yFMr/jiiRuISm9391GqeSCsrpMZAsMiYbg25j8rGtQN2Qpvfq0lXdm04po2EBd4X/t2jywJbUa3oeMhi5/xuQrA2EKDpXhLigwoVR2SJWce4SCekv8uBqYTaJuxumourqVss1lRaUIvbGUTloLElDNjXZw==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Jx3zq7ojskYhgTb5A00IkEvLoHnrzmF90+52nEYKiqw9H05ZSWfxnDfB8bcjFFgZAzqAbo7fquz8P0nPcMiQdMczIWt/eRFkSxUT9BsZ00e4JM1DSBFW0Um9MHZl9yGPJ8L4NFfi/DvG1eysz25b/JaobT2bRwMf4ZDd5WJpWLX4n9E1O+hXir2rvkj9Skkp5f8bNv0z7kIbZbAVBgeD+tS8fl7P2PefdaAcvz6ZaWAAMmOfbgd8VeB15mm8D5cDBP8a2R15yBjfkApN5SzOTPJoKWmOCAKISBSbrWvuLjd+fPNm/psW+tpRL3OhYbj/YVOJAJBwn2tb+3TkcPhrRg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EytrO6GapLKFFO+LCZ3jyrZryPT0zvyBtpOypW5isZlRpnAT5qUJujBWjblIko7LvW8vuNQ7HEnTAPCYEE2CAJAUHfcm7iXgtae2oQMACi634Kh/X+xOGWR4BrCjdYM9QcjFggVdnvdgeMS/shv45OysVfw0NpzdXO+2hTmVsIXqClDuyCFZ5Pga4NfWmYeioX1cq8OJcMYDeRzgK+0udzy+x/uf4FwA5NtYaCCtrzQ6tKlyYXGU7BCdugdOpYw68jtaNtwRLfa3vi/KISx9Aeb9dSRIDfO5vWjRBZt9h2MGTfgyP6wSRUB14oFLfzyCxDBBfly9nXzsS9lXsonN0w==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Cc: Rose Spangler <Rose.Spangler@xxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Teddy Astie <teddy.astie@xxxxxxxxxx>
  • Delivery-date: Mon, 20 Apr 2026 21:33:40 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

This commit splits the altp2m_set_view_visibility into two functions, where
the altp2m_set_view_visibility_locked variant has the preconditions that
the altp2m lock is held. This makes it possible to change a view's
visibility in an architecture independent way in code that already holds
the altp2m lock (namely, altp2m_flush).

This is commit 3/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@xxxxxxxxxxxxxx>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  4 ++++
 xen/arch/x86/mm/altp2m.c          | 14 +++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h 
b/xen/arch/x86/include/asm/altp2m.h
index 56ae19b24b42..99c4cfa5a68b 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -106,6 +106,10 @@ int altp2m_change_gfn(struct domain *d, unsigned int idx, 
gfn_t old_gfn,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible);
 
+/* Set a specific p2m view visibility (with lock already held) */
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int 
altp2m_idx,
+                                      uint8_t visible);
+
 /*
  * Looks up altp2m entry. If the entry is not found it looks up the entry in
  * hostp2m.
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0542e3ef9196..8672b8c061d3 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -685,9 +685,19 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool 
*suppress_ve,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible)
 {
-    int rc = 0;
+    int rc;
 
     altp2m_lock(d);
+    rc = altp2m_set_view_visibility_locked(d, altp2m_idx, visible);
+    altp2m_unlock(d);
+
+    return rc;
+}
+
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int 
altp2m_idx,
+                                      uint8_t visible)
+{
+    int rc = 0;
 
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc = -EINVAL;
@@ -698,8 +708,6 @@ int altp2m_set_view_visibility(struct domain *d, unsigned 
int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
             mfn_x(INVALID_MFN);
 
-    altp2m_unlock(d);
-
     return rc;
 }
 
-- 
2.34.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.