On Sat, Sep 13, 2025 at 1:31 PM Oleksii Moisieiev < oleksii_moisie...@epam.com> wrote:
Hello Oleksii 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. > > Signed-off-by: Oleksii Moisieiev <oleksii_moisie...@epam.com> > --- > > xen/arch/arm/domain.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 1a8585d02b..0ac381a5a5 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -1090,6 +1090,11 @@ int domain_relinquish_resources(struct domain *d) > return ret; > #endif > There is an enum above (not visible in context) enum { PROG_pci = 1, PROG_tee, PROG_xen, PROG_page, PROG_mapping, PROG_p2m_root, PROG_p2m, PROG_p2m_pool, PROG_sci, PROG_done, }; I am sorry, but shouldn't PROG_sci location there reflect to where you now put PROGRESS(sci) (I mean above PROG_tee)? > + 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): > /* > -- > 2.34.1 > > -- Regards, Oleksandr Tyshchenko