|
|
Log in / Subscribe / Register

arm64: Handle PSCI calls in userspace

From:  Suzuki K Poulose <suzuki.poulose-AT-arm.com>
To:  kvmarm-AT-lists.linux.dev
Subject:  [kvmtool PATCH v5 00/15] arm64: Handle PSCI calls in userspace
Date:  Thu, 08 Jan 2026 17:57:38 +0000
Message-ID:  <20260108175753.1292097-1-suzuki.poulose@arm.com>
Cc:  kvm-AT-vger.kernel.org, maz-AT-kernel.org, will-AT-kernel.org, oupton-AT-kernel.org, aneesh.kumar-AT-kernel.org, steven.price-AT-arm.com, linux-kernel-AT-vger.kernel.org, alexandru.elisei-AT-arm.com, tabba-AT-google.com, Suzuki K Poulose <suzuki.poulose-AT-arm.com>

This is version 5 of the patch series, originally posted by Oliver [0].

Use SMCCC filtering capability in to handle PSCI calls in the userspace.

Changes since v4:
Link: https://lkml.kernel.org/r/20250930103130.197534-1-suzuki....

 - Update headers to v6.18
 - Remove duplicate assignment of pause_req_cpu (Marc)
 - Flip the command line to opt in for PSCI in userspace, retaining default
   in kernel handling. (Marc)
 - Collect Review from Marc, thanks!

Changes since v3:
 - Address Will's comment on the race between pause/resume - Patch 1
 - Rebase on to v6.17-rc7
 - Drop importing cputype.h, which was not used by the series

[0] https://lore.kernel.org/all/20230802234255.466782-1-olive...



Oliver Upton (12):
  Import arm-smccc.h from Linux v6.18
  arm64: Stash kvm_vcpu_init for later use
  arm64: Use KVM_SET_MP_STATE ioctl to power off non-boot vCPUs
  arm64: Expose ARM64_CORE_REG() for general use
  arm64: Add support for finding vCPU for given MPIDR
  arm64: Add skeleton implementation for PSCI
  arm64: psci: Implement CPU_SUSPEND
  arm64: psci: Implement CPU_ON
  arm64: psci: Implement AFFINITY_INFO
  arm64: psci: Implement MIGRATE_INFO_TYPE
  arm64: psci: Implement SYSTEM_{OFF,RESET}
  arm64: smccc: Start sending PSCI to userspace

Suzuki K Poulose (3):
  Allow pausing the VM from vcpu thread
  update_headers: arm64: Track psci.h for PSCI definitions
  update headers: Linux v6.18

 Makefile                            |   2 +
 arm64/include/asm/kvm.h             |  23 ++-
 arm64/include/asm/smccc.h           |  65 ++++++
 arm64/include/kvm/kvm-arch.h        |   2 +
 arm64/include/kvm/kvm-config-arch.h |   8 +-
 arm64/include/kvm/kvm-cpu-arch.h    |  30 ++-
 arm64/kvm-cpu.c                     |  51 +++--
 arm64/kvm.c                         |  20 ++
 arm64/psci.c                        | 207 +++++++++++++++++++
 arm64/smccc.c                       |  81 ++++++++
 include/linux/arm-smccc.h           | 305 ++++++++++++++++++++++++++++
 include/linux/kvm.h                 |  36 ++++
 include/linux/psci.h                |  52 +++++
 include/linux/virtio_ids.h          |   1 +
 include/linux/virtio_net.h          |  49 ++++-
 include/linux/virtio_pci.h          |   1 +
 kvm-cpu.c                           |  13 ++
 kvm.c                               |  34 +++-
 powerpc/include/asm/kvm.h           |  13 --
 riscv/include/asm/kvm.h             |  26 ++-
 util/update_headers.sh              |  17 +-
 x86/include/asm/kvm.h               | 115 +++++++++++
 22 files changed, 1091 insertions(+), 60 deletions(-)
 create mode 100644 arm64/include/asm/smccc.h
 create mode 100644 arm64/psci.c
 create mode 100644 arm64/smccc.c
 create mode 100644 include/linux/arm-smccc.h

-- 
2.43.0




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds