On 02.06.2025 11:04, Mykola Kvach wrote: > @@ -857,8 +860,24 @@ void arch_domain_destroy(struct domain *d) > domain_io_free(d); > } > > -void arch_domain_shutdown(struct domain *d) > +int arch_domain_shutdown(struct domain *d) > { > + switch ( d->shutdown_code ) > + { > + case SHUTDOWN_suspend: > +#ifdef CONFIG_SYSTEM_SUSPEND > + if ( !is_hardware_domain(d) ) > + break; > + > + return host_system_suspend(); > +#else > + break; > +#endif > + default: > + break; > + } > + > + return 0; > }
What's wrong with int arch_domain_shutdown(struct domain *d) { switch ( d->shutdown_code ) { #ifdef CONFIG_SYSTEM_SUSPEND case SHUTDOWN_suspend: if ( !is_hardware_domain(d) ) break; return host_system_suspend(); #endif default: break; } return 0; } ? > @@ -1311,13 +1316,13 @@ int domain_shutdown(struct domain *d, u8 reason) > v->paused_for_shutdown = 1; > } > > - arch_domain_shutdown(d); > + ret = arch_domain_shutdown(d); If non-zero comes back here, is ... > __domain_finalise_shutdown(d); ... this still appropriate to call? > spin_unlock(&d->shutdown_lock); > > - return 0; > + return ret; > } Most callers don't care about the return value of this function. That likely needs to change, even if _for now_ you only alter the SHUTDOWN_suspend case (and hence some of the callers aren't immediately impacted)? Jan