lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231102172917.142863-1-pbonzini@redhat.com>
Date:   Thu,  2 Nov 2023 13:29:17 -0400
From:   Paolo Bonzini <pbonzini@...hat.com>
To:     torvalds@...ux-foundation.org
Cc:     linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Subject: [GIT PULL] KVM changes for Linux 6.7 merge window

Linus,

The following changes since commit ffc253263a1375a65fa6c9f62a893e9767fbebfa:

  Linux 6.6 (2023-10-29 16:31:08 -1000)

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 45b890f7689eb0aba454fc5831d2d79763781677:

  Merge tag 'kvmarm-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD (2023-10-31 16:37:07 -0400)

The new architecture and selftests make up the bulk of the diffstat,
but there are also some relevant ARM and x86 changes.  I expect 6.8
to be much bigger though.

There is a small conflict in arch/arm64/kvm/arm.c whose resolution is
simply to remove the =====...>>>>> part.  The usual combined diff is
not any more helpful than this, but I put it anyway after my signature.

Likewise you may have a conflict with the risc-v tree on
arch/riscv/include/asm/csr.h, depending on which you pull first, where
the KVM version is the good one:

  #define CSR_SIE			0x104
  #define CSR_STVEC		0x105
  #define CSR_SCOUNTEREN		0x106
++#define CSR_SENVCFG		0x10a
 +#define CSR_SSTATEEN0		0x10c
  #define CSR_SSCRATCH		0x140
  #define CSR_SEPC		0x141
  #define CSR_SCAUSE		0x142

Paolo

----------------------------------------------------------------
ARM:

* Generalized infrastructure for 'writable' ID registers, effectively
  allowing userspace to opt-out of certain vCPU features for its guest

* Optimization for vSGI injection, opportunistically compressing MPIDR
  to vCPU mapping into a table

* Improvements to KVM's PMU emulation, allowing userspace to select
  the number of PMCs available to a VM

* Guest support for memory operation instructions (FEAT_MOPS)

* Cleanups to handling feature flags in KVM_ARM_VCPU_INIT, squashing
  bugs and getting rid of useless code

* Changes to the way the SMCCC filter is constructed, avoiding wasted
  memory allocations when not in use

* Load the stage-2 MMU context at vcpu_load() for VHE systems, reducing
  the overhead of errata mitigations

* Miscellaneous kernel and selftest fixes

LoongArch:

* New architecture.  The hardware uses the same model as x86, s390
  and RISC-V, where guest/host mode is orthogonal to supervisor/user
  mode.  The virtualization extensions are very similar to MIPS,
  therefore the code also has some similarities but it's been cleaned
  up to avoid some of the historical bogosities that are found in
  arch/mips.  The kernel emulates MMU, timer and CSR accesses, while
  interrupt controllers are only emulated in userspace, at least for
  now.

RISC-V:

* Support for the Smstateen and Zicond extensions

* Support for virtualizing senvcfg

* Support for virtualized SBI debug console (DBCN)

S390:

* Nested page table management can be monitored through tracepoints
  and statistics

x86:

* Fix incorrect handling of VMX posted interrupt descriptor in KVM_SET_LAPIC,
  which could result in a dropped timer IRQ

* Avoid WARN on systems with Intel IPI virtualization

* Add CONFIG_KVM_MAX_NR_VCPUS, to allow supporting up to 4096 vCPUs without
  forcing more common use cases to eat the extra memory overhead.

* Add virtualization support for AMD SRSO mitigation (IBPB_BRTYPE and
  SBPB, aka Selective Branch Predictor Barrier).

* Fix a bug where restoring a vCPU snapshot that was taken within 1 second of
  creating the original vCPU would cause KVM to try to synchronize the vCPU's
  TSC and thus clobber the correct TSC being set by userspace.

* Compute guest wall clock using a single TSC read to avoid generating an
  inaccurate time, e.g. if the vCPU is preempted between multiple TSC reads.

* "Virtualize" HWCR.TscFreqSel to make Linux guests happy, which complain
  about a "Firmware Bug" if the bit isn't set for select F/M/S combos.
  Likewise "virtualize" (ignore) MSR_AMD64_TW_CFG to appease Windows Server
  2022.

* Don't apply side effects to Hyper-V's synthetic timer on writes from
  userspace to fix an issue where the auto-enable behavior can trigger
  spurious interrupts, i.e. do auto-enabling only for guest writes.

* Remove an unnecessary kick of all vCPUs when synchronizing the dirty log
  without PML enabled.

* Advertise "support" for non-serializing FS/GS base MSR writes as appropriate.

* Harden the fast page fault path to guard against encountering an invalid
  root when walking SPTEs.

* Omit "struct kvm_vcpu_xen" entirely when CONFIG_KVM_XEN=n.

* Use the fast path directly from the timer callback when delivering Xen
  timer events, instead of waiting for the next iteration of the run loop.
  This was not done so far because previously proposed code had races,
  but now care is taken to stop the hrtimer at critical points such as
  restarting the timer or saving the timer information for userspace.

* Follow the lead of upstream Xen and ignore the VCPU_SSHOTTMR_future flag.

* Optimize injection of PMU interrupts that are simultaneous with NMIs.

* Usual handful of fixes for typos and other warts.

x86 - MTRR/PAT fixes and optimizations:

* Clean up code that deals with honoring guest MTRRs when the VM has
  non-coherent DMA and host MTRRs are ignored, i.e. EPT is enabled.

* Zap EPT entries when non-coherent DMA assignment stops/start to prevent
  using stale entries with the wrong memtype.

* Don't ignore guest PAT for CR0.CD=1 && KVM_X86_QUIRK_CD_NW_CLEARED=y.
  This was done as a workaround for virtual machine BIOSes that did not
  bother to clear CR0.CD (because ancient KVM/QEMU did not bother to
  set it, in turn), and there's zero reason to extend the quirk to
  also ignore guest PAT.

x86 - SEV fixes:

* Report KVM_EXIT_SHUTDOWN instead of EINVAL if KVM intercepts SHUTDOWN while
  running an SEV-ES guest.

* Clean up the recognition of emulation failures on SEV guests, when KVM would
  like to "skip" the instruction but it had already been partially emulated.
  This makes it possible to drop a hack that second guessed the (insufficient)
  information provided by the emulator, and just do the right thing.

Documentation:

* Various updates and fixes, mostly for x86

* MTRR and PAT fixes and optimizations:

----------------------------------------------------------------
Andrew Jones (3):
      MAINTAINERS: RISC-V: KVM: Add another kselftests path
      KVM: selftests: Add array order helpers to riscv get-reg-list
      KVM: riscv: selftests: get-reg-list print_reg should never fail

Anup Patel (11):
      RISC-V: Detect Zicond from ISA string
      dt-bindings: riscv: Add Zicond extension entry
      RISC-V: KVM: Allow Zicond extension for Guest/VM
      KVM: riscv: selftests: Add senvcfg register to get-reg-list test
      KVM: riscv: selftests: Add smstateen registers to get-reg-list test
      KVM: riscv: selftests: Add condops extensions to get-reg-list test
      RISC-V: Add defines for SBI debug console extension
      RISC-V: KVM: Change the SBI specification version to v2.0
      RISC-V: KVM: Allow some SBI extensions to be disabled by default
      RISC-V: KVM: Forward SBI DBCN extension to user-space
      KVM: riscv: selftests: Add SBI DBCN extension to get-reg-list test

David Matlack (1):
      KVM: x86/mmu: Stop kicking vCPUs to sync the dirty log when PML is disabled

David Woodhouse (2):
      KVM: x86/xen: Use fast path for Xen timer delivery
      KVM: x86: Refine calculation of guest wall clock to use a single TSC read

Dongli Zhang (1):
      KVM: x86: remove always-false condition in kvmclock_sync_fn

Haitao Shan (1):
      KVM: x86: Fix lapic timer interrupt lost after loading a snapshot.

Jim Mattson (4):
      KVM: x86: Allow HWCR.McStatusWrEn to be cleared once set
      KVM: x86: Virtualize HWCR.TscFreqSel[bit 24]
      KVM: selftests: Test behavior of HWCR, a.k.a. MSR_K7_HWCR
      x86: KVM: Add feature flag for CPUID.80000021H:EAX[bit 1]

Jing Zhang (7):
      KVM: arm64: Allow userspace to get the writable masks for feature ID registers
      KVM: arm64: Document KVM_ARM_GET_REG_WRITABLE_MASKS
      KVM: arm64: Use guest ID register values for the sake of emulation
      KVM: arm64: Allow userspace to change ID_AA64MMFR{0-2}_EL1
      KVM: arm64: Allow userspace to change ID_AA64PFR0_EL1
      tools headers arm64: Update sysreg.h with kernel sources
      KVM: arm64: selftests: Test for setting ID register from usersapce

Jinrong Liang (1):
      KVM: x86/pmu: Add documentation for fixed ctr on PMU filter

Josh Poimboeuf (2):
      KVM: x86: Add IBPB_BRTYPE support
      KVM: x86: Add SBPB support

Kristina Martsenko (2):
      KVM: arm64: Add handler for MOPS exceptions
      KVM: arm64: Expose MOPS instructions to guests

Kyle Meyer (1):
      KVM: x86: Add CONFIG_KVM_MAX_NR_VCPUS to allow up to 4096 vCPUs

Li zeming (1):
      KVM: x86/mmu: Remove unnecessary ‘NULL’ values from sptep

Liang Chen (1):
      KVM: x86: remove the unused assigned_dev_head from kvm_arch

Like Xu (1):
      KVM: x86: Don't sync user-written TSC against startup values

Maciej S. Szmigiero (1):
      KVM: x86: Ignore MSR_AMD64_TW_CFG access

Marc Zyngier (16):
      KVM: arm64: vgic: Make kvm_vgic_inject_irq() take a vcpu pointer
      KVM: arm64: vgic-its: Treat the collection target address as a vcpu_id
      KVM: arm64: vgic-v3: Refactor GICv3 SGI generation
      KVM: arm64: vgic-v2: Use cpuid from userspace as vcpu_id
      KVM: arm64: vgic: Use vcpu_idx for the debug information
      KVM: arm64: Use vcpu_idx for invalidation tracking
      KVM: arm64: Simplify kvm_vcpu_get_mpidr_aff()
      KVM: arm64: Build MPIDR to vcpu index cache at runtime
      KVM: arm64: Fast-track kvm_mpidr_to_vcpu() when mpidr_data is available
      KVM: arm64: vgic-v3: Optimize affinity-based SGI injection
      KVM: arm64: Clarify the ordering requirements for vcpu/RD creation
      KVM: arm64: Restore the stage-2 context in VHE's __tlb_switch_to_host()
      KVM: arm64: Reload stage-2 for VMID change on VHE
      KVM: arm64: Move VTCR_EL2 into struct s2_mmu
      KVM: arm64: Do not let a L1 hypervisor access the *32_EL2 sysregs
      KVM: arm64: Handle AArch32 SPSR_{irq,abt,und,fiq} as RAZ/WI

Mayuresh Chitale (7):
      RISC-V: Detect Smstateen extension
      dt-bindings: riscv: Add smstateen entry
      RISC-V: KVM: Add kvm_vcpu_config
      RISC-V: KVM: Enable Smstateen accesses
      RISCV: KVM: Add senvcfg context save/restore
      RISCV: KVM: Add sstateen0 context save/restore
      RISCV: KVM: Add sstateen0 to ONE_REG

Michal Luczaj (3):
      KVM: x86: Remove redundant vcpu->arch.cr0 assignments
      KVM: x86: Force TLB flush on userspace changes to special registers
      KVM: Correct kvm_vcpu_event(s) typo in KVM API documentation

Miguel Luis (3):
      arm64: Add missing _EL12 encodings
      arm64: Add missing _EL2 encodings
      KVM: arm64: Refine _EL2 system register list that require trap reinjection

Mingwei Zhang (8):
      KVM: Documentation: Add the missing description for guest_mode in kvm_mmu_page_role
      KVM: Documentation: Update the field name gfns and its description in kvm_mmu_page
      KVM: Documentation: Add the missing description for ptep in kvm_mmu_page
      KVM: Documentation: Add the missing description for tdp_mmu_root_count into kvm_mmu_page
      KVM: Documentation: Add the missing description for mmu_valid_gen into kvm_mmu_page
      KVM: Documentation: Add the missing description for tdp_mmu_page into kvm_mmu_page
      KVM: x86: Update the variable naming in kvm_x86_ops.sched_in()
      KVM: x86: Service NMI requests after PMI requests in VM-Enter path

Nico Boehr (2):
      KVM: s390: add stat counter for shadow gmap events
      KVM: s390: add tracepoint in gmap notifier

Nicolas Saenz Julienne (1):
      KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space

Oliver Upton (42):
      KVM: arm64: Don't use kerneldoc comment for arm64_check_features()
      KVM: arm64: Add generic check for system-supported vCPU features
      KVM: arm64: Hoist PMUv3 check into KVM_ARM_VCPU_INIT ioctl handler
      KVM: arm64: Hoist SVE check into KVM_ARM_VCPU_INIT ioctl handler
      KVM: arm64: Hoist PAuth checks into KVM_ARM_VCPU_INIT ioctl
      KVM: arm64: Prevent NV feature flag on systems w/o nested virt
      KVM: arm64: Hoist NV+SVE check into KVM_ARM_VCPU_INIT ioctl handler
      KVM: arm64: Remove unused return value from kvm_reset_vcpu()
      KVM: arm64: Get rid of vCPU-scoped feature bitmap
      arm64: tlbflush: Rename MAX_TLBI_OPS
      KVM: arm64: Avoid soft lockups due to I-cache maintenance
      KVM: arm64: Advertise selected DebugVer in DBGDIDR.Version
      KVM: arm64: Reject attempts to set invalid debug arch version
      KVM: arm64: Bump up the default KVM sanitised debug version to v8p8
      KVM: arm64: Allow userspace to change ID_AA64ISAR{0-2}_EL1
      KVM: arm64: Allow userspace to change ID_AA64ZFR0_EL1
      KVM: arm64: Document vCPU feature selection UAPIs
      KVM: arm64: Add a predicate for testing if SMCCC filter is configured
      KVM: arm64: Only insert reserved ranges when SMCCC filter is used
      KVM: arm64: Use mtree_empty() to determine if SMCCC filter configured
      tools: arm64: Add a Makefile for generating sysreg-defs.h
      perf build: Generate arm64's sysreg-defs.h and add to include path
      KVM: selftests: Generate sysreg-defs.h and add to include path
      KVM: arm64: Don't zero VTTBR in __tlb_switch_to_host()
      KVM: arm64: Rename helpers for VHE vCPU load/put
      KVM: arm64: Load the stage-2 MMU context in kvm_vcpu_load_vhe()
      KVM: arm64: Make PMEVTYPER<n>_EL0.NSH RES0 if EL2 isn't advertised
      KVM: arm64: Add PMU event filter bits required if EL3 is implemented
      KVM: arm64: Always invalidate TLB for stage-2 permission faults
      KVM: arm64: Add tracepoint for MMIO accesses where ISV==0
      Merge branch kvm-arm64/misc into kvmarm/next
      Merge branch kvm-arm64/feature-flag-refactor into kvmarm/next
      Merge branch kvm-arm64/pmevtyper-filter into kvmarm/next
      Merge branch kvm-arm64/smccc-filter-cleanups into kvmarm/next
      Merge branch kvm-arm64/nv-trap-fixes into kvmarm/next
      Merge branch kvm-arm64/stage2-vhe-load into kvmarm/next
      Merge branch kvm-arm64/sgi-injection into kvmarm/next
      tools headers arm64: Fix references to top srcdir in Makefile
      KVM: selftests: Avoid using forced target for generating arm64 headers
      Merge branch kvm-arm64/writable-id-regs into kvmarm/next
      Merge branch kvm-arm64/mops into kvmarm/next
      Merge branch kvm-arm64/pmu_pmcr_n into kvmarm/next

Paolo Bonzini (11):
      Merge tag 'loongarch-kvm-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson into HEAD
      Merge tag 'kvm-riscv-6.7-1' of https://github.com/kvm-riscv/linux into HEAD
      Merge tag 'kvm-s390-next-6.7-1' of https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
      Merge tag 'kvm-x86-apic-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-docs-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-misc-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-mmu-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-xen-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-pmu-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvm-x86-svm-6.7' of https://github.com/kvm-x86/linux into HEAD
      Merge tag 'kvmarm-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD

Paul Durrant (1):
      KVM: x86/xen: ignore the VCPU_SSHOTTMR_future flag

Peng Hao (2):
      KVM: X86: Reduce size of kvm_vcpu_arch structure when CONFIG_KVM_XEN=n
      KVM: x86: Use octal for file permission

Peter Gonda (1):
      KVM: SVM: Update SEV-ES shutdown intercepts with more metadata

Raghavendra Rao Ananta (5):
      KVM: arm64: PMU: Set PMCR_EL0.N for vCPU based on the associated PMU
      KVM: arm64: Add {get,set}_user for PM{C,I}NTEN{SET,CLR}, PMOVS{SET,CLR}
      KVM: arm64: Sanitize PM{C,I}NTEN{SET,CLR}, PMOVS{SET,CLR} before first run
      tools: Import arm_pmuv3.h
      KVM: selftests: aarch64: vPMU test for validating user accesses

Reiji Watanabe (7):
      KVM: arm64: PMU: Introduce helpers to set the guest's PMU
      KVM: arm64: Select default PMU in KVM_ARM_VCPU_INIT handler
      KVM: arm64: PMU: Add a helper to read a vCPU's PMCR_EL0
      KVM: arm64: PMU: Allow userspace to limit PMCR_EL0.N for the guest
      KVM: selftests: aarch64: Introduce vpmu_counter_access test
      KVM: selftests: aarch64: vPMU register test for implemented counters
      KVM: selftests: aarch64: vPMU register test for unimplemented counters

Sean Christopherson (2):
      KVM: x86: Refactor can_emulate_instruction() return to be more expressive
      KVM: SVM: Treat all "skip" emulation for SEV guests as outright failures

Tao Su (1):
      KVM: x86: Clear bit12 of ICR after APIC-write VM-exit

Tianrui Zhao (25):
      LoongArch: KVM: Add kvm related header files
      LoongArch: KVM: Implement kvm module related interface
      LoongArch: KVM: Implement kvm hardware enable, disable interface
      LoongArch: KVM: Implement VM related functions
      LoongArch: KVM: Add vcpu related header files
      LoongArch: KVM: Implement basic vcpu interfaces
      LoongArch: KVM: Implement basic vcpu ioctl interfaces
      LoongArch: KVM: Implement fpu operations for vcpu
      LoongArch: KVM: Implement vcpu interrupt operations
      LoongArch: KVM: Implement vcpu load and vcpu put operations
      LoongArch: KVM: Implement misc vcpu related interfaces
      LoongArch: KVM: Implement vcpu timer operations
      LoongArch: KVM: Implement virtual machine tlb operations
      LoongArch: KVM: Implement kvm mmu operations
      LoongArch: KVM: Implement handle csr exception
      LoongArch: KVM: Implement handle iocsr exception
      LoongArch: KVM: Implement handle idle exception
      LoongArch: KVM: Implement handle gspr exception
      LoongArch: KVM: Implement handle mmio exception
      LoongArch: KVM: Implement handle fpu exception
      LoongArch: KVM: Implement kvm exception vectors
      LoongArch: KVM: Implement vcpu world switch
      LoongArch: KVM: Enable kvm config and add the makefile
      LoongArch: KVM: Supplement kvm document about LoongArch-specific part
      LoongArch: KVM: Add maintainers for LoongArch KVM

Vincent Donnefort (1):
      KVM: arm64: Do not transfer page refcount for THP adjustment

Yan Zhao (5):
      KVM: x86/mmu: Add helpers to return if KVM honors guest MTRRs
      KVM: x86/mmu: Zap SPTEs when CR0.CD is toggled iff guest MTRRs are honored
      KVM: x86/mmu: Zap SPTEs on MTRR update iff guest MTRRs are honored
      KVM: x86/mmu: Zap KVM TDP when noncoherent DMA assignment starts/stops
      KVM: VMX: drop IPAT in memtype when CD=1 for KVM_X86_QUIRK_CD_NW_CLEARED

Zenghui Yu (2):
      KVM: arm64: selftest: Add the missing .guest_prepare()
      KVM: arm64: selftest: Perform ISB before reading PAR_EL1

 .../devicetree/bindings/riscv/extensions.yaml      |  12 +
 Documentation/virt/kvm/api.rst                     | 158 +++-
 Documentation/virt/kvm/arm/index.rst               |   1 +
 Documentation/virt/kvm/arm/vcpu-features.rst       |  48 ++
 Documentation/virt/kvm/devices/arm-vgic-v3.rst     |   7 +
 Documentation/virt/kvm/x86/mmu.rst                 |  43 +-
 MAINTAINERS                                        |  13 +
 arch/arm64/include/asm/kvm_arm.h                   |   4 +-
 arch/arm64/include/asm/kvm_emulate.h               |  15 +-
 arch/arm64/include/asm/kvm_host.h                  |  61 +-
 arch/arm64/include/asm/kvm_hyp.h                   |   7 +-
 arch/arm64/include/asm/kvm_mmu.h                   |  45 +-
 arch/arm64/include/asm/kvm_nested.h                |   3 +-
 arch/arm64/include/asm/stage2_pgtable.h            |   4 +-
 arch/arm64/include/asm/sysreg.h                    |  45 +
 arch/arm64/include/asm/tlbflush.h                  |   8 +-
 arch/arm64/include/asm/traps.h                     |  54 +-
 arch/arm64/include/uapi/asm/kvm.h                  |  32 +
 arch/arm64/kernel/traps.c                          |  48 +-
 arch/arm64/kvm/arch_timer.c                        |   6 +-
 arch/arm64/kvm/arm.c                               | 200 ++++-
 arch/arm64/kvm/emulate-nested.c                    |  77 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |  17 +
 arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     |   3 +-
 arch/arm64/kvm/hyp/nvhe/mem_protect.c              |   8 +-
 arch/arm64/kvm/hyp/nvhe/pkvm.c                     |   4 +-
 arch/arm64/kvm/hyp/nvhe/switch.c                   |   2 +
 arch/arm64/kvm/hyp/pgtable.c                       |   4 +-
 arch/arm64/kvm/hyp/vhe/switch.c                    |  34 +-
 arch/arm64/kvm/hyp/vhe/sysreg-sr.c                 |  11 +-
 arch/arm64/kvm/hyp/vhe/tlb.c                       |  18 +-
 arch/arm64/kvm/hypercalls.c                        |  36 +-
 arch/arm64/kvm/mmio.c                              |   4 +-
 arch/arm64/kvm/mmu.c                               |  33 +-
 arch/arm64/kvm/pkvm.c                              |   2 +-
 arch/arm64/kvm/pmu-emul.c                          | 145 +++-
 arch/arm64/kvm/reset.c                             |  56 +-
 arch/arm64/kvm/sys_regs.c                          | 353 ++++++--
 arch/arm64/kvm/trace_arm.h                         |  25 +
 arch/arm64/kvm/vgic/vgic-debug.c                   |   6 +-
 arch/arm64/kvm/vgic/vgic-irqfd.c                   |   2 +-
 arch/arm64/kvm/vgic/vgic-its.c                     |  49 +-
 arch/arm64/kvm/vgic/vgic-kvm-device.c              |  11 +-
 arch/arm64/kvm/vgic/vgic-mmio-v3.c                 | 156 ++--
 arch/arm64/kvm/vgic/vgic.c                         |  12 +-
 arch/arm64/kvm/vmid.c                              |  11 +-
 arch/loongarch/Kbuild                              |   2 +
 arch/loongarch/Kconfig                             |   6 +
 arch/loongarch/configs/loongson3_defconfig         |   2 +
 arch/loongarch/include/asm/inst.h                  |  16 +
 arch/loongarch/include/asm/kvm_csr.h               | 211 +++++
 arch/loongarch/include/asm/kvm_host.h              | 237 ++++++
 arch/loongarch/include/asm/kvm_mmu.h               | 139 +++
 arch/loongarch/include/asm/kvm_types.h             |  11 +
 arch/loongarch/include/asm/kvm_vcpu.h              |  93 ++
 arch/loongarch/include/asm/loongarch.h             |  19 +-
 arch/loongarch/include/uapi/asm/kvm.h              | 108 +++
 arch/loongarch/kernel/asm-offsets.c                |  32 +
 arch/loongarch/kvm/Kconfig                         |  40 +
 arch/loongarch/kvm/Makefile                        |  22 +
 arch/loongarch/kvm/exit.c                          | 696 +++++++++++++++
 arch/loongarch/kvm/interrupt.c                     | 183 ++++
 arch/loongarch/kvm/main.c                          | 420 +++++++++
 arch/loongarch/kvm/mmu.c                           | 914 ++++++++++++++++++++
 arch/loongarch/kvm/switch.S                        | 250 ++++++
 arch/loongarch/kvm/timer.c                         | 197 +++++
 arch/loongarch/kvm/tlb.c                           |  32 +
 arch/loongarch/kvm/trace.h                         | 162 ++++
 arch/loongarch/kvm/vcpu.c                          | 939 +++++++++++++++++++++
 arch/loongarch/kvm/vm.c                            |  94 +++
 arch/riscv/include/asm/csr.h                       |  18 +
 arch/riscv/include/asm/hwcap.h                     |   2 +
 arch/riscv/include/asm/kvm_host.h                  |  18 +
 arch/riscv/include/asm/kvm_vcpu_sbi.h              |   7 +-
 arch/riscv/include/asm/sbi.h                       |   7 +
 arch/riscv/include/uapi/asm/kvm.h                  |  12 +
 arch/riscv/kernel/cpufeature.c                     |   2 +
 arch/riscv/kvm/vcpu.c                              |  74 +-
 arch/riscv/kvm/vcpu_onereg.c                       |  72 +-
 arch/riscv/kvm/vcpu_sbi.c                          |  61 +-
 arch/riscv/kvm/vcpu_sbi_replace.c                  |  32 +
 arch/s390/include/asm/kvm_host.h                   |   7 +
 arch/s390/kvm/gaccess.c                            |   7 +
 arch/s390/kvm/kvm-s390.c                           |  11 +-
 arch/s390/kvm/trace-s390.h                         |  23 +
 arch/s390/kvm/vsie.c                               |   5 +-
 arch/x86/include/asm/cpufeatures.h                 |   1 +
 arch/x86/include/asm/kvm-x86-ops.h                 |   3 +-
 arch/x86/include/asm/kvm_host.h                    |  22 +-
 arch/x86/include/asm/msr-index.h                   |   1 +
 arch/x86/kvm/Kconfig                               |  11 +
 arch/x86/kvm/cpuid.c                               |  10 +-
 arch/x86/kvm/cpuid.h                               |   3 +-
 arch/x86/kvm/hyperv.c                              |  10 +-
 arch/x86/kvm/lapic.c                               |  30 +-
 arch/x86/kvm/mmu.h                                 |   7 +
 arch/x86/kvm/mmu/mmu.c                             |  37 +-
 arch/x86/kvm/mtrr.c                                |   2 +-
 arch/x86/kvm/smm.c                                 |   1 -
 arch/x86/kvm/svm/svm.c                             |  52 +-
 arch/x86/kvm/vmx/vmx.c                             |  45 +-
 arch/x86/kvm/x86.c                                 | 248 ++++--
 arch/x86/kvm/x86.h                                 |   1 +
 arch/x86/kvm/xen.c                                 |  59 +-
 include/kvm/arm_arch_timer.h                       |   2 +-
 include/kvm/arm_pmu.h                              |  28 +-
 include/kvm/arm_psci.h                             |   2 +-
 include/kvm/arm_vgic.h                             |   4 +-
 include/linux/perf/arm_pmuv3.h                     |   9 +-
 include/uapi/linux/kvm.h                           |  11 +
 tools/arch/arm64/include/.gitignore                |   1 +
 tools/arch/arm64/include/asm/gpr-num.h             |  26 +
 tools/arch/arm64/include/asm/sysreg.h              | 841 +++++-------------
 tools/arch/arm64/tools/Makefile                    |  38 +
 tools/include/perf/arm_pmuv3.h                     | 308 +++++++
 tools/perf/Makefile.perf                           |  15 +-
 tools/perf/util/Build                              |   2 +-
 tools/testing/selftests/kvm/Makefile               |  25 +-
 .../selftests/kvm/aarch64/aarch32_id_regs.c        |   4 +-
 .../selftests/kvm/aarch64/debug-exceptions.c       |  12 +-
 .../selftests/kvm/aarch64/page_fault_test.c        |  11 +-
 tools/testing/selftests/kvm/aarch64/set_id_regs.c  | 481 +++++++++++
 .../selftests/kvm/aarch64/vpmu_counter_access.c    | 670 +++++++++++++++
 .../selftests/kvm/include/aarch64/processor.h      |   1 +
 .../testing/selftests/kvm/lib/aarch64/processor.c  |   6 +-
 tools/testing/selftests/kvm/riscv/get-reg-list.c   | 235 ++++--
 tools/testing/selftests/kvm/x86_64/hwcr_msr_test.c |  47 ++
 127 files changed, 8890 insertions(+), 1508 deletions(-)

diff --combined arch/arm64/kvm/arm.c
index 4ea6c22250a5,317964bad1e1..000000000000
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@@ -1204,12 -1279,25 +1279,25 @@@
  			return -ENOENT;
  	}
  
+ 	if (features & ~system_supported_vcpu_features())
+ 		return -EINVAL;
+ 
+ 	/*
+ 	 * For now make sure that both address/generic pointer authentication
+ 	 * features are requested by the userspace together.
+ 	 */
+ 	if (test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, &features) !=
+ 	    test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, &features))
+ 		return -EINVAL;
+ 
+ 	/* Disallow NV+SVE for the time being */
+ 	if (test_bit(KVM_ARM_VCPU_HAS_EL2, &features) &&
+ 	    test_bit(KVM_ARM_VCPU_SVE, &features))
+ 		return -EINVAL;
+ 
  	if (!test_bit(KVM_ARM_VCPU_EL1_32BIT, &features))
  		return 0;
  
- 	if (!cpus_have_final_cap(ARM64_HAS_32BIT_EL1))
- 		return -EINVAL;
- 
  	/* MTE is incompatible with AArch32 */
  	if (kvm_has_mte(vcpu->kvm))
  		return -EINVAL;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ