From: Oliver Upton <oliver.upton@linux.dev>
To: kvmarm@lists.linux.dev
Cc: kvm@vger.kernel.org, Marc Zyngier <maz@kernel.org>,
James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>, Will Deacon <will@kernel.org>,
Julien Thierry <julien.thierry.kdev@gmail.com>,
Salil Mehta <salil.mehta@huawei.com>,
Oliver Upton <oliver.upton@linux.dev>
Subject: [PATCH kvmtool 00/21] arm64: Handle PSCI calls in userspace
Date: Fri, 26 May 2023 22:16:51 +0000 [thread overview]
Message-ID: <20230526221712.317287-1-oliver.upton@linux.dev> (raw)
The 6.4 kernel picks up support for a generalized SMCCC filter, allowing
userspace to select hypercall ranges that should be forwarded to
userspace. This is a shameless attempt of making future SMCCC interfaces
the responsibility of userspace :)
As a starting point, let's move PSCI up into userspace. KVM already
leans on userspace for handling calls that have a system-wide effect.
Tested on linux-next with a 64 vCPU VM. Additionally, I took a stab at
running kvm-unit-test's psci test, which passes.
Apologies for some of the changelogs being a bit short. It's Friday, and
I'm lazy.
Oliver Upton (21):
update_headers: Use a list for arch-generic headers
update_headers: Add missing entries to list of headers to copy
Copy 64-bit alignment attrtibutes from Linux 6.4-rc1
Update headers with Linux 6.4-rc1
Import arm-smccc.h from Linux 6.4-rc1
aarch64: Copy cputype.h from Linux 6.4-rc1
arm: Stash kvm_vcpu_init for later use
arm: Add support for resetting a vCPU
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/kvm.h | 38 +
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 | 206 +++++
arm/aarch64/smccc.c | 82 ++
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 | 4 +-
arm/kvm-cpu.c | 35 +-
arm/kvm.c | 2 +-
include/kvm/kvm-cpu.h | 3 +
include/linux/arm-smccc.h | 240 ++++++
include/linux/kvm.h | 55 +-
include/linux/psci.h | 47 ++
include/linux/types.h | 13 +
include/linux/vfio.h | 920 +++++++++++++++++++++-
include/linux/vhost.h | 186 ++---
include/linux/virtio_blk.h | 105 +++
include/linux/virtio_net.h | 4 +
kvm-cpu.c | 15 +
riscv/include/asm/kvm.h | 3 +
util/update_headers.sh | 25 +-
x86/include/asm/kvm.h | 50 +-
31 files changed, 2225 insertions(+), 182 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: 77b108c6a6f1c66fb7f60a80d17596bb80bda8ad
--
2.41.0.rc0.172.g3f132b7071-goog
next reply other threads:[~2023-05-26 22:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-26 22:16 Oliver Upton [this message]
2023-05-26 22:16 ` [PATCH kvmtool 01/21] update_headers: Use a list for arch-generic headers Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 02/21] update_headers: Add missing entries to list of headers to copy Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 03/21] Copy 64-bit alignment attrtibutes from Linux 6.4-rc1 Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 04/21] Update headers with " Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 05/21] Import arm-smccc.h from " Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 06/21] aarch64: Copy cputype.h " Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 07/21] arm: Stash kvm_vcpu_init for later use Oliver Upton
2023-05-26 22:16 ` [PATCH kvmtool 08/21] arm: Add support for resetting a vCPU Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 09/21] arm: Use KVM_SET_MP_STATE ioctl to power off non-boot vCPUs Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 10/21] aarch64: Expose ARM64_CORE_REG() for general use Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 11/21] arm: Generalize execution state specific VM initialization Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 12/21] Add helpers to pause the VM from vCPU thread Oliver Upton
2023-06-09 10:59 ` Shaoqin Huang
2023-06-15 8:59 ` Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 13/21] aarch64: Add support for finding vCPU for given MPIDR Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 14/21] aarch64: Add skeleton implementation for PSCI Oliver Upton
2023-06-13 15:10 ` Joey Gouly
2023-05-26 22:17 ` [PATCH kvmtool 15/21] aarch64: psci: Implement CPU_SUSPEND Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 16/21] aarch64: psci: Implement CPU_OFF Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 17/21] aarch64: psci: Implement CPU_ON Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 18/21] aarch64: psci: Implement AFFINITY_INFO Oliver Upton
2023-05-26 22:17 ` [PATCH kvmtool 19/21] aarch64: psci: Implement MIGRATE_INFO_TYPE Oliver Upton
2023-05-26 22:18 ` [PATCH kvmtool 20/21] aarch64: psci: Implement SYSTEM_{OFF,RESET} Oliver Upton
2023-05-26 22:19 ` [PATCH kvmtool 21/21] aarch64: smccc: Start sending PSCI to userspace Oliver Upton
2023-06-14 12:05 ` [PATCH kvmtool 00/21] arm64: Handle PSCI calls in userspace Joey Gouly
2023-06-14 16:05 ` Oliver Upton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230526221712.317287-1-oliver.upton@linux.dev \
--to=oliver.upton@linux.dev \
--cc=james.morse@arm.com \
--cc=julien.thierry.kdev@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=salil.mehta@huawei.com \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox