mbox series

[kvmtool,v3,00/17] aarch64: Handle PSCI calls in userspace

Message ID 20230802234255.466782-1-oliver.upton@linux.dev (mailing list archive)
Headers show
Series aarch64: Handle PSCI calls in userspace | expand

Message

Oliver Upton Aug. 2, 2023, 11:42 p.m. UTC
v3 of the series to do PSCI calls in userspace, as an example for using
the SMCCC filtering API added to KVM in 6.4.

v2 -> v3:
 - Dropped some of the headers patches since they've already been
   updated
 - Redo header imports on top of 6.5-rc1
 - Actually use the right subject prefix...

v2: https://lore.kernel.org/kvmarm/20230620163353.2688567-1-oliver.upton@linux.dev/

Oliver Upton (17):
  Import arm-smccc.h from Linux 6.5-rc1
  aarch64: Copy cputype.h from Linux 6.5-rc1
  Update psci.h to Linux 6.5-rc1
  arm: Stash kvm_vcpu_init for later use
  arm: Use KVM_SET_MP_STATE ioctl to power off non-boot vCPUs
  aarch64: Expose ARM64_CORE_REG() for general use
  arm: Generalize execution state specific VM initialization
  Add helpers to pause the VM from vCPU thread
  aarch64: Add support for finding vCPU for given MPIDR
  aarch64: Add skeleton implementation for PSCI
  aarch64: psci: Implement CPU_SUSPEND
  aarch64: psci: Implement CPU_OFF
  aarch64: psci: Implement CPU_ON
  aarch64: psci: Implement AFFINITY_INFO
  aarch64: psci: Implement MIGRATE_INFO_TYPE
  aarch64: psci: Implement SYSTEM_{OFF,RESET}
  aarch64: smccc: Start sending PSCI to userspace

 Makefile                                  |   4 +-
 arm/aarch32/include/kvm/kvm-arch.h        |   2 +-
 arm/aarch32/kvm-cpu.c                     |   5 +
 arm/aarch64/include/asm/cputype.h         | 186 +++++++++++++++++
 arm/aarch64/include/asm/smccc.h           |  65 ++++++
 arm/aarch64/include/kvm/kvm-arch.h        |   2 +-
 arm/aarch64/include/kvm/kvm-config-arch.h |   6 +-
 arm/aarch64/include/kvm/kvm-cpu-arch.h    |  28 ++-
 arm/aarch64/kvm-cpu.c                     |  48 +++--
 arm/aarch64/kvm.c                         |  25 ++-
 arm/aarch64/psci.c                        | 207 +++++++++++++++++++
 arm/aarch64/smccc.c                       |  81 ++++++++
 arm/include/arm-common/kvm-arch.h         |   2 +
 arm/include/arm-common/kvm-config-arch.h  |   1 +
 arm/include/arm-common/kvm-cpu-arch.h     |   2 +-
 arm/kvm-cpu.c                             |  21 +-
 arm/kvm.c                                 |   2 +-
 include/kvm/kvm-cpu.h                     |   3 +
 include/linux/arm-smccc.h                 | 240 ++++++++++++++++++++++
 include/linux/psci.h                      |  47 +++++
 kvm-cpu.c                                 |  16 ++
 21 files changed, 959 insertions(+), 34 deletions(-)
 create mode 100644 arm/aarch64/include/asm/cputype.h
 create mode 100644 arm/aarch64/include/asm/smccc.h
 create mode 100644 arm/aarch64/psci.c
 create mode 100644 arm/aarch64/smccc.c
 create mode 100644 include/linux/arm-smccc.h


base-commit: 106e2ea7756d980454d68631b87d5e25ba4e4881

Comments

Oliver Upton Sept. 13, 2023, 6:42 p.m. UTC | #1
Hey Will,

Haven't heard anything on v2 or v3 of this series and this has been on
the list for a while. Any thoughts?

I want to get a VMM using the SMCCC filtering UAPI ahead of CPU hotplug
on QEMU so we have some test coverage :) There's a knock-on benefit of
plugging some of the inherent races in system-scoped PSCI calls getting
out to userspace too.

--
Thanks,
Oliver

On Wed, Aug 02, 2023 at 11:42:38PM +0000, Oliver Upton wrote:
> v3 of the series to do PSCI calls in userspace, as an example for using
> the SMCCC filtering API added to KVM in 6.4.
> 
> v2 -> v3:
>  - Dropped some of the headers patches since they've already been
>    updated
>  - Redo header imports on top of 6.5-rc1
>  - Actually use the right subject prefix...
> 
> v2: https://lore.kernel.org/kvmarm/20230620163353.2688567-1-oliver.upton@linux.dev/
> 
> Oliver Upton (17):
>   Import arm-smccc.h from Linux 6.5-rc1
>   aarch64: Copy cputype.h from Linux 6.5-rc1
>   Update psci.h to Linux 6.5-rc1
>   arm: Stash kvm_vcpu_init for later use
>   arm: Use KVM_SET_MP_STATE ioctl to power off non-boot vCPUs
>   aarch64: Expose ARM64_CORE_REG() for general use
>   arm: Generalize execution state specific VM initialization
>   Add helpers to pause the VM from vCPU thread
>   aarch64: Add support for finding vCPU for given MPIDR
>   aarch64: Add skeleton implementation for PSCI
>   aarch64: psci: Implement CPU_SUSPEND
>   aarch64: psci: Implement CPU_OFF
>   aarch64: psci: Implement CPU_ON
>   aarch64: psci: Implement AFFINITY_INFO
>   aarch64: psci: Implement MIGRATE_INFO_TYPE
>   aarch64: psci: Implement SYSTEM_{OFF,RESET}
>   aarch64: smccc: Start sending PSCI to userspace
> 
>  Makefile                                  |   4 +-
>  arm/aarch32/include/kvm/kvm-arch.h        |   2 +-
>  arm/aarch32/kvm-cpu.c                     |   5 +
>  arm/aarch64/include/asm/cputype.h         | 186 +++++++++++++++++
>  arm/aarch64/include/asm/smccc.h           |  65 ++++++
>  arm/aarch64/include/kvm/kvm-arch.h        |   2 +-
>  arm/aarch64/include/kvm/kvm-config-arch.h |   6 +-
>  arm/aarch64/include/kvm/kvm-cpu-arch.h    |  28 ++-
>  arm/aarch64/kvm-cpu.c                     |  48 +++--
>  arm/aarch64/kvm.c                         |  25 ++-
>  arm/aarch64/psci.c                        | 207 +++++++++++++++++++
>  arm/aarch64/smccc.c                       |  81 ++++++++
>  arm/include/arm-common/kvm-arch.h         |   2 +
>  arm/include/arm-common/kvm-config-arch.h  |   1 +
>  arm/include/arm-common/kvm-cpu-arch.h     |   2 +-
>  arm/kvm-cpu.c                             |  21 +-
>  arm/kvm.c                                 |   2 +-
>  include/kvm/kvm-cpu.h                     |   3 +
>  include/linux/arm-smccc.h                 | 240 ++++++++++++++++++++++
>  include/linux/psci.h                      |  47 +++++
>  kvm-cpu.c                                 |  16 ++
>  21 files changed, 959 insertions(+), 34 deletions(-)
>  create mode 100644 arm/aarch64/include/asm/cputype.h
>  create mode 100644 arm/aarch64/include/asm/smccc.h
>  create mode 100644 arm/aarch64/psci.c
>  create mode 100644 arm/aarch64/smccc.c
>  create mode 100644 include/linux/arm-smccc.h
> 
> 
> base-commit: 106e2ea7756d980454d68631b87d5e25ba4e4881
> -- 
> 2.41.0.585.gd2178a4bd4-goog
>