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

[xen staging] xen/arm: Reorder SCI resource cleanup in domain destruction



commit 45c609078331f82a746033595b2eaed7ff2a7a0b
Author:     Oleksii Moisieiev <Oleksii_Moisieiev@xxxxxxxx>
AuthorDate: Sun Sep 14 13:26:42 2025 +0000
Commit:     Julien Grall <jgrall@xxxxxxxxxx>
CommitDate: Sat Sep 27 18:07:34 2025 +0100

    xen/arm: Reorder SCI resource cleanup in domain destruction
    
    Move the SCI (System Control and Management Interface) resource cleanup
    earlier in the domain_relinquish_resources() sequence to ensure proper
    cleanup ordering during domain destruction.
    
    The SCI cleanup is now performed before TEE (Trusted Execution Environment)
    cleanup rather than after P2M mapping cleanup. This reordering ensures that
    SCI resources are properly released before other subsystems that might
    depend on them are torn down.
    
    This change addresses potential resource cleanup dependencies where SCI
    resources need to be released before P2M mappings are cleaned up, preventing
    potential issues during domain destruction on ARM platforms with SCI 
support.
    
    Fixes: e2cc10867b63 ("xen/arm: add generic SCI subsystem")
    
    Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@xxxxxxxx>
    Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 xen/arch/arm/domain.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 1a8585d02b..e36719bce4 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1042,6 +1042,7 @@ static int relinquish_memory(struct domain *d, struct 
page_list_head *list)
  */
 enum {
     PROG_pci = 1,
+    PROG_sci,
     PROG_tee,
     PROG_xen,
     PROG_page,
@@ -1049,7 +1050,6 @@ enum {
     PROG_p2m_root,
     PROG_p2m,
     PROG_p2m_pool,
-    PROG_sci,
     PROG_done,
 };
 
@@ -1090,6 +1090,11 @@ int domain_relinquish_resources(struct domain *d)
             return ret;
 #endif
 
+    PROGRESS(sci):
+        ret = sci_relinquish_resources(d);
+        if ( ret )
+            return ret;
+
     PROGRESS(tee):
         ret = tee_relinquish_resources(d);
         if (ret )
@@ -1109,10 +1114,6 @@ int domain_relinquish_resources(struct domain *d)
         ret = relinquish_p2m_mapping(d);
         if ( ret )
             return ret;
-    PROGRESS(sci):
-        ret = sci_relinquish_resources(d);
-        if ( ret )
-            return ret;
 
     PROGRESS(p2m_root):
         /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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