Move vcpu_load and vcpu_put calls to arch code
Get series with b4
b4 am [email protected]Versions newest first
- v3 Latest16 patches 26 repliesIn review
Changes in v3 from the cover letter
- Clarified commit message on patch 1
- Initialized ret to -EINVAL at declaration on patch 9
- Added David Hildenbrand's reviewed-by tag
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/16 | KVM: Take vcpu->mutex outside vcpu_loadarch/ arch/ include/ +1 more | +15 | 2 replies | |
| 2/16 | KVM: Prepare for moving vcpu_load/vcpu_put into arch specific codevirt/ | +24 | 1 reply | |
| 3/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_runarch/ arch/ arch/ +3 more | +30 | 2 replies | |
| 4/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_regsarch/ arch/ arch/ +3 more | +14 | 2 replies | |
| 5/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_regsarch/ arch/ arch/ +3 more | +14 | 2 replies | |
| 6/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_sregsarch/ arch/ arch/ +2 more | +22 | 2 replies | |
| 7/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_sregsarch/ arch/ arch/ +2 more | +32 | 4 replies | |
| 8/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_mpstatearch/ arch/ virt/ +1 more | +15 | 1 reply | |
| 9/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_mpstatearch/ arch/ virt/ +1 more | +21 | 1 reply | |
| 10/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_translatearch/ arch/ virt/ | +5 | 1 reply | |
| 11/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_guest_debugarch/ arch/ arch/ +3 more | +42 | 3 replies | |
| 12/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_fpuarch/ arch/ virt/ | +9 | 1 reply | |
| 13/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_fpuarch/ arch/ virt/ | +18 | 1 reply | |
| 14/16 | KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctlarch/ arch/ arch/ +3 more | +103 | 3 replies | |
| 15/16 | KVM: arm/arm64: Avoid vcpu_load for other vcpu ioctls than KVM_RUNarch/ virt/ | +0 | 0 replies | |
| 16/16 | KVM: arm/arm64: Move vcpu_load call after kvm_vcpu_first_run_initvirt/ virt/ virt/ | +5 | 0 replies |
Reviews trailers per patch
13 of 16 patches have a Reviewed-by or Acked-by.
| Patch | David Hildenbrand | Christian Borntraeger | Cornelia Huck |
|---|---|---|---|
| 1/16 | R-b | ||
| 2/16 | R-b | R-b | |
| 3/16 | R-b | R-b | |
| 4/16 | R-b | R-b | |
| 5/16 | R-b | R-b | |
| 6/16 | R-b | R-b | |
| 7/16 | R-b | R-b | |
| 8/16 | R-b | R-b | |
| 9/16 | R-b | R-b | |
| 10/16 | R-b | R-b | |
| 11/16 | R-b | R-b | |
| 12/16 | R-b | R-b | |
| 13/16 | R-b | R-b | |
| 14/16 | |||
| 15/16 | |||
| 16/16 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.
Cover letter [PATCH v3 00/16] Move vcpu_load and vcpu_put calls to arch code
From: Christoffer Dall <[email protected]>
Some architectures may decide to do different things during kvm_arch_vcpu_load depending on the ioctl being executed. For example, arm64 is about to do significant work in vcpu load/put when running a vcpu, but it's problematic to do this for any other vcpu ioctl than KVM_RUN.
Further, while it may be possible to call kvm_arch_vcpu_load() for a number of non-KVM_RUN ioctls, it makes the KVM/ARM code more difficult to reason about, especially after my optimization series, because a lot of things can now happen, where we have to consider if we're really in the process of running a vcpu or not.
This series will first move the vcpu_load() and vcpu_put() calls in the arch generic dispatch function into each case of the switch statement and then, one-by-one, pushed the calls down into the architecture specific code making the changes for each ioctl as required.
Based on v4.15-rc1
Patches also available at:git://git.kernel.org/pub/scm/linux/kernel/git/cdall/linux.git vcpu-load-put-v3
Changes since v2:
- Clarified commit message on patch 1
- Initialized ret to -EINVAL at declaration on patch 9
- Added David Hildenbrand's reviewed-by tag
Changes since v1:
- Fix PPC and S390 bugs from v1
- Take the mutex in the main disaptcher function and make vcpu_load a void, which simplifies the patches overall.
- Add a patch that moves vcpu_load for arm/arm64 after the first-run init function.
Thanks,
-Christoffer
Christoffer Dall (16):
KVM: Take vcpu->mutex outside vcpu_load
KVM: Prepare for moving vcpu_load/vcpu_put into arch specific code
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_run
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_regs
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_regs
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_sregs
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_sregs
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_mpstate
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_mpstate
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_translate
KVM: Move vcpu_load to arch-specific
kvm_arch_vcpu_ioctl_set_guest_debug
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_get_fpu
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl_set_fpu
KVM: Move vcpu_load to arch-specific kvm_arch_vcpu_ioctl
KVM: arm/arm64: Avoid vcpu_load for other vcpu ioctls than KVM_RUN
KVM: arm/arm64: Move vcpu_load call after kvm_vcpu_first_run_init
arch/arm64/kvm/guest.c | 12 +++-- arch/mips/kvm/mips.c | 58 +++++++++++++++-------- arch/powerpc/kvm/book3s.c | 24 +++++++++- arch/powerpc/kvm/booke.c | 51 +++++++++++++++----- arch/powerpc/kvm/powerpc.c | 19 +++++--- arch/s390/kvm/kvm-s390.c | 90 +++++++++++++++++++++++++++-------- arch/x86/kvm/vmx.c | 4 +- arch/x86/kvm/x86.c | 106 ++++++++++++++++++++++++++++++------------ include/linux/kvm_host.h | 2 +- virt/kvm/arm/arch_timer.c | 4 -- virt/kvm/arm/arm.c | 68 ++++++++++++++++++--------- virt/kvm/arm/vgic/vgic-init.c | 11 ----- virt/kvm/kvm_main.c | 17 ++----- 13 files changed, 322 insertions(+), 144 deletions(-)
Signature · 1 line
2.14.2