From nobody Thu Oct 30 19:06:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1753350145; cv=none; d=zohomail.com; s=zohoarc; b=EXuYRytpVAOGekCNSuWj4IZ4qOyKZYv89D/XdHYxrZ2wYPBnh/BNuVU3YXO1KdnMikmJNSuP+JHfp0xJLlqpq1uzGHYM/pxqnVEltbmKza1vyNTT7mmrdVhCeN47oqK11I6Hbb1ekwfAyjVRvcDC+MlkegTiWELrcYoCp0sjh8c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753350145; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ku9w1fkK0fAvgQ8OQfzLngvlrBrNrGCj3gQYtxHhrjY=; b=lsRrRtnc0/ROYPd9iTahy5vAYwpvAG0GuPQi5xGuWv3XUZJ/mCIJCDV99+1AMRYsdCR5Qu4k0a0Y95b/vkJdu2psWFL+9BfjYWnr/YZp580wTAHHv0AeVv7XLrHNCDwVo+1ysWNfqrKUGcmpo7QbPJddELP8J2YvjxrcfB5a1S4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 175335014572133.74067328675562; Thu, 24 Jul 2025 02:42:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1055530.1423887 (Exim 4.92) (envelope-from ) id 1uesSd-0007qb-37; Thu, 24 Jul 2025 09:41:59 +0000 Received: by outflank-mailman (output) from mailman id 1055530.1423887; Thu, 24 Jul 2025 09:41:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSc-0007q6-UW; Thu, 24 Jul 2025 09:41:58 +0000 Received: by outflank-mailman (input) for mailman id 1055530; Thu, 24 Jul 2025 09:41:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSb-0007nR-OY for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 09:41:57 +0000 Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [2a00:1450:4864:20::22f]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 6f945eea-6872-11f0-b895-0df219b8e170; Thu, 24 Jul 2025 11:41:55 +0200 (CEST) Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-32b435ef653so6777931fa.2 for ; Thu, 24 Jul 2025 02:41:55 -0700 (PDT) Received: from yp-VivoBook-ASUSLaptop-M1503QA-M1503QA.. ([95.67.15.120]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-331e08e98aesm2418261fa.54.2025.07.24.02.41.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jul 2025 02:41:53 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 6f945eea-6872-11f0-b895-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753350115; x=1753954915; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ku9w1fkK0fAvgQ8OQfzLngvlrBrNrGCj3gQYtxHhrjY=; b=T4BtMSfpECMs2Xa7uyEtc5+S28w6rz9M+Pu4pXf6/ydiJMHEFLe6vu5sqEYG2Ic3L7 MShZ+wbNNl85do6YpCw7XQN3ZHoQT49sFDYLIanSORXVCHUmfHteDJ+vNXcH1wKuQ18v CvBtrDa63a9QhGYblalezO4YX+gQCaqcrV8Pc31/mdccfqBV6zqwnKBCfm6o2o7aCm6d HcRHXbphLwV4NXaeXfO0WzlurbscCb8NBedD0cifsVUyn392Dgr4F7kgFdsgFSHJ6nXb jEbefepUNxAUy9KgXE6+wTc2K1Yo6uxiruQEMvU1H/afJcc+I4E1eB6lVKOBMX3UAEIY biVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753350115; x=1753954915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ku9w1fkK0fAvgQ8OQfzLngvlrBrNrGCj3gQYtxHhrjY=; b=KqyIgN5lSVPGdO+XIAkrEj/86erxiFBuGb9PdCX045YIaAiQQEXAM+k6gcZWFJxHE9 w0y4PD9G/u3zFMFqV+Ya8je10WHjo5b8CWK8SpJoFHGZOtwPQ2W/wq0sg5s6uc/F9f33 XvQk9Z2BcD24CrQuLnePWnjLW21wrmY4PLGSXFl66P53oInnLjKXutzT0vlQ0gY+JoY+ V1VoxXfvlaS+UipqchFLCjjdUdInfyncKDuFyu9ONEYwAkTifpPfMDLM5qgyhQGFEsS3 WHCGp5NK3TTLi15ZNVcJ32Bcyd8KKWp3XrkgzG6coRN4xG8tnXf8jz/0IAw4x/CYbd4f Y+Yw== X-Gm-Message-State: AOJu0YyLbPAU+UHzdf3/TjckWmkwFaGJNteuTaE6OfTt2f0hB/PITCHG jaJevW3M6ZZNokogRVgWtn3YNH1Ye9RBf4pxzuE4Ty/CsowGESEAyq5L7xHWNw== X-Gm-Gg: ASbGncs7NQQ1rbvFEbQtbZhHJ5wn0ArmEXx74hNjweEakDYk/BKlIt8IgaTYaNbgzYY jNc7th0xZK4HmMhfx9xuDTo4lmAxAv+T9eEraVipUsiGaJXZ+QbnzxgZzr+Q6QKsFWOsD58MO9t zuNHqvOmER2n+afFUiGrQJz+MYejBQZldkWVxplS3vBWkf3IoqEw5WfrK9/4KOlavvuX4Dd24qb zn/xIUTMyji6KM+sZlToEnzp+cdgybnwYbn9YoJByrGS3NX9reA2bjfcG6NEE5jAnZ6EtXhdb8X FObLyZ2Y4nWW49zMks+9FN/RuROP86TuMmmVtNxA/BPqYcZbEabS8xxuxmrGytfINCWYrPxr0a6 5YLUP7pgHJj8NE1V39vlBXaKCH+zzewihWrYNpQ4z2C563xi1CzAELnmjaFcSZg== X-Google-Smtp-Source: AGHT+IH73lN6yqHCBPcqd2/XZ8/oRJ1EQtkhz2AOFNgj0ymhgJMVvT3G0840gz5OP77DyOSiuOQP0w== X-Received: by 2002:a2e:a882:0:b0:32b:8e4a:5710 with SMTP id 38308e7fff4ca-330dfe19fa2mr21716731fa.34.1753350114444; Thu, 24 Jul 2025 02:41:54 -0700 (PDT) From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Mykola Kvach , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v6 1/4] xen/arm: Implement PSCI SYSTEM_SUSPEND call for guests Date: Thu, 24 Jul 2025 12:40:56 +0300 Message-ID: <180825d963133be069385472f569ecb1870989fb.1753349109.git.mykola_kvach@epam.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1753350146596116600 Content-Type: text/plain; charset="utf-8" From: Mykola Kvach This patch adds support for the PSCI SYSTEM_SUSPEND function in the vPSCI (virtual PSCI) interface, allowing guests to request suspend via the PSCI v1.0 SYSTEM_SUSPEND call (both 32-bit and 64-bit variants). The implementation: - Adds SYSTEM_SUSPEND function IDs to PSCI definitions - Implements trapping and handling of SYSTEM_SUSPEND in vPSCI - Allows only non-hardware domains to invoke SYSTEM_SUSPEND; for the hardware domain, PSCI_NOT_SUPPORTED is returned to avoid halting the system in hwdom_shutdown() called from domain_shutdown - Ensures all secondary VCPUs of the calling domain are offline before allowing suspend due to PSCI spec Usage: For Linux-based guests, suspend can be initiated with: echo mem > /sys/power/state or via: systemctl suspend Resuming the guest is performed from control domain using: xl resume Signed-off-by: Mykola Kvach --- Changes in V6: - skip execution of ctxt_switch_from for vcpu that is in paused domain - add implementation of domain_resume without domain_pause - add helper function to determine if vcpu is suspended or not - ignore upper 32 bits of argument values when the domain is 64-bit and calls the SMC32 SYSTEM_SUSPEND function - cosmetic changes after review Changes in V5: - don't use standby mode, restore execution in a provided by guest point - move checking that all CPUs, except current one, are offline to after pausing the vCPUs - provide ret status from arch_domain_shutdown and handle it in domain_shutdown - adjust VPSCI_NR_FUNCS to reflect the number of newly added PSCI functions Changes in V4: Dropped all changes related to watchdog, domain is marked as shutting down in domain_shutdown and watchdog timeout handler won't trigger because of it. Previous versions included code to manage Xen watchdog timers during suspen= d, but this was removed. When a guest OS starts the Xen watchdog (either via t= he kernel driver or xenwatchdogd), it is responsible for managing that state across suspend/resume. On Linux, the Xen kernel driver properly stops the watchdog during suspend. However, when xenwatchdogd is used instead, suspend handling is incomplete, potentially leading to watchdog-triggered resets on resume. Xen leaves watchdog handling to the guest OS and its services. Dropped all changes related to VCPU context, because instead domain_shutdown is used, so we don't need any extra changes for suspending domain. Changes in V3: Dropped all domain flags and related code (which touched common functions l= ike vcpu_unblock), keeping only the necessary changes for Xen suspend/resume, i= .e. suspend/resume is now fully supported only for the hardware domain. Proper support for domU suspend/resume will be added in a future patch. This patch does not yet include VCPU context reset or domain context restoration in VCPU. --- xen/arch/arm/domain.c | 4 ++ xen/arch/arm/include/asm/perfc_defn.h | 1 + xen/arch/arm/include/asm/psci.h | 2 + xen/arch/arm/include/asm/vpsci.h | 2 +- xen/arch/arm/vpsci.c | 90 +++++++++++++++++++++++---- xen/common/domain.c | 30 ++++++--- xen/include/xen/sched.h | 2 + 7 files changed, 110 insertions(+), 21 deletions(-) diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 79a144e61b..a2ad10146f 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -90,6 +90,10 @@ static void ctxt_switch_from(struct vcpu *p) if ( is_idle_vcpu(p) ) return; =20 + /* VCPU's context should not be saved if its domain is suspended */ + if ( vcpu_is_suspended(p) ) + return; + p2m_save_state(p); =20 /* CP 15 */ diff --git a/xen/arch/arm/include/asm/perfc_defn.h b/xen/arch/arm/include/a= sm/perfc_defn.h index effd25b69e..8dfcac7e3b 100644 --- a/xen/arch/arm/include/asm/perfc_defn.h +++ b/xen/arch/arm/include/asm/perfc_defn.h @@ -33,6 +33,7 @@ PERFCOUNTER(vpsci_system_reset, "vpsci: system_res= et") PERFCOUNTER(vpsci_cpu_suspend, "vpsci: cpu_suspend") PERFCOUNTER(vpsci_cpu_affinity_info, "vpsci: cpu_affinity_info") PERFCOUNTER(vpsci_features, "vpsci: features") +PERFCOUNTER(vpsci_system_suspend, "vpsci: system_suspend") =20 PERFCOUNTER(vcpu_kick, "vcpu: notify other vcpu") =20 diff --git a/xen/arch/arm/include/asm/psci.h b/xen/arch/arm/include/asm/psc= i.h index 4780972621..48a93e6b79 100644 --- a/xen/arch/arm/include/asm/psci.h +++ b/xen/arch/arm/include/asm/psci.h @@ -47,10 +47,12 @@ void call_psci_system_reset(void); #define PSCI_0_2_FN32_SYSTEM_OFF PSCI_0_2_FN32(8) #define PSCI_0_2_FN32_SYSTEM_RESET PSCI_0_2_FN32(9) #define PSCI_1_0_FN32_PSCI_FEATURES PSCI_0_2_FN32(10) +#define PSCI_1_0_FN32_SYSTEM_SUSPEND PSCI_0_2_FN32(14) =20 #define PSCI_0_2_FN64_CPU_SUSPEND PSCI_0_2_FN64(1) #define PSCI_0_2_FN64_CPU_ON PSCI_0_2_FN64(3) #define PSCI_0_2_FN64_AFFINITY_INFO PSCI_0_2_FN64(4) +#define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14) =20 /* PSCI v0.2 affinity level state returned by AFFINITY_INFO */ #define PSCI_0_2_AFFINITY_LEVEL_ON 0 diff --git a/xen/arch/arm/include/asm/vpsci.h b/xen/arch/arm/include/asm/vp= sci.h index 0cca5e6830..69d40f9d7f 100644 --- a/xen/arch/arm/include/asm/vpsci.h +++ b/xen/arch/arm/include/asm/vpsci.h @@ -23,7 +23,7 @@ #include =20 /* Number of function implemented by virtual PSCI (only 0.2 or later) */ -#define VPSCI_NR_FUNCS 12 +#define VPSCI_NR_FUNCS 14 =20 /* Functions handle PSCI calls from the guests */ bool do_vpsci_0_1_call(struct cpu_user_regs *regs, uint32_t fid); diff --git a/xen/arch/arm/vpsci.c b/xen/arch/arm/vpsci.c index 7ba9ccd94b..11334b3426 100644 --- a/xen/arch/arm/vpsci.c +++ b/xen/arch/arm/vpsci.c @@ -10,28 +10,18 @@ =20 #include =20 -static int do_common_cpu_on(register_t target_cpu, register_t entry_point, +static int do_setup_vcpu_ctx(struct vcpu *v, register_t entry_point, register_t context_id) { - struct vcpu *v; struct domain *d =3D current->domain; struct vcpu_guest_context *ctxt; int rc; bool is_thumb =3D entry_point & 1; - register_t vcpuid; - - vcpuid =3D vaffinity_to_vcpuid(target_cpu); - - if ( (v =3D domain_vcpu(d, vcpuid)) =3D=3D NULL ) - return PSCI_INVALID_PARAMETERS; =20 /* THUMB set is not allowed with 64-bit domain */ if ( is_64bit_domain(d) && is_thumb ) return PSCI_INVALID_ADDRESS; =20 - if ( !test_bit(_VPF_down, &v->pause_flags) ) - return PSCI_ALREADY_ON; - if ( (ctxt =3D alloc_vcpu_guest_context()) =3D=3D NULL ) return PSCI_DENIED; =20 @@ -78,11 +68,32 @@ static int do_common_cpu_on(register_t target_cpu, regi= ster_t entry_point, if ( rc < 0 ) return PSCI_DENIED; =20 - vcpu_wake(v); - return PSCI_SUCCESS; } =20 +static int do_common_cpu_on(register_t target_cpu, register_t entry_point, + register_t context_id) +{ + int rc; + struct vcpu *v; + struct domain *d =3D current->domain; + register_t vcpuid; + + vcpuid =3D vaffinity_to_vcpuid(target_cpu); + + if ( (v =3D domain_vcpu(d, vcpuid)) =3D=3D NULL ) + return PSCI_INVALID_PARAMETERS; + + if ( !test_bit(_VPF_down, &v->pause_flags) ) + return PSCI_ALREADY_ON; + + rc =3D do_setup_vcpu_ctx(v, entry_point, context_id); + if ( rc =3D=3D PSCI_SUCCESS ) + vcpu_wake(v); + + return rc; +} + static int32_t do_psci_cpu_on(uint32_t vcpuid, register_t entry_point) { int32_t ret; @@ -197,6 +208,39 @@ static void do_psci_0_2_system_reset(void) domain_shutdown(d,SHUTDOWN_reboot); } =20 +static int32_t do_psci_1_0_system_suspend(register_t epoint, register_t ci= d) +{ + int ret; + struct vcpu *v; + struct domain *d =3D current->domain; + + /* SYSTEM_SUSPEND is not supported for the hardware domain yet */ + if ( is_hardware_domain(d) ) + return PSCI_NOT_SUPPORTED; + + /* + * Shut down the domain first to ensure all vCPUs are paused + * before checking that they (except the calling one) are offline. + */ + domain_shutdown(d, SHUTDOWN_suspend); + + /* Ensure that all CPUs other than the calling one are offline */ + for_each_vcpu ( d, v ) + { + if ( v !=3D current && is_vcpu_online(v) ) + { + domain_resume_nopause(d); + return PSCI_DENIED; + } + } + + ret =3D do_setup_vcpu_ctx(current, epoint, cid); + if ( ret !=3D PSCI_SUCCESS ) + domain_resume_nopause(d); + + return ret; +} + static int32_t do_psci_1_0_features(uint32_t psci_func_id) { /* /!\ Ordered by function ID and not name */ @@ -214,6 +258,8 @@ static int32_t do_psci_1_0_features(uint32_t psci_func_= id) case PSCI_0_2_FN32_SYSTEM_OFF: case PSCI_0_2_FN32_SYSTEM_RESET: case PSCI_1_0_FN32_PSCI_FEATURES: + case PSCI_1_0_FN32_SYSTEM_SUSPEND: + case PSCI_1_0_FN64_SYSTEM_SUSPEND: case ARM_SMCCC_VERSION_FID: return 0; default: @@ -344,6 +390,24 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uin= t32_t fid) return true; } =20 + case PSCI_1_0_FN32_SYSTEM_SUSPEND: + case PSCI_1_0_FN64_SYSTEM_SUSPEND: + { + register_t epoint =3D PSCI_ARG(regs, 1); + register_t cid =3D PSCI_ARG(regs, 2); + + if ( is_64bit_domain(current->domain) && + fid =3D=3D PSCI_1_0_FN32_SYSTEM_SUSPEND ) + { + epoint &=3D GENMASK(31, 0); + cid &=3D GENMASK(31, 0); + } + + perfc_incr(vpsci_system_suspend); + PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid)); + return true; + } + default: return false; } diff --git a/xen/common/domain.c b/xen/common/domain.c index 303c338ef2..5b760f0cd9 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1326,16 +1326,10 @@ int domain_shutdown(struct domain *d, u8 reason) return 0; } =20 -void domain_resume(struct domain *d) +void domain_resume_nopause(struct domain *d) { struct vcpu *v; =20 - /* - * Some code paths assume that shutdown status does not get reset under - * their feet (e.g., some assertions make this assumption). - */ - domain_pause(d); - spin_lock(&d->shutdown_lock); =20 d->is_shutting_down =3D d->is_shut_down =3D 0; @@ -1349,10 +1343,32 @@ void domain_resume(struct domain *d) } =20 spin_unlock(&d->shutdown_lock); +} =20 +void domain_resume(struct domain *d) +{ + /* + * Some code paths assume that shutdown status does not get reset under + * their feet (e.g., some assertions make this assumption). + */ + domain_pause(d); + domain_resume_nopause(d); domain_unpause(d); } =20 +bool vcpu_is_suspended(struct vcpu *v) +{ + bool is_suspended; + struct domain *d =3D v->domain; + + spin_lock(&d->shutdown_lock); + is_suspended =3D d->shutdown_code =3D=3D SHUTDOWN_suspend && + v->paused_for_shutdown; + spin_unlock(&d->shutdown_lock); + + return is_suspended; +} + int vcpu_start_shutdown_deferral(struct vcpu *v) { if ( v->defer_shutdown ) diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index fe53d4fab7..2e163497bd 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -814,6 +814,7 @@ void domain_destroy(struct domain *d); int domain_kill(struct domain *d); int domain_shutdown(struct domain *d, u8 reason); void domain_resume(struct domain *d); +void domain_resume_nopause(struct domain *d); =20 int domain_soft_reset(struct domain *d, bool resuming); =20 @@ -824,6 +825,7 @@ int get_domain_state(struct xen_domctl_get_domain_state= *info, =20 int vcpu_start_shutdown_deferral(struct vcpu *v); void vcpu_end_shutdown_deferral(struct vcpu *v); +bool vcpu_is_suspended(struct vcpu *v); =20 /* * Mark specified domain as crashed. This function always returns, even if= the --=20 2.48.1 From nobody Thu Oct 30 19:06:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1753350141; cv=none; d=zohomail.com; s=zohoarc; b=Eo2kWOQSS6N35JsEDFVhWwanyyFNcPC4KunUTfWVSpupqDRb8uoBBhGvxyYRQ7wiB+94EaDGMHdqibXGBlxC1utOrvf2zzusQMr3cavMJ9m1Oes8SY5eKGeiUuYTyTgQPVpxmzLfhq39G7rFrYKHQzqWBl/+xDwO3lCOvbWs4f0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753350141; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pex6Ej+2o+mdbgt0MgnBZKJZc6lsBhLQsNhwotC5eNw=; b=E5do3/s9UrhDxyAZeLkp61hrgVlcL2ETzXsSL1V64WYTWGSQPnqa5EUxlzLlZV0qeFCn9G48YaEWJ81izA3HZ/Mnm5a+/qoUQD3n2n/nZGS9HimCFARkFMiUxjLsbF6ENPqk71J/f9zH8T7dcnpmKaSL4kF7To7nR2JhIFmHYcQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1753350141521661.2115344122788; Thu, 24 Jul 2025 02:42:21 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1055531.1423903 (Exim 4.92) (envelope-from ) id 1uesSe-0008FH-Dw; Thu, 24 Jul 2025 09:42:00 +0000 Received: by outflank-mailman (output) from mailman id 1055531.1423903; Thu, 24 Jul 2025 09:42:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSe-0008FA-9w; Thu, 24 Jul 2025 09:42:00 +0000 Received: by outflank-mailman (input) for mailman id 1055531; Thu, 24 Jul 2025 09:41:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSc-0007nR-Oa for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 09:41:58 +0000 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [2a00:1450:4864:20::130]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 6ffc2a90-6872-11f0-b895-0df219b8e170; Thu, 24 Jul 2025 11:41:56 +0200 (CEST) Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-55b50590cb2so791353e87.0 for ; Thu, 24 Jul 2025 02:41:56 -0700 (PDT) Received: from yp-VivoBook-ASUSLaptop-M1503QA-M1503QA.. ([95.67.15.120]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-331e08e98aesm2418261fa.54.2025.07.24.02.41.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jul 2025 02:41:54 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 6ffc2a90-6872-11f0-b895-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753350116; x=1753954916; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pex6Ej+2o+mdbgt0MgnBZKJZc6lsBhLQsNhwotC5eNw=; b=m5f+9lxNBwBOlVRtXfexTAdVgrCjvs07NRD9OtCClH3iXDX2+jdHU7TWKlXsFXfDQ8 cJLPCSibmNO01GbqrUW0+MQWCVeayVw1Iu1qwE62xYudKdbsbq+mapfs1h/mwux5Mn51 8UWhIGXEYPK3lDh9flDS/G+Mq7mzyzAGMi/xvjcUriE8UfzdUKD/uOywqyWu3KT1H5mT NxSiMxnlS0wwPE/92ltoYofTA1KNoOL5WUcG0DA/QPzjgcuOoQC/w3y0qAUO9A4kfLpO ZA054+i122T/bTZEhb/Efca/356yDbM1qT4iJEmoCUPGsj8IeIsjalwGGGirYhFOP7UX NYbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753350116; x=1753954916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pex6Ej+2o+mdbgt0MgnBZKJZc6lsBhLQsNhwotC5eNw=; b=l8yEYHdbzLBjOWGUbuDjOht7HJfOINcawraC50fP82/se7QKBu/2t3EE/WuqrsRq9g Rrnka/OzJT7JPhLGfjgjGEStEldeT1ATHHXhCECHk4UfEbjX53OALe6b0cKYx+Fgip8C WL2qs68+D5rSoan224OF0XdjnDTh/abVX9qNXUaW3IEMbqk/oaclpVVdMzowtJL9/rSW ShUHMf5lUM4LWuVjlBVfD50AQq1Dl+UkRRNu95HRdmXRtfcqEt48JXuL87yTnTrTbSNq sVNCAQjh+HN2gG0RWOAXG+hKmsNj315LQV8PI7smoENNQ5HbwxDjRBTm7YUxb+olYgaZ ICKg== X-Gm-Message-State: AOJu0Yy0of20AIkmlT5BiyZxPyVqm4Nt3fSs+NFU22b+WOZ7CjvabQNA /27U2C3+iO/zilSagiyoVVRzJ3uK/Q48Pmf2ISVjkHHb3EJvdw85gRlmSPraug== X-Gm-Gg: ASbGncu1Ptv5A8GcMJePxSLcpFkWJU+KNCVdStM/MqYl8XQoSimAPc9zGWiQOe70u7j OCGsreIS7WQbxCMObk+3Ai/oVpfLgGugaqecO6Xw/AZRnVA2pf7l1NfXYW85ZvYSDonE5kE4YZR 8sAc/AHjAKUdNA8ZDFyaAAes/d14AzchdEYy6aCoLFkao+9xRBLKLcLr+ANb4cyilD5kY/JjbYd XlBb1zrgEtBwElD2WGM6wYE8EO4A0y4zpt70K3LP9WKi7KeOFjv4dN076Dcxj4oIaZy7rYyFmPY 3C6n29X6rTFTXkwXcz8WQvwB72Boj2P0Htjdev1p3A+8jHC720AwwlX0KNswZW4hVuEXMNitN8E 4n/jYBAONJBEMjuMD6PK+03oMfAS6jQ1PceC2aWQ70022KJJCMQWcI0vE94M+Yg== X-Google-Smtp-Source: AGHT+IE0MQF8l25JjMYXbPcSZXJf3o8vuh5/gMD01xS+vVTBfObUuXV5mMk2AzaCkfgQZJk678w6Rw== X-Received: by 2002:a05:6512:b1b:b0:553:1f90:cca4 with SMTP id 2adb3069b0e04-55a5135666amr1656946e87.13.1753350115359; Thu, 24 Jul 2025 02:41:55 -0700 (PDT) From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Mykola Kvach , Anthony PERARD , Juergen Gross Subject: [PATCH v6 2/4] tools/xl: Allow compilation of 'xl resume' command on Arm Date: Thu, 24 Jul 2025 12:40:57 +0300 Message-ID: <48ea1dfb5bbcbc993332acb8508060d7cba342fc.1753349109.git.mykola_kvach@epam.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1753350142656116600 Content-Type: text/plain; charset="utf-8" From: Mykola Kvach The "xl resume" command was previously excluded from Arm builds because system suspend/resume (e.g., SYSTEM_SUSPEND via vPSCI) was not implemented. On x86, this command is used for ACPI S3 suspend/resume. This change enables compilation of `xl resume` on Arm regardless of the underlying implementation status, making the tool available for testing and future feature support. The relevant libxl infrastructure and handler functions are already present and usable. The macro `LIBXL_HAVE_NO_SUSPEND_RESUME` has been renamed to `LIBXL_HAVE_NO_SUSPEND` to better reflect the updated semantics. Note: This does not imply full system suspend/resume support on Arm. The `xl suspend` command still does not work on Arm platforms. Signed-off-by: Mykola Kvach --- Changes in v6: - Renamed macro from LIBXL_HAVE_NO_SUSPEND_RESUME to LIBXL_HAVE_NO_SUSPEND to better reflect the scope of this change - Applied cosmetic changes based on review feedback --- tools/include/libxl.h | 5 ++--- tools/xl/xl.h | 10 +++++----- tools/xl/xl_cmdtable.c | 8 ++++---- tools/xl/xl_migrate.c | 4 ++-- tools/xl/xl_saverestore.c | 4 ++-- tools/xl/xl_vmcontrol.c | 14 +++++++------- 6 files changed, 22 insertions(+), 23 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index d6b6e5d2dd..632264912a 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1128,17 +1128,16 @@ typedef struct libxl__ctx libxl_ctx; #define LIBXL_HAVE_SIGCHLD_SHARING 1 =20 /* - * LIBXL_HAVE_NO_SUSPEND_RESUME + * LIBXL_HAVE_NO_SUSPEND * * Is this is defined then the platform has no support for saving, * restoring or migrating a domain. In this case the related functions * should be expected to return failure. That is: * - libxl_domain_suspend - * - libxl_domain_resume * - libxl_domain_remus_start */ #if defined(__arm__) || defined(__aarch64__) -#define LIBXL_HAVE_NO_SUSPEND_RESUME 1 +#define LIBXL_HAVE_NO_SUSPEND 1 #endif =20 /* diff --git a/tools/xl/xl.h b/tools/xl/xl.h index 45745f0dbb..4d4a5bb1c8 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -56,7 +56,7 @@ int create_domain(struct domain_create *dom_info); static const char savefileheader_magic[32]=3D "Xen saved domain, xl format\n \0 \r"; =20 -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND static const char migrate_receiver_banner[]=3D "xl migration receiver ready, send binary domain data.\n"; static const char migrate_receiver_ready[]=3D @@ -65,7 +65,7 @@ static const char migrate_permission_to_go[]=3D "domain is yours, you are cleared to unpause"; static const char migrate_report[]=3D "my copy unpause results are as follows"; -#endif +#endif /* !LIBXL_HAVE_NO_SUSPEND */ =20 /* followed by one byte: * 0: everything went well, domain is running @@ -124,14 +124,14 @@ int main_pciattach(int argc, char **argv); int main_pciassignable_add(int argc, char **argv); int main_pciassignable_remove(int argc, char **argv); int main_pciassignable_list(int argc, char **argv); -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND int main_restore(int argc, char **argv); int main_migrate_receive(int argc, char **argv); int main_save(int argc, char **argv); int main_migrate(int argc, char **argv); int main_suspend(int argc, char **argv); +#endif /* !LIBXL_HAVE_NO_SUSPEND */ int main_resume(int argc, char **argv); -#endif int main_dump_core(int argc, char **argv); int main_pause(int argc, char **argv); int main_unpause(int argc, char **argv); @@ -202,7 +202,7 @@ int main_cpupoolnumasplit(int argc, char **argv); int main_getenforce(int argc, char **argv); int main_setenforce(int argc, char **argv); int main_loadpolicy(int argc, char **argv); -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND int main_remus(int argc, char **argv); #endif int main_devd(int argc, char **argv); diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 06a0039718..03f0970bb7 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -152,7 +152,7 @@ const struct cmd_spec cmd_table[] =3D { " -autopass\n" "--vncviewer-autopass (consistency alias for --autopass)" }, -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND { "save", &main_save, 0, 1, "Save a domain state to restore later", @@ -198,12 +198,12 @@ const struct cmd_spec cmd_table[] =3D { "Suspend a domain to RAM", "", }, +#endif /* !LIBXL_HAVE_NO_SUSPEND */ { "resume", &main_resume, 0, 1, "Resume a domain from RAM", "", }, -#endif { "dump-core", &main_dump_core, 0, 1, "Core dump a domain", @@ -524,7 +524,7 @@ const struct cmd_spec cmd_table[] =3D { "Loads a new policy into the Flask Xen security module", "", }, -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND { "remus", &main_remus, 0, 1, "Enable Remus HA for domain", @@ -548,7 +548,7 @@ const struct cmd_spec cmd_table[] =3D { " checkpoint must be disabled.\n" "-p Use COLO userspace proxy." }, -#endif +#endif /* !LIBXL_HAVE_NO_SUSPEND */ { "devd", &main_devd, 0, 1, "Daemon that listens for devices and launches backends", diff --git a/tools/xl/xl_migrate.c b/tools/xl/xl_migrate.c index b8594f44a5..a8e2c39944 100644 --- a/tools/xl/xl_migrate.c +++ b/tools/xl/xl_migrate.c @@ -30,7 +30,7 @@ #include "xl_utils.h" #include "xl_parse.h" =20 -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND =20 static pid_t create_migration_child(const char *rune, int *send_fd, int *recv_fd) @@ -767,7 +767,7 @@ int main_remus(int argc, char **argv) close(send_fd); return EXIT_FAILURE; } -#endif +#endif /* !LIBXL_HAVE_NO_SUSPEND */ =20 =20 /* diff --git a/tools/xl/xl_saverestore.c b/tools/xl/xl_saverestore.c index 953d791d1a..cb10b869b9 100644 --- a/tools/xl/xl_saverestore.c +++ b/tools/xl/xl_saverestore.c @@ -29,7 +29,7 @@ #include "xl_utils.h" #include "xl_parse.h" =20 -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND =20 void save_domain_core_begin(uint32_t domid, int preserve_domid, @@ -270,7 +270,7 @@ int main_save(int argc, char **argv) return EXIT_SUCCESS; } =20 -#endif /* LIBXL_HAVE_NO_SUSPEND_RESUME */ +#endif /* !LIBXL_HAVE_NO_SUSPEND */ =20 =20 =20 diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c index c813732838..49484ca3e2 100644 --- a/tools/xl/xl_vmcontrol.c +++ b/tools/xl/xl_vmcontrol.c @@ -32,17 +32,12 @@ =20 static int fd_lock =3D -1; =20 -#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +#ifndef LIBXL_HAVE_NO_SUSPEND static void suspend_domain(uint32_t domid) { libxl_domain_suspend_only(ctx, domid, NULL); } =20 -static void resume_domain(uint32_t domid) -{ - libxl_domain_resume(ctx, domid, 1, NULL); -} - int main_suspend(int argc, char **argv) { int opt; @@ -55,6 +50,12 @@ int main_suspend(int argc, char **argv) =20 return EXIT_SUCCESS; } +#endif /* !LIBXL_HAVE_NO_SUSPEND */ + +static void resume_domain(uint32_t domid) +{ + libxl_domain_resume(ctx, domid, 1, NULL); +} =20 int main_resume(int argc, char **argv) { @@ -68,7 +69,6 @@ int main_resume(int argc, char **argv) =20 return EXIT_SUCCESS; } -#endif =20 static void pause_domain(uint32_t domid) { --=20 2.48.1 From nobody Thu Oct 30 19:06:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1753350148; cv=none; d=zohomail.com; s=zohoarc; b=AsCokTQlGk9PiaaiaI1t605M25gLfS1zR7e7n665od1ztY90VBJiFUm7Zws2YbLGGZzIjk5kPk7pnXr06dRROqguNn03TeYN++R9EpLegd0NXGMeHgfeHkuurDHujjG3UvDwujbXAafnDxVHv2tqoQPWFvkm18TquPmMSSMj5u8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753350148; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gDyBEr2C8bHK7ao0mUQj4cm53R0gNtsq0NOW3g9oj/Q=; b=Yg0g9bKmPTToz0NTkTgndvj/ghRiqxvou28JTAF9nIQt/RY8EFeecaQHo11qjhrMLMKABNey5aVZZX+Gsf7bXi7/JKPYz13SHzTxkMBbuH0OmPQW5BJq7tGBEe76SZ0ue4Ppd6ntTFkSpTMVDYRV+FdSmyn9jv7y3BtcTnW6PWY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1753350148096412.86067284232206; Thu, 24 Jul 2025 02:42:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1055532.1423909 (Exim 4.92) (envelope-from ) id 1uesSe-0008Ib-OG; Thu, 24 Jul 2025 09:42:00 +0000 Received: by outflank-mailman (output) from mailman id 1055532.1423909; Thu, 24 Jul 2025 09:42:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSe-0008Hk-HY; Thu, 24 Jul 2025 09:42:00 +0000 Received: by outflank-mailman (input) for mailman id 1055532; Thu, 24 Jul 2025 09:41:59 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSd-0007nR-Ob for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 09:41:59 +0000 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [2a00:1450:4864:20::22c]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 70bc2abd-6872-11f0-b895-0df219b8e170; Thu, 24 Jul 2025 11:41:57 +0200 (CEST) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-32b50f357ecso6956701fa.2 for ; Thu, 24 Jul 2025 02:41:57 -0700 (PDT) Received: from yp-VivoBook-ASUSLaptop-M1503QA-M1503QA.. ([95.67.15.120]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-331e08e98aesm2418261fa.54.2025.07.24.02.41.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jul 2025 02:41:55 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 70bc2abd-6872-11f0-b895-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753350117; x=1753954917; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gDyBEr2C8bHK7ao0mUQj4cm53R0gNtsq0NOW3g9oj/Q=; b=nLYN2YTYC3Tq3EmXpznRIFS/poVsuszaY1/EdoBsnENnweUpf6MVszGGcORqddGG8N 6tPPn7lT+QTcE4F+EpTTh7dx002SEglDVl4Vrkn/ePNLIA6sY20N8C7aPIkFDZsRKz9o afaor4GwnXoY3fa7eY/edP8Fo29ZCYfWkBUCJXMMkZzACzPlhQ/RRKmwsV6fGWKpt6wo MtTFXv6l9BzntMHI78idnOjzA6juBWn5zFHFuXXEkdMjcrVmom3IszOLWo6ufjlRaZ1Q l9CJ61pwvhPev+lvbOHH3Wuw2Yo+DIReL5qYtWN5TmPnDqWY5LwvFzpFtY+kp2238m9d RKnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753350117; x=1753954917; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gDyBEr2C8bHK7ao0mUQj4cm53R0gNtsq0NOW3g9oj/Q=; b=tH8fOIxyGA1/4pRkmEAaq99bGrWzRWnGnId+BLKQje7Ff/fhpRpd5a1bEBkbr71+OR nNGh/ydaHkUZj9GoHLPi+B8fCZdsIhGeybcsLT9+iCtnlmKh+5IfhZHlK2kycx2oUxN6 /gLfVU+ndwoztMcMyesPF1f96KBoBsq0/x72VB0v9+meE0IVnTdoVlN7LR4MsbHGj0X9 VMLODUjzacyessZwUAL4RRdQtowp65vlTNR3cRmaryk2rz4/xJNPWKrHdvG/ernyDNpr JH+p2M4NQsMHV3eYb8or5Wj8emQ7MhznpeQ6Q+mRpw+H/egFCQdTU+cydxQUJmmYgZl+ tTHw== X-Gm-Message-State: AOJu0Yy/h/v806qwtVQpHzlJtMJhxZwh/2WF7f1p8xj+svlZ2KRIWtCh VsjP4ZD9DBDQk737E4RaNCTRwVlltWmZFyIqpRwwz6vjGOWVpMYOGnctoWVDPQ== X-Gm-Gg: ASbGncuGFGQeeFQa8F0VgXX/9xGan03r8IQ4OjYqOLBEEeFCgReYpsOnkiqANkiqFrg SFxFBeQI6gxuJN+SBWdTyV0l9yJEHsLyemB2xggETmPcdTI2Ca8XduZB8VA1J5UUyQT5AY3iyRN aB/ESR/jQ1xAGXi//zgr0DBYkGJ8dEPcxJE7oMdnNutdhxM9Z5/TzXAgC9iJCiuwX/pW3HPPMZ9 05iuWEfC5y5gG1BGfzFl62WBlsYuHeVv96tE/WnVGsoik9URg7XbAjXws5rKi+DXzo+YeJGqWtZ ntov60+lUj5gztJodSxOsEmkzhmQpHaoVaumvDmkV8FGcaJ7GsQAfvlhRs1chKueETiLJWU57dv 8MNFjlH9afePwfOs1mF7OFBwxWasuGOf0B5k40ygw3J98mQYmJP4gwoG2nekfRg== X-Google-Smtp-Source: AGHT+IG9GwZak+d2gdXYdv5JwkuYoBsbORCRb/3VrhaWWfxO04GfqQIi4en2cdJdWRLhviWo+wWqmQ== X-Received: by 2002:a2e:a549:0:b0:32a:78f7:9bef with SMTP id 38308e7fff4ca-330dfbdc5a1mr20783461fa.8.1753350116663; Thu, 24 Jul 2025 02:41:56 -0700 (PDT) From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Mykola Kvach , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v6 3/4] SUPPORT.md: Document PSCI SYSTEM_SUSPEND support for guests Date: Thu, 24 Jul 2025 12:40:58 +0300 Message-ID: <4b6c7e5fe521d482d7268dfcc570f323b9bd0878.1753349109.git.mykola_kvach@epam.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1753350148464116600 Content-Type: text/plain; charset="utf-8" From: Mykola Kvach Add a new entry under the "Virtual Hardware, QEMU" section documenting support for the optional PSCI SYSTEM_SUSPEND function exposed to guests. This function is available via the virtual PSCI (vPSCI) interface and allows guest domains (domUs) to initiate system suspend operations. The feature is currently marked as Experimental. Signed-off-by: Mykola Kvach --- Changes in v6: - Dropped the generic guest PSCI support entry (merged in a separate patch) - This patch now documents only the SYSTEM_SUSPEND optional function - Reworded commit message to match the final form after rebase Changes in v5: - Dropped ARM/PSCI entry: this refers to internal use of PSCI SMC calls, which is not relevant for SUPPORT.md - Added a dedicated entry for PSCI SYSTEM_SUSPEND instead of generic guest PSCI info; guest PSCI support was documented in a separate patch --- SUPPORT.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SUPPORT.md b/SUPPORT.md index 6a82a92189..b5ab049b52 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -962,8 +962,9 @@ Emulated PSCI interface exposed to guests. We support a= ll mandatory functions of PSCI 1.1. See below for the list of optional PSCI call implemented and their status. =20 - Status, Mandatory: Supported - Status, MIGRATE_INFO_TYPE: Supported + Status, Mandatory: Supported + Status, MIGRATE_INFO_TYPE: Supported + Status, SYSTEM_SUSPEND: Experimental =20 ## Virtual Hardware, QEMU =20 --=20 2.48.1 From nobody Thu Oct 30 19:06:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1753350140; cv=none; d=zohomail.com; s=zohoarc; b=GgV+pP2uja2FS2aymmwA/0E130HbHet/eLk5m8/YTuf7+dHRcgxb6uxpMmkdEUXMUfUxzLFP1+ORA7find2DIA2M3YTHp939CzCdRokBq26Jnq1yvPP5UB/xv5/FT6xoEnsqnTinsdXKCyEWIm1gLS/WBzgL9pEcNOX8/Crt31k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753350140; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rSXErmgf4mUOU3w7XCCgpOwuZwNZDieNzbmZWIHlqM8=; b=QnaFvi5Uj+wFEbsN6TpYDFgkGxfb7fm6bra2gLSYiWfjNUCSIyXIQsQpeVyulduGhMJfQaDhIRTGaCUNQCoLN7Tc65lWsEDq9p7A/VQmgE8E2aLajEVgronddqKvADft+MLRuNy5qCkXNVIfcEZkVItiXxPGUE08X1c5HlNmWdc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1753350140799575.0416600989198; Thu, 24 Jul 2025 02:42:20 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1055533.1423915 (Exim 4.92) (envelope-from ) id 1uesSf-0008NP-1c; Thu, 24 Jul 2025 09:42:01 +0000 Received: by outflank-mailman (output) from mailman id 1055533.1423915; Thu, 24 Jul 2025 09:42:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSe-0008Lh-Pq; Thu, 24 Jul 2025 09:42:00 +0000 Received: by outflank-mailman (input) for mailman id 1055533; Thu, 24 Jul 2025 09:42:00 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uesSd-00084c-U7 for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 09:41:59 +0000 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [2a00:1450:4864:20::22a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 717d0fc4-6872-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 11:41:58 +0200 (CEST) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-32b7f41d3e6so9738261fa.1 for ; Thu, 24 Jul 2025 02:41:58 -0700 (PDT) Received: from yp-VivoBook-ASUSLaptop-M1503QA-M1503QA.. ([95.67.15.120]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-331e08e98aesm2418261fa.54.2025.07.24.02.41.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jul 2025 02:41:57 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 717d0fc4-6872-11f0-a31e-13f23c93f187 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753350118; x=1753954918; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rSXErmgf4mUOU3w7XCCgpOwuZwNZDieNzbmZWIHlqM8=; b=ee5wOzpbqd4cyv7cB/RcAxOInfen4reWCWp1bimjDL3yRRRc29Dh9KZZvCr6Wj9/yV 6k4Yiu49pNR9TQmbkeC4TLWELZVwUsvcpMdiAYsHuQWtRoDfFtJK/7uZDtxE6a6qAzAY De6SOmnc+MbOADs2szSI+wOuQObJ892xy0IKTeSaLahgfreUbVVTwpLH0BxYQaCl8Q3W WB24hK8/U3bQxSk3jm3Aa+aHLq2cpR92wOY7K+7GT1/2QLOsaO0Ch6j/ckwYR19+iZMI S5KcN6xxtk+dfuzpuRRRvnnK+/WwsI8jI4rN7qiRQAoFgk6Dc2ZSm7MdzJe07f3TxdDq dCpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753350118; x=1753954918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rSXErmgf4mUOU3w7XCCgpOwuZwNZDieNzbmZWIHlqM8=; b=P1B4ZDJrxyBKKSvI+H1rL3yGHAtfdQRnuH/Lmz4tcPjASDPY0BoO9yGxAhFZAlXL9d Ape9/ad+b1SxALHngCsn1+qzJ/vG+tzITans9W4ennLpiVWjXOknEK08QiKpIdKzTJ0H DitVTmJsXQVN6hqaUCipfpUg5bAqbJcZ0+us1l0GLaojRPvymMzbVn0RCLp3tdKwzKa2 XYnRPrLCGfNQoK3xf9n7l8uWVLVgfnWVZ+x6kRIL9lV8/MVZz6mkaxydjkCkODN/wvZw UeuSc1KSI0WITecRYjZc7U6vcJqRNthj4ROK4fXaW7OPB9MdDfRD4XSLtRHYjxGltHj0 SJnA== X-Gm-Message-State: AOJu0YyHDOrM+OT4rl2AJX6n3oUw+vCHZxUV53Yav8mlHkhAwkMdPGWS jHT9RUlsFjPdX/1Ol0kuN8sEtFZLUeSNitz05F4YMDjclJ7zsA8YX/C4RTHALg== X-Gm-Gg: ASbGnctj+K/9yCL7ncm4U3eJsytLQ9S/cCAkerFH5EZb+BziqsOQYqAHpnjEgAczI82 GmCmzOtJiMX6MSH2JfbQrZJdIpch/9I8g7gSxlF1zswjqbSTaK01oGMRWtXMuwqi7QeiUnnwkh7 QaV64uuR1FtYRR23urKl20Cq1yWVBkKrctsSXmEBjJ8VNqMpgVuQuBkMaO1KEAZygohX5kaqNtV GzsYscedKrcZ5zmbRCnJY4HZ3InbZ4hEuuZnjYdbeespxAbOe3aDdf3jqz1pgZ+D93HPa1FwZ5E H3dO5eRuZqCYC4/j+nUI1TOiut/FwHoamAQuWhC971Wo7GrBWUG0Ei3KlvUlRSKG4AdUPWUMqyU rAsGcn7lXk3WhHNVfcTGc4KGi4nqTizdGxW/CEjUVuKpPues8En5A3kO8XIfraHhqam3/lPRQ X-Google-Smtp-Source: AGHT+IGiiF+rKwojBE1+cwq793sp9I8CMc9a4c4ASsbV2ny1yE0G4d4KGIdhd7UXtIqriz/RZGLAzg== X-Received: by 2002:a2e:b4a9:0:b0:32c:a097:414c with SMTP id 38308e7fff4ca-331e253ba50mr2587121fa.11.1753350117903; Thu, 24 Jul 2025 02:41:57 -0700 (PDT) From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Mykola Kvach , Oleksii Kurochko , Community Manager Subject: [PATCH v6 4/4] CHANGELOG: Document guest suspend/resume to RAM support on Arm Date: Thu, 24 Jul 2025 12:40:59 +0300 Message-ID: <87a75d83f2b6f6701e28c935856f0f7b1dad05bd.1753349109.git.mykola_kvach@epam.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1753350142455116600 Content-Type: text/plain; charset="utf-8" From: Mykola Kvach Mention the newly added support for guest suspend and resume to/from RAM via vPSCI on Arm platforms. This support is limited to non-hardware domain guests. Signed-off-by: Mykola Kvach Acked-by: Oleksii Kurochko --- Chnages in v6: - removed reduntand explanation that thi support added for both arm32 and arm64. Changes in v5: - adjustments to the commit title and message - expanded the changelog entry to include more context about suspend/resume support introduced in this patch series --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f31ca08fe..7e42ca9b59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ The format is based on [Keep a Changelog](https://keepach= angelog.com/en/1.0.0/) =20 - On Arm: - Ability to enable stack protector + - Support for guest suspend and resume to/from RAM via vPSCI. + Applies only to non-hardware domain guests. =20 ### Removed - On x86: --=20 2.48.1