git: 642c0334f50a - main - bhyve/arm64: Implement PSCI_FNID_CPU_OFF

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Thu, 07 Aug 2025 16:42:41 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=642c0334f50a089aa0c3a58b0994f35afc638833

commit 642c0334f50a089aa0c3a58b0994f35afc638833
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2025-08-07 11:18:43 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2025-08-07 11:30:59 +0000

    bhyve/arm64: Implement PSCI_FNID_CPU_OFF
    
    Support PSCI CPU_OFF by suspending the CPU and removing it from the
    running CPU set.
    
    Reviewed by:    markj
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D51768
---
 usr.sbin/bhyve/aarch64/vmexit.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c
index e6dd4b074d39..3acad4020a3c 100644
--- a/usr.sbin/bhyve/aarch64/vmexit.c
+++ b/usr.sbin/bhyve/aarch64/vmexit.c
@@ -202,7 +202,10 @@ vmexit_smccc(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
 		smccc_rv = PSCI_VER(1, 0);
 		break;
 	case PSCI_FNID_CPU_SUSPEND:
+		break;
 	case PSCI_FNID_CPU_OFF:
+		CPU_CLR_ATOMIC(vcpu_id(vcpu), &running_cpumask);
+		vm_suspend_cpu(vcpu);
 		break;
 	case PSCI_FNID_CPU_ON:
 		mpidr = vme->u.smccc_call.args[0];