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-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 8 Nov 2021 14:48:05 +0100
From:   Christian Borntraeger <borntraeger@...ibm.com>
To:     Paolo Bonzini <pbonzini@...hat.com>, torvalds@...ux-foundation.org
Cc:     linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Subject: Re: [GIT PULL] First batch of KVM changes for Linux 5.16

Am 02.11.21 um 17:53 schrieb Paolo Bonzini:
> Linus,
> 
> The following changes since commit 8228c77d8b56e3f735baf71fefb1b548c23691a7:
> 
>    KVM: x86: switch pvclock_gtod_sync_lock to a raw spinlock (2021-10-25 08:14:38 -0400)
> 
> 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 52cf891d8dbd7592261fa30f373410b97f22b76c:
> 
>    Merge tag 'kvm-riscv-5.16-2' of https://github.com/kvm-riscv/linux into HEAD (2021-11-02 09:15:31 -0400)

It seems that this was not yet merged, correct?


> 
> ----------------------------------------------------------------
> ARM:
> * More progress on the protected VM front, now with the full
>    fixed feature set as well as the limitation of some hypercalls
>    after initialisation.
> 
> * Cleanup of the RAZ/WI sysreg handling, which was pointlessly
>    complicated
> 
> * Fixes for the vgic placement in the IPA space, together with a
>    bunch of selftests
> 
> * More memcg accounting of the memory allocated on behalf of a guest
> 
> * Timer and vgic selftests
> 
> * Workarounds for the Apple M1 broken vgic implementation
> 
> * KConfig cleanups
> 
> * New kvmarm.mode=none option, for those who really dislike us
> 
> RISC-V:
> * New KVM port.
> 
> x86:
> * New API to control TSC offset from userspace
> 
> * TSC scaling for nested hypervisors on SVM
> 
> * Switch masterclock protection from raw_spin_lock to seqcount
> 
> * Clean up function prototypes in the page fault code and avoid
> repeated memslot lookups
> 
> * Convey the exit reason to userspace on emulation failure
> 
> * Configure time between NX page recovery iterations
> 
> * Expose Predictive Store Forwarding Disable CPUID leaf
> 
> * Allocate page tracking data structures lazily (if the i915
> KVM-GT functionality is not compiled in)
> 
> * Cleanups, fixes and optimizations for the shadow MMU code
> 
> s390:
> * SIGP Fixes
> 
> * initial preparations for lazy destroy of secure VMs
> 
> * storage key improvements/fixes
> 
> * Log the guest CPNC
> 
> Starting from this release, KVM-PPC patches will come from
> Michael Ellerman's PPC tree.
> 
> ----------------------------------------------------------------
> There is a trivial Kconfig conflict in arch/riscv, and a slightly
> less trivial conflict with Thomas's x86 FPU rework.  The latter is
> due to fx_init going away in my tree (long before Thomas started his
> work, or I would have synchronized better).  The conflict resolution
> is at the bottom of this email.
> 
> Alexandru Elisei (4):
>        KVM: arm64: Return early from read_id_reg() if register is RAZ
>        KVM: arm64: Use get_raz_reg() for userspace reads of PMSWINC_EL0
>        KVM: arm64: Replace get_raz_id_reg() with get_raz_reg()
>        Documentation: admin-guide: Document side effects when pKVM is enabled
> 
> Andrei Vagin (1):
>        KVM: x86/mmu: kvm_faultin_pfn has to return false if pfh is returned
> 
> Anup Patel (15):
>        RISC-V: Add hypervisor extension related CSR defines
>        RISC-V: Add initial skeletal KVM support
>        RISC-V: KVM: Implement VCPU create, init and destroy functions
>        RISC-V: KVM: Implement VCPU interrupts and requests handling
>        RISC-V: KVM: Implement KVM_GET_ONE_REG/KVM_SET_ONE_REG ioctls
>        RISC-V: KVM: Implement VCPU world-switch
>        RISC-V: KVM: Handle MMIO exits for VCPU
>        RISC-V: KVM: Handle WFI exits for VCPU
>        RISC-V: KVM: Implement VMID allocator
>        RISC-V: KVM: Implement stage2 page table programming
>        RISC-V: KVM: Implement MMU notifiers
>        RISC-V: KVM: Document RISC-V specific parts of KVM API
>        RISC-V: KVM: Add MAINTAINERS entry
>        RISC-V: KVM: Factor-out FP virtualization into separate sources
>        RISC-V: KVM: Fix GPA passed to __kvm_riscv_hfence_gvma_xyz() functions
> 
> Atish Patra (4):
>        RISC-V: KVM: Add timer functionality
>        RISC-V: KVM: FP lazy save/restore
>        RISC-V: KVM: Implement ONE REG interface for FP registers
>        RISC-V: KVM: Add SBI v0.1 support
> 
> Babu Moger (1):
>        KVM: x86: Expose Predictive Store Forwarding Disable
> 
> Bixuan Cui (1):
>        RISC-V: KVM: fix boolreturn.cocci warnings
> 
> Claudio Imbrenda (5):
>        KVM: s390: pv: add macros for UVC CC values
>        KVM: s390: pv: avoid double free of sida page
>        KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm
>        KVM: s390: pv: avoid stalls when making pages secure
>        KVM: s390: pv: properly handle page flags for protected guests
> 
> Colin Ian King (1):
>        kvm: selftests: Fix spelling mistake "missmatch" -> "mismatch"
> 
> Collin Walling (1):
>        KVM: s390: add debug statement for diag 318 CPNC data
> 
> David Edmondson (4):
>        KVM: x86: Clarify the kvm_run.emulation_failure structure layout
>        KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info
>        KVM: x86: On emulation failure, convey the exit reason, etc. to userspace
>        KVM: x86: SGX must obey the KVM_INTERNAL_ERROR_EMULATION protocol
> 
> David Hildenbrand (8):
>        s390/gmap: validate VMA in __gmap_zap()
>        s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap()
>        s390/mm: validate VMA in PGSTE manipulation functions
>        s390/mm: fix VMA and page table handling code in storage key handling functions
>        s390/uv: fully validate the VMA before calling follow_page()
>        s390/mm: no need for pte_alloc_map_lock() if we know the pmd is present
>        s390/mm: optimize set_guest_storage_key()
>        s390/mm: optimize reset_guest_reference_bit()
> 
> David Matlack (6):
>        KVM: x86/mmu: Fold rmap_recycle into rmap_add
>        KVM: x86/mmu: Pass the memslot around via struct kvm_page_fault
>        KVM: x86/mmu: Avoid memslot lookup in page_fault_handle_page_track
>        KVM: x86/mmu: Avoid memslot lookup in rmap_add
>        KVM: x86/mmu: Avoid memslot lookup in make_spte and mmu_try_to_unsync_pages
>        KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k
> 
> David Stevens (3):
>        KVM: x86: add config for non-kvm users of page tracking
>        KVM: x86: only allocate gfn_track when necessary
>        KVM: cleanup allocation of rmaps and page tracking data
> 
> Eric Farman (2):
>        KVM: s390: Simplify SIGP Set Arch handling
>        KVM: s390: Add a routine for setting userspace CPU state
> 
> Fuad Tabba (8):
>        KVM: arm64: Pass struct kvm to per-EC handlers
>        KVM: arm64: Add missing field descriptor for MDCR_EL2
>        KVM: arm64: Simplify masking out MTE in feature id reg
>        KVM: arm64: Add handlers for protected VM System Registers
>        KVM: arm64: Initialize trap registers for protected VMs
>        KVM: arm64: Move sanitized copies of CPU features
>        KVM: arm64: Trap access to pVM restricted features
>        KVM: arm64: Handle protected guests at 32 bits
> 
> Janis Schoetterl-Glausch (1):
>        KVM: s390: Fix handle_sske page fault handling
> 
> Jia He (2):
>        KVM: arm64: vgic: Add memcg accounting to vgic allocations
>        KVM: arm64: Add memcg accounting to KVM allocations
> 
> Jim Mattson (2):
>        kvm: x86: Remove stale declaration of kvm_no_apic_vcpu
>        KVM: selftests: Fix nested SVM tests when built with clang
> 
> Juergen Gross (3):
>        Revert "x86/kvm: fix vcpu-id indexed array sizes"
>        kvm: rename KVM_MAX_VCPU_ID to KVM_MAX_VCPU_IDS
>        kvm: use kvfree() in kvm_arch_free_vm()
> 
> Junaid Shahid (1):
>        kvm: x86: mmu: Make NX huge page recovery period configurable
> 
> Krish Sadhukhan (1):
>        nSVM: Check for reserved encodings of TLB_CONTROL in nested VMCB
> 
> Lai Jiangshan (14):
>        KVM: X86: Don't flush current tlb on shadow page modification
>        KVM: X86: Remove kvm_mmu_flush_or_zap()
>        KVM: X86: Change kvm_sync_page() to return true when remote flush is needed
>        KVM: X86: Zap the invalid list after remote tlb flushing
>        KVM: X86: Remove FNAME(update_pte)
>        KVM: X86: Don't unsync pagetables when speculative
>        KVM: X86: Don't check unsync if the original spte is writible
>        KVM: X86: Move PTE present check from loop body to __shadow_walk_next()
>        KVM: X86: Don't reset mmu context when X86_CR4_PCIDE 1->0
>        KVM: X86: Don't reset mmu context when toggling X86_CR4_PGE
>        KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid()
>        KVM: X86: Cache CR3 in prev_roots when PCID is disabled
>        KVM: X86: pair smp_wmb() of mmu_try_to_unsync_pages() with smp_rmb()
>        KVM: X86: Don't unload MMU in kvm_vcpu_flush_tlb_guest()
> 
> Longpeng(Mike) (1):
>        kvm: irqfd: avoid update unmodified entries of the routing
> 
> Lukas Bulwahn (1):
>        riscv: do not select non-existing config ANON_INODES
> 
> Marc Zyngier (33):
>        KVM: arm64: Turn __KVM_HOST_SMCCC_FUNC_* into an enum (mostly)
>        Merge branch kvm-arm64/pkvm/restrict-hypercalls into kvmarm-master/next
>        Merge branch kvm-arm64/vgic-ipa-checks into kvmarm-master/next
>        KVM: arm64: Allow KVM to be disabled from the command line
>        Merge branch kvm-arm64/misc-5.16 into kvmarm-master/next
>        Merge branch kvm-arm64/raz-sysregs into kvmarm-master/next
>        KVM: arm64: Move __get_fault_info() and co into their own include file
>        KVM: arm64: Don't include switch.h into nvhe/kvm-main.c
>        KVM: arm64: Move early handlers to per-EC handlers
>        Merge branch kvm-arm64/pkvm/restrict-hypercalls into kvmarm-master/next
>        KVM: arm64: Fix reporting of endianess when the access originates at EL0
>        Merge branch kvm-arm64/misc-5.16 into kvmarm-master/next
>        KVM: arm64: Force ID_AA64PFR0_EL1.GIC=1 when exposing a virtual GICv3
>        KVM: arm64: vgic-v3: Work around GICv3 locally generated SErrors
>        KVM: arm64: vgic-v3: Reduce common group trapping to ICV_DIR_EL1 when possible
>        KVM: arm64: vgic-v3: Don't advertise ICC_CTLR_EL1.SEIS
>        KVM: arm64: vgic-v3: Align emulated cpuif LPI state machine with the pseudocode
>        Merge branch kvm-arm64/vgic-fixes-5.16 into kvmarm-master/next
>        Merge branch kvm-arm64/selftest/timer into kvmarm-master/next
>        Merge branch kvm-arm64/memory-accounting into kvmarm-master/next
>        KVM: arm64: Fix early exit ptrauth handling
>        KVM: arm64: pkvm: Use a single function to expose all id-regs
>        KVM: arm64: pkvm: Make the ERR/ERX*_EL1 registers RAZ/WI
>        KVM: arm64: pkvm: Drop AArch32-specific registers
>        KVM: arm64: pkvm: Drop sysregs that should never be routed to the host
>        KVM: arm64: pkvm: Handle GICv3 traps as required
>        KVM: arm64: pkvm: Preserve pending SError on exit from AArch32
>        KVM: arm64: pkvm: Consolidate include files
>        KVM: arm64: pkvm: Move kvm_handle_pvm_restricted around
>        KVM: arm64: pkvm: Pass vpcu instead of kvm to kvm_get_exit_handler_array()
>        KVM: arm64: pkvm: Give priority to standard traps over pvm handling
>        Merge branch kvm-arm64/pkvm/fixed-features into kvmarm-master/next
>        Merge branch kvm/selftests/memslot into kvmarm-master/next
> 
> Maxim Levitsky (4):
>        KVM: x86: nSVM: don't copy pause related settings
>        KVM: x86: SVM: add module param to control LBR virtualization
>        KVM: x86: SVM: add module param to control TSC scaling
>        KVM: x86: nSVM: implement nested TSC scaling
> 
> Michael Roth (1):
>        KVM: selftests: set CPUID before setting sregs in vcpu creation
> 
> Oliver Upton (9):
>        KVM: x86: Fix potential race in KVM_GET_CLOCK
>        KVM: x86: Report host tsc and realtime values in KVM_GET_CLOCK
>        KVM: x86: Refactor tsc synchronization code
>        KVM: x86: Expose TSC offset controls to userspace
>        tools: arch: x86: pull in pvclock headers
>        selftests: KVM: Add test for KVM_{GET,SET}_CLOCK
>        selftests: KVM: Fix kvm device helper ioctl assertions
>        selftests: KVM: Add helpers for vCPU device attributes
>        selftests: KVM: Introduce system counter offset test
> 
> Paolo Bonzini (36):
>        KVM: x86: SVM: don't set VMLOAD/VMSAVE intercepts on vCPU reset
>        kvm: x86: abstract locking around pvclock_update_vm_gtod_copy
>        KVM: x86: extract KVM_GET_CLOCK/KVM_SET_CLOCK to separate functions
>        KVM: MMU: pass unadulterated gpa to direct_page_fault
>        KVM: MMU: Introduce struct kvm_page_fault
>        KVM: MMU: change mmu->page_fault() arguments to kvm_page_fault
>        KVM: MMU: change direct_page_fault() arguments to kvm_page_fault
>        KVM: MMU: change page_fault_handle_page_track() arguments to kvm_page_fault
>        KVM: MMU: change kvm_faultin_pfn() arguments to kvm_page_fault
>        KVM: MMU: change handle_abnormal_pfn() arguments to kvm_page_fault
>        KVM: MMU: change __direct_map() arguments to kvm_page_fault
>        KVM: MMU: change FNAME(fetch)() arguments to kvm_page_fault
>        KVM: MMU: change kvm_tdp_mmu_map() arguments to kvm_page_fault
>        KVM: MMU: change tdp_mmu_map_handle_target_level() arguments to kvm_page_fault
>        KVM: MMU: change fast_page_fault() arguments to kvm_page_fault
>        KVM: MMU: change kvm_mmu_hugepage_adjust() arguments to kvm_page_fault
>        KVM: MMU: change disallowed_hugepage_adjust() arguments to kvm_page_fault
>        KVM: MMU: change tracepoints arguments to kvm_page_fault
>        KVM: MMU: mark page dirty in make_spte
>        KVM: MMU: unify tdp_mmu_map_set_spte_atomic and tdp_mmu_set_spte_atomic_no_dirty_log
>        KVM: MMU: inline set_spte in mmu_set_spte
>        KVM: MMU: inline set_spte in FNAME(sync_page)
>        KVM: MMU: clean up make_spte return value
>        KVM: MMU: remove unnecessary argument to mmu_set_spte
>        KVM: MMU: set ad_disabled in TDP MMU role
>        KVM: MMU: pass kvm_mmu_page struct to make_spte
>        KVM: MMU: pass struct kvm_page_fault to mmu_set_spte
>        Merge tag 'kvm-riscv-5.16-1' of git://github.com/kvm-riscv/linux into HEAD
>        Merge commit 'kvm-pagedata-alloc-fixes' into HEAD
>        KVM: x86: avoid warning with -Wbitwise-instead-of-logical
>        kvm: x86: protect masterclock with a seqcount
>        KVM: x86/mmu: clean up prefetch/prefault/speculative naming
>        Merge branch 'kvm-pvclock-raw-spinlock' into HEAD
>        Merge tag 'kvmarm-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
>        Merge tag 'kvm-s390-next-5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
>        Merge tag 'kvm-riscv-5.16-2' of https://github.com/kvm-riscv/linux into HEAD
> 
> Raghavendra Rao Ananta (14):
>        KVM: arm64: selftests: Add MMIO readl/writel support
>        tools: arm64: Import sysreg.h
>        KVM: arm64: selftests: Introduce ARM64_SYS_KVM_REG
>        KVM: arm64: selftests: Add support for cpu_relax
>        KVM: arm64: selftests: Add basic support for arch_timers
>        KVM: arm64: selftests: Add basic support to generate delays
>        KVM: arm64: selftests: Add support to disable and enable local IRQs
>        KVM: arm64: selftests: Maintain consistency for vcpuid type
>        KVM: arm64: selftests: Add guest support to get the vcpuid
>        KVM: arm64: selftests: Add light-weight spinlock support
>        KVM: arm64: selftests: Add basic GICv3 support
>        KVM: arm64: selftests: Add host support for vGIC
>        KVM: arm64: selftests: Add arch_timer test
>        KVM: arm64: selftests: arch_timer: Support vCPU migration
> 
> Ricardo Koller (13):
>        kvm: arm64: vgic: Introduce vgic_check_iorange
>        KVM: arm64: vgic-v3: Check redist region is not above the VM IPA size
>        KVM: arm64: vgic-v2: Check cpu interface region is not above the VM IPA size
>        KVM: arm64: vgic-v3: Check ITS region is not above the VM IPA size
>        KVM: arm64: vgic: Drop vgic_check_ioaddr()
>        KVM: arm64: selftests: Make vgic_init gic version agnostic
>        KVM: arm64: selftests: Make vgic_init/vm_gic_create version agnostic
>        KVM: arm64: selftests: Add some tests for GICv2 in vgic_init
>        KVM: arm64: selftests: Add tests for GIC redist/cpuif partially above IPA range
>        KVM: arm64: selftests: Add test for legacy GICv3 REDIST base partially above IPA range
>        KVM: arm64: selftests: Add init ITS device test
>        KVM: selftests: Make memslot_perf_test arch independent
>        KVM: selftests: Build the memslot tests for arm64
> 
> Sean Christopherson (23):
>        KVM: x86: Subsume nested GPA read helper into load_pdptrs()
>        KVM: x86: Simplify retrieving the page offset when loading PDTPRs
>        KVM: x86: Do not mark all registers as avail/dirty during RESET/INIT
>        KVM: x86: Remove defunct setting of CR0.ET for guests during vCPU create
>        KVM: x86: Remove defunct setting of XCR0 for guest during vCPU create
>        KVM: x86: Fold fx_init() into kvm_arch_vcpu_create()
>        KVM: VMX: Drop explicit zeroing of MSR guest values at vCPU creation
>        KVM: VMX: Move RESET emulation to vmx_vcpu_reset()
>        KVM: SVM: Move RESET emulation to svm_vcpu_reset()
>        KVM: x86: WARN on non-zero CRs at RESET to detect improper initalization
>        KVM: x86: Manually retrieve CPUID.0x1 when getting FMS for RESET/INIT
>        KVM: x86/mmu: Complete prefetch for trailing SPTEs for direct, legacy MMU
>        KVM: x86/mmu: Verify shadow walk doesn't terminate early in page faults
>        KVM: arm64: Unconditionally include generic KVM's Kconfig
>        KVM: arm64: Depend on HAVE_KVM instead of OF
>        KVM: x86: Add vendor name to kvm_x86_ops, use it for error messages
>        KVM: x86/mmu: Drop a redundant, broken remote TLB flush
>        KVM: x86/mmu: Drop a redundant remote TLB flush in kvm_zap_gfn_range()
>        KVM: x86/mmu: Extract zapping of rmaps for gfn range to separate helper
>        KVM: x86: Move SVM's APICv sanity check to common x86
>        KVM: x86: Use rw_semaphore for APICv lock to allow vCPU parallelism
>        x86/irq: Ensure PI wakeup handler is unregistered before module unload
>        KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup
> 
> Thomas Huth (1):
>        KVM: selftests: Fix kvm_vm_free() in cr4_cpuid_sync and vmx_tsc_adjust tests
> 
> Vitaly Kuznetsov (6):
>        KVM: nVMX: Reset vmxon_ptr upon VMXOFF emulation.
>        KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with vcpu_mask==NULL
>        KVM: Optimize kvm_make_vcpus_request_mask() a bit
>        KVM: Drop 'except' parameter from kvm_make_vcpus_request_mask()
>        KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except()
>        KVM: Make kvm_make_vcpus_request_mask() use pre-allocated cpu_kick_mask
> 
> Wanpeng Li (2):
>        KVM: vPMU: Fill get_msr MSR_CORE_PERF_GLOBAL_OVF_CTRL w/ 0
>        KVM: emulate: Comment on difference between RDPMC implementation and manual
> 
> Will Deacon (5):
>        arm64: Prevent kexec and hibernation if is_protected_kvm_enabled()
>        KVM: arm64: Reject stub hypercalls after pKVM has been initialised
>        KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall
>        KVM: arm64: Prevent re-finalisation of pKVM for a given CPU
>        KVM: arm64: Disable privileged hypercalls after pKVM finalisation
> 
> Xiaoyao Li (4):
>        KVM: VMX: Restore host's MSR_IA32_RTIT_CTL when it's not zero
>        KVM: VMX: Use precomputed vmx->pt_desc.addr_range
>        KVM: VMX: Rename pt_desc.addr_range to pt_desc.num_address_ranges
>        KVM: VMX: RTIT_CTL_BRANCH_EN has no dependency on other CPUID bit
> 
> Yang Li (1):
>        KVM: use vma_pages() helper
> 
> Yu Zhang (1):
>        KVM: nVMX: Use INVALID_GPA for pointers used in nVMX.
> 
> ran jianping (1):
>        RISC-V: KVM: remove unneeded semicolon
> 
>   Documentation/admin-guide/kernel-parameters.txt    |   15 +-
>   Documentation/virt/kvm/api.rst                     |  241 +++-
>   Documentation/virt/kvm/devices/vcpu.rst            |   70 ++
>   Documentation/virt/kvm/devices/xics.rst            |    2 +-
>   Documentation/virt/kvm/devices/xive.rst            |    2 +-
>   MAINTAINERS                                        |   12 +
>   arch/arm64/Kconfig                                 |    1 +
>   arch/arm64/include/asm/kvm_arm.h                   |    1 +
>   arch/arm64/include/asm/kvm_asm.h                   |   48 +-
>   arch/arm64/include/asm/kvm_emulate.h               |    5 +-
>   arch/arm64/include/asm/kvm_host.h                  |    4 +-
>   arch/arm64/include/asm/kvm_hyp.h                   |    5 +
>   arch/arm64/include/asm/sysreg.h                    |    3 +
>   arch/arm64/kernel/smp.c                            |    3 +-
>   arch/arm64/kvm/Kconfig                             |   10 +-
>   arch/arm64/kvm/arm.c                               |  102 +-
>   arch/arm64/kvm/hyp/include/hyp/fault.h             |   75 ++
>   arch/arm64/kvm/hyp/include/hyp/switch.h            |  235 ++--
>   arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     |  200 +++
>   arch/arm64/kvm/hyp/include/nvhe/trap_handler.h     |    2 +
>   arch/arm64/kvm/hyp/nvhe/Makefile                   |    2 +-
>   arch/arm64/kvm/hyp/nvhe/host.S                     |   26 +-
>   arch/arm64/kvm/hyp/nvhe/hyp-main.c                 |   48 +-
>   arch/arm64/kvm/hyp/nvhe/mem_protect.c              |   11 +-
>   arch/arm64/kvm/hyp/nvhe/pkvm.c                     |  185 +++
>   arch/arm64/kvm/hyp/nvhe/setup.c                    |    3 +
>   arch/arm64/kvm/hyp/nvhe/switch.c                   |   99 ++
>   arch/arm64/kvm/hyp/nvhe/sys_regs.c                 |  487 ++++++++
>   arch/arm64/kvm/hyp/vgic-v3-sr.c                    |   22 +-
>   arch/arm64/kvm/hyp/vhe/switch.c                    |   16 +
>   arch/arm64/kvm/mmu.c                               |    2 +-
>   arch/arm64/kvm/pmu-emul.c                          |    2 +-
>   arch/arm64/kvm/reset.c                             |    2 +-
>   arch/arm64/kvm/sys_regs.c                          |   41 +-
>   arch/arm64/kvm/vgic/vgic-init.c                    |    2 +-
>   arch/arm64/kvm/vgic/vgic-irqfd.c                   |    2 +-
>   arch/arm64/kvm/vgic/vgic-its.c                     |   18 +-
>   arch/arm64/kvm/vgic/vgic-kvm-device.c              |   25 +-
>   arch/arm64/kvm/vgic/vgic-mmio-v3.c                 |    8 +-
>   arch/arm64/kvm/vgic/vgic-v3.c                      |   27 +-
>   arch/arm64/kvm/vgic/vgic-v4.c                      |    2 +-
>   arch/arm64/kvm/vgic/vgic.h                         |    5 +-
>   arch/mips/kvm/mips.c                               |    2 +-
>   arch/powerpc/include/asm/kvm_book3s.h              |    2 +-
>   arch/powerpc/include/asm/kvm_host.h                |    4 +-
>   arch/powerpc/kvm/book3s_xive.c                     |    2 +-
>   arch/powerpc/kvm/powerpc.c                         |    2 +-
>   arch/riscv/Kconfig                                 |    2 +
>   arch/riscv/Makefile                                |    1 +
>   arch/riscv/include/asm/csr.h                       |   87 ++
>   arch/riscv/include/asm/kvm_host.h                  |  264 ++++
>   arch/riscv/include/asm/kvm_types.h                 |    7 +
>   arch/riscv/include/asm/kvm_vcpu_fp.h               |   59 +
>   arch/riscv/include/asm/kvm_vcpu_timer.h            |   44 +
>   arch/riscv/include/uapi/asm/kvm.h                  |  128 ++
>   arch/riscv/kernel/asm-offsets.c                    |  156 +++
>   arch/riscv/kvm/Kconfig                             |   35 +
>   arch/riscv/kvm/Makefile                            |   26 +
>   arch/riscv/kvm/main.c                              |  118 ++
>   arch/riscv/kvm/mmu.c                               |  802 ++++++++++++
>   arch/riscv/kvm/tlb.S                               |   74 ++
>   arch/riscv/kvm/vcpu.c                              |  825 +++++++++++++
>   arch/riscv/kvm/vcpu_exit.c                         |  701 +++++++++++
>   arch/riscv/kvm/vcpu_fp.c                           |  167 +++
>   arch/riscv/kvm/vcpu_sbi.c                          |  185 +++
>   arch/riscv/kvm/vcpu_switch.S                       |  400 ++++++
>   arch/riscv/kvm/vcpu_timer.c                        |  225 ++++
>   arch/riscv/kvm/vm.c                                |   97 ++
>   arch/riscv/kvm/vmid.c                              |  120 ++
>   arch/s390/include/asm/pgtable.h                    |    9 +-
>   arch/s390/include/asm/uv.h                         |   15 +-
>   arch/s390/kernel/uv.c                              |   65 +-
>   arch/s390/kvm/intercept.c                          |    5 +
>   arch/s390/kvm/kvm-s390.c                           |    7 +-
>   arch/s390/kvm/kvm-s390.h                           |    9 +
>   arch/s390/kvm/priv.c                               |    2 +
>   arch/s390/kvm/pv.c                                 |   21 +-
>   arch/s390/kvm/sigp.c                               |   14 +-
>   arch/s390/mm/gmap.c                                |   15 +-
>   arch/s390/mm/pgtable.c                             |  109 +-
>   arch/x86/include/asm/kvm_host.h                    |   48 +-
>   arch/x86/include/asm/kvm_page_track.h              |   11 +-
>   arch/x86/include/uapi/asm/kvm.h                    |    4 +
>   arch/x86/kernel/irq.c                              |    4 +-
>   arch/x86/kvm/Kconfig                               |    3 +
>   arch/x86/kvm/cpuid.c                               |   10 +-
>   arch/x86/kvm/emulate.c                             |    5 +
>   arch/x86/kvm/hyperv.c                              |   22 +-
>   arch/x86/kvm/ioapic.c                              |    2 +-
>   arch/x86/kvm/ioapic.h                              |    4 +-
>   arch/x86/kvm/mmu.h                                 |  114 +-
>   arch/x86/kvm/mmu/mmu.c                             |  702 ++++++-----
>   arch/x86/kvm/mmu/mmu_internal.h                    |   21 +-
>   arch/x86/kvm/mmu/mmutrace.h                        |   18 +-
>   arch/x86/kvm/mmu/page_track.c                      |   49 +-
>   arch/x86/kvm/mmu/paging_tmpl.h                     |  168 ++-
>   arch/x86/kvm/mmu/spte.c                            |   34 +-
>   arch/x86/kvm/mmu/spte.h                            |   21 +-
>   arch/x86/kvm/mmu/tdp_mmu.c                         |  119 +-
>   arch/x86/kvm/mmu/tdp_mmu.h                         |    6 +-
>   arch/x86/kvm/svm/nested.c                          |   52 +-
>   arch/x86/kvm/svm/sev.c                             |    6 +-
>   arch/x86/kvm/svm/svm.c                             |  168 ++-
>   arch/x86/kvm/svm/svm.h                             |    9 +-
>   arch/x86/kvm/trace.h                               |    9 +-
>   arch/x86/kvm/vmx/nested.c                          |   63 +-
>   arch/x86/kvm/vmx/pmu_intel.c                       |    6 +-
>   arch/x86/kvm/vmx/sgx.c                             |   16 +-
>   arch/x86/kvm/vmx/vmx.c                             |  136 +-
>   arch/x86/kvm/vmx/vmx.h                             |    2 +-
>   arch/x86/kvm/x86.c                                 |  800 +++++++-----
>   arch/x86/kvm/x86.h                                 |    2 -
>   drivers/clocksource/timer-riscv.c                  |    9 +
>   drivers/gpu/drm/i915/Kconfig                       |    1 +
>   include/clocksource/timer-riscv.h                  |   16 +
>   include/linux/kvm_host.h                           |   18 +-
>   include/uapi/linux/kvm.h                           |   29 +-
>   tools/arch/arm64/include/asm/sysreg.h              | 1296 ++++++++++++++++++++
>   tools/arch/x86/include/asm/pvclock-abi.h           |   48 +
>   tools/arch/x86/include/asm/pvclock.h               |  103 ++
>   tools/testing/selftests/kvm/.gitignore             |    3 +
>   tools/testing/selftests/kvm/Makefile               |    7 +-
>   tools/testing/selftests/kvm/aarch64/arch_timer.c   |  479 ++++++++
>   .../selftests/kvm/aarch64/debug-exceptions.c       |   30 +-
>   .../selftests/kvm/aarch64/psci_cpu_on_test.c       |    2 +-
>   tools/testing/selftests/kvm/aarch64/vgic_init.c    |  369 ++++--
>   .../selftests/kvm/include/aarch64/arch_timer.h     |  142 +++
>   .../testing/selftests/kvm/include/aarch64/delay.h  |   25 +
>   tools/testing/selftests/kvm/include/aarch64/gic.h  |   21 +
>   .../selftests/kvm/include/aarch64/processor.h      |   90 +-
>   .../selftests/kvm/include/aarch64/spinlock.h       |   13 +
>   tools/testing/selftests/kvm/include/aarch64/vgic.h |   20 +
>   tools/testing/selftests/kvm/include/kvm_util.h     |   13 +
>   tools/testing/selftests/kvm/kvm_create_max_vcpus.c |    2 +-
>   tools/testing/selftests/kvm/lib/aarch64/gic.c      |   95 ++
>   .../selftests/kvm/lib/aarch64/gic_private.h        |   21 +
>   tools/testing/selftests/kvm/lib/aarch64/gic_v3.c   |  240 ++++
>   tools/testing/selftests/kvm/lib/aarch64/gic_v3.h   |   70 ++
>   .../testing/selftests/kvm/lib/aarch64/processor.c  |   24 +-
>   tools/testing/selftests/kvm/lib/aarch64/spinlock.c |   27 +
>   tools/testing/selftests/kvm/lib/aarch64/vgic.c     |   70 ++
>   tools/testing/selftests/kvm/lib/kvm_util.c         |   46 +-
>   tools/testing/selftests/kvm/lib/sparsebit.c        |    2 +-
>   tools/testing/selftests/kvm/lib/x86_64/processor.c |    4 +-
>   tools/testing/selftests/kvm/lib/x86_64/svm.c       |   14 +-
>   tools/testing/selftests/kvm/memslot_perf_test.c    |   56 +-
>   .../selftests/kvm/system_counter_offset_test.c     |  132 ++
>   .../selftests/kvm/x86_64/cr4_cpuid_sync_test.c     |    3 +-
>   .../testing/selftests/kvm/x86_64/kvm_clock_test.c  |  203 +++
>   .../selftests/kvm/x86_64/vmx_tsc_adjust_test.c     |    2 +-
>   virt/kvm/eventfd.c                                 |   15 +-
>   virt/kvm/kvm_main.c                                |  127 +-
>   152 files changed, 11646 insertions(+), 1752 deletions(-)
> 
> 
> diff --cc arch/riscv/Kconfig
> index c28b743eba57,f5fe8a7f0e24..000000000000
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@@ -566,3 -561,6 +566,5 @@@ menu "Power management options
>    source "kernel/power/Kconfig"
>    
>    endmenu
> +
> + source "arch/riscv/kvm/Kconfig"
>   -source "drivers/firmware/Kconfig"
> diff --cc arch/x86/kvm/x86.c
> index 2686f2edb47c,ac83d873d65b..000000000000
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@@ -10485,16 -10869,15 +10730,6 @@@ static int sync_regs(struct kvm_vcpu *v
>    	return 0;
>    }
>    
> - static void fx_init(struct kvm_vcpu *vcpu)
>   -void kvm_free_guest_fpu(struct kvm_vcpu *vcpu)
> --{
> - 	/*
> - 	 * Ensure guest xcr0 is valid for loading
> - 	 */
> - 	vcpu->arch.xcr0 = XFEATURE_MASK_FP;
> -
> - 	vcpu->arch.cr0 |= X86_CR0_ET;
>   -	if (vcpu->arch.guest_fpu) {
>   -		kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
>   -		vcpu->arch.guest_fpu = NULL;
>   -	}
> --}
>   -EXPORT_SYMBOL_GPL(kvm_free_guest_fpu);
> --
>    int kvm_arch_vcpu_precreate(struct kvm *kvm, unsigned int id)
>    {
>    	if (kvm_check_tsc_unstable() && atomic_read(&kvm->online_vcpus) != 0)
> @@@ -10551,13 -10934,24 +10786,11 @@@ int kvm_arch_vcpu_create(struct kvm_vcp
>    	if (!alloc_emulate_ctxt(vcpu))
>    		goto free_wbinvd_dirty_mask;
>    
>   -	vcpu->arch.user_fpu = kmem_cache_zalloc(x86_fpu_cache,
>   -						GFP_KERNEL_ACCOUNT);
>   -	if (!vcpu->arch.user_fpu) {
>   -		pr_err("kvm: failed to allocate userspace's fpu\n");
>   -		goto free_emulate_ctxt;
>   -	}
>   -
>   -	vcpu->arch.guest_fpu = kmem_cache_zalloc(x86_fpu_cache,
>   -						 GFP_KERNEL_ACCOUNT);
>   -	if (!vcpu->arch.guest_fpu) {
>   +	if (!fpu_alloc_guest_fpstate(&vcpu->arch.guest_fpu)) {
>    		pr_err("kvm: failed to allocate vcpu's fpu\n");
>   -		goto free_user_fpu;
>   +		goto free_emulate_ctxt;
>    	}
>   -	fpstate_init(&vcpu->arch.guest_fpu->state);
>   -	if (boot_cpu_has(X86_FEATURE_XSAVES))
>   -		vcpu->arch.guest_fpu->state.xsave.header.xcomp_bv =
>   -			host_xcr0 | XSTATE_COMPACTION_ENABLED;
>    
> - 	fx_init(vcpu);
> -
>    	vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu);
>    	vcpu->arch.reserved_gpa_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu);
>    
> diff --cc arch/riscv/Kconfig
> index c28b743eba57,f5fe8a7f0e24..000000000000
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@@ -566,3 -561,6 +566,5 @@@ menu "Power management options
>    source "kernel/power/Kconfig"
>    
>    endmenu
> +
> + source "arch/riscv/kvm/Kconfig"
>   -source "drivers/firmware/Kconfig"
> diff --cc arch/x86/kvm/x86.c
> index 2686f2edb47c,ac83d873d65b..000000000000
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@@ -10485,16 -10869,15 +10730,6 @@@ static int sync_regs(struct kvm_vcpu *v
>    	return 0;
>    }
>    
> - static void fx_init(struct kvm_vcpu *vcpu)
>   -void kvm_free_guest_fpu(struct kvm_vcpu *vcpu)
> --{
> - 	/*
> - 	 * Ensure guest xcr0 is valid for loading
> - 	 */
> - 	vcpu->arch.xcr0 = XFEATURE_MASK_FP;
> -
> - 	vcpu->arch.cr0 |= X86_CR0_ET;
>   -	if (vcpu->arch.guest_fpu) {
>   -		kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
>   -		vcpu->arch.guest_fpu = NULL;
>   -	}
> --}
>   -EXPORT_SYMBOL_GPL(kvm_free_guest_fpu);
> --
>    int kvm_arch_vcpu_precreate(struct kvm *kvm, unsigned int id)
>    {
>    	if (kvm_check_tsc_unstable() && atomic_read(&kvm->online_vcpus) != 0)
> @@@ -10551,13 -10934,24 +10786,11 @@@ int kvm_arch_vcpu_create(struct kvm_vcp
>    	if (!alloc_emulate_ctxt(vcpu))
>    		goto free_wbinvd_dirty_mask;
>    
>   -	vcpu->arch.user_fpu = kmem_cache_zalloc(x86_fpu_cache,
>   -						GFP_KERNEL_ACCOUNT);
>   -	if (!vcpu->arch.user_fpu) {
>   -		pr_err("kvm: failed to allocate userspace's fpu\n");
>   -		goto free_emulate_ctxt;
>   -	}
>   -
>   -	vcpu->arch.guest_fpu = kmem_cache_zalloc(x86_fpu_cache,
>   -						 GFP_KERNEL_ACCOUNT);
>   -	if (!vcpu->arch.guest_fpu) {
>   +	if (!fpu_alloc_guest_fpstate(&vcpu->arch.guest_fpu)) {
>    		pr_err("kvm: failed to allocate vcpu's fpu\n");
>   -		goto free_user_fpu;
>   +		goto free_emulate_ctxt;
>    	}
>   -	fpstate_init(&vcpu->arch.guest_fpu->state);
>   -	if (boot_cpu_has(X86_FEATURE_XSAVES))
>   -		vcpu->arch.guest_fpu->state.xsave.header.xcomp_bv =
>   -			host_xcr0 | XSTATE_COMPACTION_ENABLED;
>    
> - 	fx_init(vcpu);
> -
>    	vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu);
>    	vcpu->arch.reserved_gpa_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu);
>    
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ