[GIT,PULL] KVM patches for Linux 6.1-rc2

Message ID 20221023174307.1868939-1-pbonzini@redhat.com
State New
Headers
Series [GIT,PULL] KVM patches for Linux 6.1-rc2 |

Pull-request

https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

Message

Paolo Bonzini Oct. 23, 2022, 5:43 p.m. UTC
  Linus,

The following changes since commit 9abf2313adc1ca1b6180c508c25f22f9395cc780:

  Linux 6.1-rc1 (2022-10-16 15:36:24 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

for you to fetch changes up to 9aec606c1609a5da177b579475a73f6c948e034a:

  tools: include: sync include/api/linux/kvm.h (2022-10-22 07:54:19 -0400)

----------------------------------------------------------------
RISC-V:

- Fix compilation without RISCV_ISA_ZICBOM

- Fix kvm_riscv_vcpu_timer_pending() for Sstc

ARM:

- Fix a bug preventing restoring an ITS containing mappings
  for very large and very sparse device topology

- Work around a relocation handling error when compiling
  the nVHE object with profile optimisation

- Fix for stage-2 invalidation holding the VM MMU lock
  for too long by limiting the walk to the largest
  block mapping size

- Enable stack protection and branch profiling for VHE

- Two selftest fixes

x86:

- add compat implementation for KVM_X86_SET_MSR_FILTER ioctl

selftests:

- synchronize includes between include/uapi and tools/include/uapi

----------------------------------------------------------------

As a heads up, next week I will have a relatively large pull
request in number of patches, with a series fixing various issues in
virt/kvm/pfncache.c.

Paolo

Alexander Graf (3):
      kvm: Add support for arch compat vm ioctls
      KVM: x86: Copy filter arg outside kvm_vm_ioctl_set_msr_filter()
      KVM: x86: Add compat handler for KVM_X86_SET_MSR_FILTER

Andrew Jones (1):
      RISC-V: Fix compilation without RISCV_ISA_ZICBOM

Anup Patel (1):
      RISC-V: KVM: Fix kvm_riscv_vcpu_timer_pending() for Sstc

Denis Nikitin (1):
      KVM: arm64: nvhe: Fix build with profile optimization

Eric Ren (1):
      KVM: arm64: vgic: Fix exit condition in scan_its_table()

Gavin Shan (1):
      KVM: selftests: Fix number of pages for memory slot in memslot_modification_stress_test

Oliver Upton (2):
      KVM: arm64: Work out supported block level at compile time
      KVM: arm64: Limit stage2_apply_range() batch size to largest block

Paolo Bonzini (4):
      Merge tag 'kvmarm-fixes-6.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
      Merge tag 'kvmarm-fixes-6.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
      Merge tag 'kvm-riscv-fixes-6.1-1' of https://github.com/kvm-riscv/linux into HEAD
      tools: include: sync include/api/linux/kvm.h

Vincent Donnefort (1):
      KVM: arm64: Enable stack protection and branch profiling for VHE

Zenghui Yu (1):
      KVM: arm64: selftests: Fix multiple versions of GIC creation

 arch/arm64/include/asm/kvm_pgtable.h               | 18 +++--
 arch/arm64/include/asm/stage2_pgtable.h            | 20 -----
 arch/arm64/kvm/hyp/Makefile                        |  5 +-
 arch/arm64/kvm/hyp/nvhe/Makefile                   |  7 ++
 arch/arm64/kvm/mmu.c                               |  9 ++-
 arch/arm64/kvm/vgic/vgic-its.c                     |  5 +-
 arch/riscv/include/asm/cacheflush.h                |  8 --
 arch/riscv/include/asm/kvm_vcpu_timer.h            |  1 +
 arch/riscv/kvm/vcpu.c                              |  3 +
 arch/riscv/kvm/vcpu_timer.c                        | 17 ++++-
 arch/riscv/mm/cacheflush.c                         | 38 ++++++++++
 arch/riscv/mm/dma-noncoherent.c                    | 41 ----------
 arch/x86/kvm/x86.c                                 | 87 ++++++++++++++++++----
 include/linux/kvm_host.h                           |  2 +
 tools/include/uapi/linux/kvm.h                     |  1 +
 tools/testing/selftests/kvm/aarch64/vgic_init.c    |  4 +-
 .../kvm/memslot_modification_stress_test.c         |  2 +-
 virt/kvm/kvm_main.c                                | 11 +++
 18 files changed, 180 insertions(+), 99 deletions(-)
  

Comments

Linus Torvalds Oct. 23, 2022, 10:15 p.m. UTC | #1
On Sun, Oct 23, 2022 at 10:43 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> x86:
>
> - add compat implementation for KVM_X86_SET_MSR_FILTER ioctl

Side note: this should probably have used

        compat_uptr_t bitmap;
        ...
        .bitmap = compat_ptr(cr->bitmap),

instead of doing that

        __u32 bitmap;
        ...
       .bitmap = (__u8 *)(ulong)cr->bitmap,

because not only are those casts really ugly, using that
'compat_uptr_t" and "compat_ptr()" helper also really explains what is
going on.

compat_ptr() also happens to get the address space right (ie it
returns a "void __user *" pointer). But since the non-compat 'struct
kvm_msr_filter_range' bitmap member doesn't get that right either
(because it uses the same type for kernel pointers as for user
pointers - ugly uglt), that isn't such a big deal. The kvm code
clearly doesn't do proper user pointer typing, and just uses random
casts instead.

                         Linus
  
pr-tracker-bot@kernel.org Oct. 23, 2022, 10:39 p.m. UTC | #2
The pull request you sent on Sun, 23 Oct 2022 13:43:07 -0400:

> https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/05b4ebd2c7cbb3671c376754b37b4963dd08a3a2

Thank you!
  
Paolo Bonzini Oct. 25, 2022, 9:42 a.m. UTC | #3
On 10/24/22 00:15, Linus Torvalds wrote:
> 
> compat_ptr() also happens to get the address space right (ie it
> returns a "void __user *" pointer). But since the non-compat 'struct
> kvm_msr_filter_range' bitmap member doesn't get that right either
> (because it uses the same type for kernel pointers as for user
> pointers - ugly uglt), that isn't such a big deal. The kvm code
> clearly doesn't do proper user pointer typing, and just uses random
> casts instead.
In general KVM ioctl arguments very rarely have __user pointers in them, 
so there's not much need for compat ioctls at all.  KVM_GET_DIRTY_LOG 
and KVM_CLEAR_DIRTY_LOG get it right, but this one indeed can be 
improved with compat_ptr().  Will do for 6.2, thanks for the review.

Paolo