lkml.org 
[lkml]   [2021]   [May]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [GIT PULL] KVM, AMD PSP and ARM CoreSight changes for 5.13 merge window
Date
On 29/04/21 01:05, Paolo Bonzini wrote:
> Linus,
>
> The following changes since commit 523caed9efbb049339706b124185c9358c1b6477:
>
> x86/sgx: Mark sgx_vepc_vm_ops static (2021-04-12 19:48:32 +0200)
>
> 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 3bf0fcd754345d7ea63e1446015ba65ece6788ca:
>
> KVM: selftests: Speed up set_memory_region_test (2021-04-26 12:21:27 -0400)

Hi Linus,

is there anything wrong with this pull request? (I saw that in the
meanwhile you did the MIPS pull, so the conflict on
arch/mips/kvm/trap_emul.c will happen when you pull from me).

Mathieu, can you confirm that your coresight branch will *not* be sent
by the ARM maintainers as well? (Typically they are sent to both
upstream maintainers, in this case that would be ARM and KVM/ARM->KVM;
this is also why I waited until Thursday to send my pull request, as I
would have preferred if all the topic branches had been merged already).

Thanks,

Paolo

>
> It's a fairly large pull request for KVM standards. There were quite
> a few common topic branches and crossover series with other trees,
> especially within KVM ARM, which I need to mention explicitly.
> In particular:
>
> - the coresight/next-ETE-TRBE branch from the KVM ARM tree hasn't yet
> reached you, so I am CCing the maintainer. Since he sent the patches
> as a pull request to Marc Zyngier (the KVM ARM maintainer) at
> https://lore.kernel.org/kvmarm/20210406224437.330939-1-mathieu.poirier@linaro.org/T/#u,
> I actually suspect that from his point of view he's done.
>
> - Herbert Xu and Tom Lendacky asked to include AMD PSP driver changes
> in this pull request
>
> - the KVM ARM tree also brought in a handful of "Get rid of oprofile
> leftovers" patches for other architectures, but they all have maintainer
> acks and are just cleanups, so I am a bit less worried there.
>
> I hope all this is okay.
>
>
> Despite the juggling of topic branches, a couple conflicts escaped:
>
> - the worst is with the tip rework of x86 TLB flushes. Basically, tip
> renamed kvm_flush_tlb_others to kvm_flush_tlb_multi, added a comment and
> moved it to a different position. KVM moved it somewhere else, so after
> merging you'll have both kvm_flush_tlb_multi and kvm_flush_tlb_others.
> You need to take kvm_flush_tlb_multi and paste it in place of
> kvm_flush_tlb_others. For everything else the KVM code is the correct
> one, again except for s/kvm_flush_tlb_others/kvm_flush_tlb_multi/.
> I have placed the relevant hunks of the "diff --combined" output at the
> end of this message.
>
> - arch/mips/kvm/trap_emul.c has been deleted in the MIPS tree, which
> will cause a modify/delete conflict either now or when merging the
> MIPS tree. The conflict is of course solved just by deleting the file.
> For the future, Thomas Bogendorfer will either not take KVM patches or
> ensure that we have a common topic branch.
>
>
> Thanks,
>
> Paolo
>
> ----------------------------------------------------------------
> ARM:
>
> - Stage-2 isolation for the host kernel when running in protected mode
>
> - Guest SVE support when running in nVHE mode
>
> - Force W^X hypervisor mappings in nVHE mode
>
> - ITS save/restore for guests using direct injection with GICv4.1
>
> - nVHE panics now produce readable backtraces
>
> - Guest support for PTP using the ptp_kvm driver
>
> - Performance improvements in the S2 fault handler
>
> x86:
>
> - Optimizations and cleanup of nested SVM code
>
> - AMD: Support for virtual SPEC_CTRL
>
> - Optimizations of the new MMU code: fast invalidation,
> zap under read lock, enable/disably dirty page logging under
> read lock
>
> - /dev/kvm API for AMD SEV live migration (guest API coming soon)
>
> - support SEV virtual machines sharing the same encryption context
>
> - support SGX in virtual machines
>
> - add a few more statistics
>
> - improved directed yield heuristics
>
> - Lots and lots of cleanups
>
> Generic:
>
> - Rework of MMU notifier interface, simplifying and optimizing
> the architecture-specific code
>
> - Some selftests improvements
>
> ----------------------------------------------------------------
> Alexandru Elisei (4):
> Documentation: KVM: Document KVM_GUESTDBG_USE_HW control flag for arm64
> KVM: arm64: Initialize VCPU mdcr_el2 before loading it
> KVM: arm64: Don't print warning when trapping SPE registers
> KVM: arm64: Don't advertise FEAT_SPE to guests
>
> Andrew Scull (5):
> bug: Remove redundant condition check in report_bug
> bug: Factor out a getter for a bug's file line
> bug: Assign values once in bug_get_file_line()
> KVM: arm64: Use BUG and BUG_ON in nVHE hyp
> KVM: arm64: Log source when panicking from nVHE hyp
>
> Anshuman Khandual (5):
> arm64: Add TRBE definitions
> coresight: core: Add support for dedicated percpu sinks
> coresight: sink: Add TRBE driver
> Documentation: coresight: trbe: Sysfs ABI description
> Documentation: trace: Add documentation for TRBE
>
> Babu Moger (2):
> x86/cpufeatures: Add the Virtual SPEC_CTRL feature
> KVM: SVM: Add support for Virtual SPEC_CTRL
>
> Ben Gardon (13):
> KVM: x86/mmu: Re-add const qualifier in kvm_tdp_mmu_zap_collapsible_sptes
> KVM: x86/mmu: Move kvm_mmu_(get|put)_root to TDP MMU
> KVM: x86/mmu: use tdp_mmu_free_sp to free roots
> KVM: x86/mmu: Merge TDP MMU put and free root
> KVM: x86/mmu: Refactor yield safe root iterator
> KVM: x86/mmu: Make TDP MMU root refcount atomic
> KVM: x86/mmu: handle cmpxchg failure in kvm_tdp_mmu_get_root
> KVM: x86/mmu: Protect the tdp_mmu_roots list with RCU
> KVM: x86/mmu: Allow zap gfn range to operate under the mmu read lock
> KVM: x86/mmu: Allow zapping collapsible SPTEs to use MMU read lock
> KVM: x86/mmu: Allow enabling/disabling dirty logging under MMU read lock
> KVM: x86/mmu: Fast invalidation for TDP MMU
> KVM: x86/mmu: Tear down roots before kvm_mmu_zap_all_fast returns
>
> Bhaskar Chowdhury (1):
> KVM: s390: Fix comment spelling in kvm_s390_vcpu_start()
>
> Brijesh Singh (6):
> KVM: SVM: Add KVM_SEV SEND_START command
> KVM: SVM: Add KVM_SEND_UPDATE_DATA command
> KVM: SVM: Add KVM_SEV_SEND_FINISH command
> KVM: SVM: Add support for KVM_SEV_RECEIVE_START command
> KVM: SVM: Add KVM_SEV_RECEIVE_UPDATE_DATA command
> KVM: SVM: Add KVM_SEV_RECEIVE_FINISH command
>
> Cathy Avery (4):
> KVM: SVM: Use a separate vmcb for the nested L2 guest
> KVM: nSVM: Track the physical cpu of the vmcb vmrun through the vmcb
> KVM: nSVM: Track the ASID generation of the vmcb vmrun through the vmcb
> KVM: nSVM: Optimize vmcb12 to vmcb02 save area copies
>
> Claudio Imbrenda (5):
> KVM: s390: split kvm_s390_logical_to_effective
> KVM: s390: extend kvm_s390_shadow_fault to return entry pointer
> KVM: s390: VSIE: correctly handle MVPG when in VSIE
> KVM: s390: split kvm_s390_real_to_abs
> KVM: s390: VSIE: fix MVPG handling for prefixing and MSO
>
> Daniel Kiss (1):
> KVM: arm64: Enable SVE support for nVHE
>
> David Brazdil (1):
> KVM: arm64: Support PREL/PLT relocs in EL2 code
>
> David Edmondson (5):
> KVM: x86: dump_vmcs should not assume GUEST_IA32_EFER is valid
> KVM: x86: dump_vmcs should not conflate EFER and PAT presence in VMCS
> KVM: x86: dump_vmcs should consider only the load controls of EFER/PAT
> KVM: x86: dump_vmcs should show the effective EFER
> KVM: x86: dump_vmcs should include the autoload/autostore MSR lists
>
> Dongli Zhang (1):
> KVM: x86: to track if L1 is running L2 VM
>
> Emanuele Giuseppe Esposito (1):
> doc/virt/kvm: move KVM_CAP_PPC_MULTITCE in section 8
>
> Eric Auger (11):
> KVM: arm64: vgic-v3: Fix some error codes when setting RDIST base
> KVM: arm64: Fix KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION read
> KVM: arm64: vgic-v3: Fix error handling in vgic_v3_set_redist_base()
> KVM: arm/arm64: vgic: Reset base address on kvm_vgic_dist_destroy()
> docs: kvm: devices/arm-vgic-v3: enhance KVM_DEV_ARM_VGIC_CTRL_INIT doc
> KVM: arm64: Simplify argument passing to vgic_uaccess_[read|write]
> kvm: arm64: vgic-v3: Introduce vgic_v3_free_redist_region()
> KVM: arm64: vgic-v3: Expose GICR_TYPER.Last for userspace
> KVM: selftests: aarch64/vgic-v3 init sequence tests
> KVM: selftests: vgic_init kvm selftests fixup
> KVM: arm/arm64: Fix KVM_VGIC_V3_ADDR_TYPE_REDIST read
>
> Gavin Shan (3):
> KVM: arm64: Hide kvm_mmu_wp_memory_region()
> KVM: arm64: Use find_vma_intersection()
> KVM: arm64: Don't retrieve memory slot again in page fault handler
>
> Haiwei Li (2):
> KVM: vmx: add mismatched size assertions in vmcs_check32()
> KVM: x86: Take advantage of kvm_arch_dy_has_pending_interrupt()
>
> Heiko Carstens (1):
> KVM: s390: fix guarded storage control register handling
>
> Isaku Yamahata (1):
> KVM: VMX: use EPT_VIOLATION_GVA_TRANSLATED instead of 0x100
>
> Jianyong Wu (4):
> ptp: Reorganize ptp_kvm.c to make it arch-independent
> clocksource: Add clocksource id for arm arch counter
> KVM: arm64: Add support for the KVM PTP service
> ptp: arm/arm64: Enable ptp_kvm for arm/arm64
>
> Jon Hunter (1):
> ptp: Don't print an error if ptp_kvm is not supported
>
> Keqian Zhu (1):
> KVM: x86: Remove unused function declaration
>
> Krish Sadhukhan (4):
> KVM: nSVM: Add missing checks for reserved bits to svm_set_nested_state()
> KVM: nSVM: If VMRUN is single-stepped, queue the #DB intercept in nested_svm_vmexit()
> KVM: SVM: Define actual size of IOPM and MSRPM tables
> nSVM: Check addresses of MSR and IO permission maps
>
> Marc Zyngier (47):
> KVM: arm64: Provide KVM's own save/restore SVE primitives
> KVM: arm64: Use {read,write}_sysreg_el1 to access ZCR_EL1
> KVM: arm64: Let vcpu_sve_pffr() handle HYP VAs
> KVM: arm64: Introduce vcpu_sve_vq() helper
> arm64: sve: Provide a conditional update accessor for ZCR_ELx
> KVM: arm64: Rework SVE host-save/guest-restore
> KVM: arm64: Map SVE context at EL2 when available
> KVM: arm64: Save guest's ZCR_EL1 before saving the FPSIMD state
> KVM: arm64: Trap host SVE accesses when the FPSIMD state is dirty
> KVM: arm64: Save/restore SVE state for nVHE
> arm64: Use INIT_SCTLR_EL1_MMU_OFF to disable the MMU on CPU restart
> KVM: arm64: Use INIT_SCTLR_EL2_MMU_OFF to disable the MMU on KVM teardown
> KVM: arm64: Turn SCTLR_ELx_FLAGS into INIT_SCTLR_EL2_MMU_ON
> KVM: arm64: Force SCTLR_EL2.WXN when running nVHE
> KVM: arm64: Fix host's ZCR_EL2 restore on nVHE
> Merge tag 'v5.12-rc3' into kvm-arm64/host-stage2
> irqchip/gic-v3-its: Add a cache invalidation right after vPE unmapping
> KVM: arm64: Generate final CTR_EL0 value when running in Protected mode
> KVM: arm64: Drop the CPU_FTR_REG_HYP_COPY infrastructure
> KVM: arm64: Elect Alexandru as a replacement for Julien as a reviewer
> KVM: arm64: Mark the kvmarm ML as moderated for non-subscribers
> KVM: arm64: Fix table format for PTP documentation
> Merge remote-tracking branch 'coresight/next-ETE-TRBE' into kvmarm-master/next
> KVM: arm64: Clarify vcpu reset behaviour
> KVM: arm64: Fully zero the vcpu state on reset
> Merge branch 'kvm-arm64/debug-5.13' into kvmarm-master/next
> Merge branch 'kvm-arm64/host-stage2' into kvmarm-master/next
> Merge branch 'kvm-arm64/memslot-fixes' into kvmarm-master/next
> Merge branch 'kvm-arm64/misc-5.13' into kvmarm-master/next
> Merge branch 'kvm-arm64/nvhe-panic-info' into kvmarm-master/next
> Merge branch 'kvm-arm64/nvhe-sve' into kvmarm-master/next
> Merge branch 'kvm-arm64/nvhe-wxn' into kvmarm-master/next
> Merge branch 'kvm-arm64/ptp' into kvmarm-master/next
> Merge branch 'kvm-arm64/vgic-5.13' into kvmarm-master/next
> Merge branch 'kvm-arm64/vlpi-save-restore' into kvmarm-master/next
> Merge remote-tracking branch 'arm64/for-next/vhe-only' into kvmarm-master/next
> Merge remote-tracking branch 'arm64/for-next/neon-softirqs-disabled' into kvmarm-master/next
> Merge remote-tracking branch 'coresight/next-ETE-TRBE' into kvmarm-master/next
> bug: Provide dummy version of bug_get_file_line() when !GENERIC_BUG
> Merge branch 'kvm-arm64/nvhe-panic-info' into kvmarm-master/next
> Merge branch 'kvm-arm64/ptp' into kvmarm-master/next
> KVM: arm64: Divorce the perf code from oprofile helpers
> arm64: Get rid of oprofile leftovers
> s390: Get rid of oprofile leftovers
> sh: Get rid of oprofile leftovers
> perf: Get rid of oprofile leftovers
> Merge branch 'kvm-arm64/kill_oprofile_dependency' into kvmarm-master/next
>
> Maxim Levitsky (10):
> KVM: nSVM: always use vmcb01 to for vmsave/vmload of guest state
> KVM: x86: determine if an exception has an error code only when injecting it.
> KVM: x86: mmu: initialize fault.async_page_fault in walk_addr_generic
> KVM: x86: add guest_cpuid_is_intel
> KVM: nSVM: improve SYSENTER emulation on AMD
> KVM: nSVM: call nested_svm_load_cr3 on nested state load
> KVM: x86: pending exceptions must not be blocked by an injected event
> KVM: x86: implement KVM_CAP_SET_GUEST_DEBUG2
> KVM: aarch64: implement KVM_CAP_SET_GUEST_DEBUG2
> KVM: s390x: implement KVM_CAP_SET_GUEST_DEBUG2
>
> Nathan Tempelman (1):
> KVM: x86: Support KVM VMs sharing SEV context
>
> Paolo Bonzini (27):
> KVM: nSVM: rename functions and variables according to vmcbXY nomenclature
> KVM: nSVM: do not copy vmcb01->control blindly to vmcb02->control
> KVM: nSVM: do not mark all VMCB01 fields dirty on nested vmexit
> KVM: nSVM: do not mark all VMCB02 fields dirty on nested vmexit
> KVM: nSVM: only copy L1 non-VMLOAD/VMSAVE data in svm_set_nested_state()
> KVM: SVM: merge update_cr0_intercept into svm_set_cr0
> KVM: SVM: Pass struct kvm_vcpu to exit handlers (and many, many other places)
> KVM: SVM: move VMLOAD/VMSAVE to C code
> Merge branch 'kvm-fix-svm-races' into HEAD
> Merge branch 'kvm-tdp-fix-flushes' into HEAD
> Merge branch 'kvm-tdp-fix-rcu' into HEAD
> Merge tag 'kvm-s390-next-5.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
> Merge tag 'kvm-s390-next-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
> Merge remote-tracking branch 'tip/x86/sgx' into kvm-next
> KVM: MMU: load PDPTRs outside mmu_lock
> KVM: introduce KVM_CAP_SET_GUEST_DEBUG2
> KVM: MMU: protect TDP MMU pages only down to required level
> KVM: constify kvm_arch_flush_remote_tlbs_memslot
> KVM: MIPS: rework flush_shadow_* callbacks into one that prepares the flush
> KVM: MIPS: let generic code call prepare_flush_shadow
> KVM: MIPS: defer flush to generic MMU notifier code
> KVM: selftests: Always run vCPU thread with blocked SIG_IPI
> KVM: x86: document behavior of measurement ioctls with len==0
> Merge branch 'kvm-sev-cgroup' into HEAD
> Merge tag 'kvmarm-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
> KVM: documentation: fix sphinx warnings
> KVM: SEV: Mask CPUID[0x8000001F].eax according to supported features
>
> Peter Xu (1):
> KVM: selftests: Sync data verify of dirty logging with guest sync
>
> Pierre Morel (1):
> KVM: s390: diag9c (directed yield) forwarding
>
> Quentin Perret (35):
> KVM: arm64: Initialize kvm_nvhe_init_params early
> KVM: arm64: Avoid free_page() in page-table allocator
> KVM: arm64: Factor memory allocation out of pgtable.c
> KVM: arm64: Introduce a BSS section for use at Hyp
> KVM: arm64: Make kvm_call_hyp() a function call at Hyp
> KVM: arm64: Allow using kvm_nvhe_sym() in hyp code
> KVM: arm64: Introduce an early Hyp page allocator
> KVM: arm64: Stub CONFIG_DEBUG_LIST at Hyp
> KVM: arm64: Introduce a Hyp buddy page allocator
> KVM: arm64: Enable access to sanitized CPU features at EL2
> KVM: arm64: Provide __flush_dcache_area at EL2
> KVM: arm64: Factor out vector address calculation
> arm64: asm: Provide set_sctlr_el2 macro
> KVM: arm64: Prepare the creation of s1 mappings at EL2
> KVM: arm64: Elevate hypervisor mappings creation at EL2
> KVM: arm64: Use kvm_arch for stage 2 pgtable
> KVM: arm64: Use kvm_arch in kvm_s2_mmu
> KVM: arm64: Set host stage 2 using kvm_nvhe_init_params
> KVM: arm64: Refactor kvm_arm_setup_stage2()
> KVM: arm64: Refactor __load_guest_stage2()
> KVM: arm64: Refactor __populate_fault_info()
> KVM: arm64: Make memcache anonymous in pgtable allocator
> KVM: arm64: Reserve memory for host stage 2
> KVM: arm64: Sort the hypervisor memblocks
> KVM: arm64: Always zero invalid PTEs
> KVM: arm64: Use page-table to track page ownership
> KVM: arm64: Refactor the *_map_set_prot_attr() helpers
> KVM: arm64: Add kvm_pgtable_stage2_find_range()
> KVM: arm64: Introduce KVM_PGTABLE_S2_NOFWB stage 2 flag
> KVM: arm64: Introduce KVM_PGTABLE_S2_IDMAP stage 2 flag
> KVM: arm64: Provide sanitized mmfr* registers at EL2
> KVM: arm64: Wrap the host with a stage 2
> KVM: arm64: Page-align the .hyp sections
> KVM: arm64: Disable PMU support in protected mode
> KVM: arm64: Protect the .hyp sections from the host
>
> Ricardo Koller (1):
> KVM: x86: Move reverse CPUID helpers to separate header file
>
> Sean Christopherson (147):
> KVM: x86/mmu: Alloc page for PDPTEs when shadowing 32-bit NPT with 64-bit
> KVM: x86/mmu: Capture 'mmu' in a local variable when allocating roots
> KVM: x86/mmu: Allocate the lm_root before allocating PAE roots
> KVM: x86/mmu: Allocate pae_root and lm_root pages in dedicated helper
> KVM: x86/mmu: Ensure MMU pages are available when allocating roots
> KVM: x86/mmu: Check PDPTRs before allocating PAE roots
> KVM: x86/mmu: Fix and unconditionally enable WARNs to detect PAE leaks
> KVM: x86/mmu: Set the C-bit in the PDPTRs and LM pseudo-PDPTRs
> KVM: nVMX: Defer the MMU reload to the normal path on an EPTP switch
> KVM: x86: Defer the MMU unload to the normal path on an global INVPCID
> KVM: x86/mmu: Unexport MMU load/unload functions
> KVM: x86/mmu: Sync roots after MMU load iff load as successful
> KVM: x86/mmu: WARN on NULL pae_root or lm_root, or bad shadow root level
> KVM: SVM: Don't strip the C-bit from CR2 on #PF interception
> KVM: nSVM: Set the shadow root level to the TDP level for nested NPT
> KVM: x86: Move nVMX's consistency check macro to common code
> KVM: nSVM: Trace VM-Enter consistency check failures
> KVM: x86: Handle triple fault in L2 without killing L1
> KVM: nSVM: Add helper to synthesize nested VM-Exit without collateral
> KVM: nSVM: Add VMLOAD/VMSAVE helper to deduplicate code
> KVM: x86: Move XSETBV emulation to common code
> KVM: x86: Move trivial instruction-based exit handlers to common code
> KVM: x86: Move RDPMC emulation to common code
> KVM: SVM: Don't manually emulate RDPMC if nrips=0
> KVM: SVM: Skip intercepted PAUSE instructions after emulation
> KVM: x86/mmu: Remove spurious TLB flush from TDP MMU's change_pte() hook
> KVM: x86/mmu: WARN if TDP MMU's set_tdp_spte() sees multiple GFNs
> KVM: x86/mmu: Use 'end' param in TDP MMU's test_age_gfn()
> KVM: x86/mmu: Add typedefs for rmap/iter handlers
> KVM: x86/mmu: Add convenience wrapper for acting on single hva in TDP MMU
> KVM: x86/mmu: Check for shadow-present SPTE before querying A/D status
> KVM: x86/mmu: Bail from fast_page_fault() if SPTE is not shadow-present
> KVM: x86/mmu: Disable MMIO caching if MMIO value collides with L1TF
> KVM: x86/mmu: Retry page faults that hit an invalid memslot
> KVM: x86/mmu: Don't install bogus MMIO SPTEs if MMIO caching is disabled
> KVM: x86/mmu: Handle MMIO SPTEs directly in mmu_set_spte()
> KVM: x86/mmu: Drop redundant trace_kvm_mmu_set_spte() in the TDP MMU
> KVM: x86/mmu: Rename 'mask' to 'spte' in MMIO SPTE helpers
> KVM: x86/mmu: Stop using software available bits to denote MMIO SPTEs
> KVM: x86/mmu: Add module param to disable MMIO caching (for testing)
> KVM: x86/mmu: Rename and document A/D scheme for TDP SPTEs
> KVM: x86/mmu: Use MMIO SPTE bits 53 and 52 for the MMIO generation
> KVM: x86/mmu: Document dependency bewteen TDP A/D type and saved bits
> KVM: x86/mmu: Move initial kvm_mmu_set_mask_ptes() call into MMU proper
> KVM: x86/mmu: Co-locate code for setting various SPTE masks
> KVM: x86/mmu: Move logic for setting SPTE masks for EPT into the MMU proper
> KVM: x86/mmu: Make Host-writable and MMU-writable bit locations dynamic
> KVM: x86/mmu: Use high bits for host/mmu writable masks for EPT SPTEs
> KVM: x86/mmu: Use a dedicated bit to track shadow/MMU-present SPTEs
> KVM: x86/mmu: Tweak auditing WARN for A/D bits to !PRESENT (was MMIO)
> KVM: x86/mmu: Use is_removed_spte() instead of open coded equivalents
> KVM: x86/mmu: Use low available bits for removed SPTEs
> KVM: x86/mmu: Dump reserved bits if they're detected on non-MMIO SPTE
> KVM: x86: Get active PCID only when writing a CR3 value
> KVM: VMX: Track common EPTP for Hyper-V's paravirt TLB flush
> KVM: VMX: Stash kvm_vmx in a local variable for Hyper-V paravirt TLB flush
> KVM: VMX: Fold Hyper-V EPTP checking into it's only caller
> KVM: VMX: Do Hyper-V TLB flush iff vCPU's EPTP hasn't been flushed
> KVM: VMX: Invalidate hv_tlb_eptp to denote an EPTP mismatch
> KVM: VMX: Don't invalidate hv_tlb_eptp if the new EPTP matches
> KVM: VMX: Explicitly check for hv_remote_flush_tlb when loading pgd
> KVM: VMX: Define Hyper-V paravirt TLB flush fields iff Hyper-V is enabled
> KVM: VMX: Skip additional Hyper-V TLB EPTP flushes if one fails
> KVM: VMX: Track root HPA instead of EPTP for paravirt Hyper-V TLB flush
> KVM: x86/mmu: Use '0' as the one and only value for an invalid PAE root
> KVM: x86/mmu: Mark the PAE roots as decrypted for shadow paging
> KVM: x86/mmu: Coalesce TDP MMU TLB flushes when zapping collapsible SPTEs
> KVM: x86/mmu: Move flushing for "slot" handlers to caller for legacy MMU
> KVM: x86/mmu: Coalesce TLB flushes when zapping collapsible SPTEs
> KVM: x86/mmu: Coalesce TLB flushes across address spaces for gfn range zap
> KVM: x86/mmu: Pass address space ID to __kvm_tdp_mmu_zap_gfn_range()
> KVM: x86/mmu: Pass address space ID to TDP MMU root walkers
> KVM: x86/mmu: Use leaf-only loop for walking TDP SPTEs when changing SPTE
> KVM: Move prototypes for MMU notifier callbacks to generic code
> KVM: Move arm64's MMU notifier trace events to generic code
> KVM: x86/mmu: Drop trace_kvm_age_page() tracepoint
> KVM: x86/mmu: Remove spurious clearing of dirty bit from TDP MMU SPTE
> KVM: x86/mmu: Simplify code for aging SPTEs in TDP MMU
> KVM: SVM: Use online_vcpus, not created_vcpus, to iterate over vCPUs
> KVM: SVM: Do not set sev->es_active until KVM_SEV_ES_INIT completes
> KVM: SVM: Do not allow SEV/SEV-ES initialization after vCPUs are created
> KVM: x86: Account a variety of miscellaneous allocations
> KVM: Explicitly use GFP_KERNEL_ACCOUNT for 'struct kvm_vcpu' allocations
> KVM: Assert that notifier count is elevated in .change_pte()
> KVM: Move x86's MMU notifier memslot walkers to generic code
> KVM: arm64: Convert to the gfn-based MMU notifier callbacks
> KVM: MIPS/MMU: Convert to the gfn-based MMU notifier callbacks
> KVM: PPC: Convert to the gfn-based MMU notifier callbacks
> KVM: Kill off the old hva-based MMU notifier callbacks
> KVM: Move MMU notifier's mmu_lock acquisition into common helper
> KVM: Take mmu_lock when handling MMU notifier iff the hva hits a memslot
> KVM: x86/mmu: Allow yielding during MMU notifier unmap/zap, if possible
> KVM: SVM: Don't set current_vmcb->cpu when switching vmcb
> KVM: SVM: Drop vcpu_svm.vmcb_pa
> KVM: SVM: Add a comment to clarify what vcpu_svm.vmcb points at
> KVM: SVM: Enhance and clean up the vmcb tracking comment in pre_svm_run()
> KVM: Destroy I/O bus devices on unregister failure _after_ sync'ing SRCU
> KVM: Stop looking for coalesced MMIO zones if the bus is destroyed
> KVM: Add proper lockdep assertion in I/O bus unregister
> KVM: x86: Export kvm_mmu_gva_to_gpa_{read,write}() for SGX (VMX)
> KVM: x86: Define new #PF SGX error code bit
> KVM: x86: Add support for reverse CPUID lookup of scattered features
> KVM: x86: Add reverse-CPUID lookup support for scattered SGX features
> KVM: VMX: Add basic handling of VM-Exit from SGX enclave
> KVM: VMX: Frame in ENCLS handler for SGX virtualization
> KVM: VMX: Add SGX ENCLS[ECREATE] handler to enforce CPUID restrictions
> KVM: VMX: Add emulation of SGX Launch Control LE hash MSRs
> KVM: VMX: Add ENCLS[EINIT] handler to support SGX Launch Control (LC)
> KVM: VMX: Enable SGX virtualization for SGX1, SGX2 and LC
> KVM: x86: Add capability to grant VM access to privileged SGX attribute
> crypto: ccp: Free SEV device if SEV init fails
> crypto: ccp: Detect and reject "invalid" addresses destined for PSP
> crypto: ccp: Reject SEV commands with mismatching command buffer
> crypto: ccp: Play nice with vmalloc'd memory for SEV command structs
> crypto: ccp: Use the stack for small SEV command buffers
> crypto: ccp: Use the stack and common buffer for status commands
> crypto: ccp: Use the stack and common buffer for INIT command
> KVM: SVM: Allocate SEV command structures on local stack
> KVM: x86: Fix implicit enum conversion goof in scattered reverse CPUID code
> KVM: VMX: Invert the inlining of MSR interception helpers
> KVM: SVM: Inject #GP on guest MSR_TSC_AUX accesses if RDTSCP unsupported
> KVM: SVM: Clear MSR_TSC_AUX[63:32] on write
> KVM: SVM: Delay restoration of host MSR_TSC_AUX until return to userspace
> KVM: VMX: Intercept FS/GS_BASE MSR accesses for 32-bit KVM
> KVM: x86: Remove emulator's broken checks on CR0/CR3/CR4 loads
> KVM: x86: Check CR3 GPA for validity regardless of vCPU mode
> KVM: SVM: Truncate GPR value for DR and CR accesses in !64-bit mode
> KVM: VMX: Truncate GPR value for DR and CR reads in !64-bit mode
> KVM: nVMX: Truncate bits 63:32 of VMCS field on nested check in !64-bit
> KVM: nVMX: Truncate base/index GPR value on address calc in !64-bit
> KVM: x86/xen: Drop RAX[63:32] when processing hypercall
> KVM: SVM: Use default rAX size for INVLPGA emulation
> KVM: x86: Rename GPR accessors to make mode-aware variants the defaults
> x86/sev: Drop redundant and potentially misleading 'sev_enabled'
> KVM: SVM: Zero out the VMCB array used to track SEV ASID association
> KVM: SVM: Free sev_asid_bitmap during init if SEV setup fails
> KVM: SVM: Disable SEV/SEV-ES if NPT is disabled
> KVM: SVM: Move SEV module params/variables to sev.c
> KVM: SVM: Append "_enabled" to module-scoped SEV/SEV-ES control variables
> KVM: SVM: Condition sev_enabled and sev_es_enabled on CONFIG_KVM_AMD_SEV=y
> KVM: SVM: Enable SEV/SEV-ES functionality by default (when supported)
> KVM: SVM: Unconditionally invoke sev_hardware_teardown()
> KVM: SVM: Explicitly check max SEV ASID during sev_hardware_setup()
> KVM: SVM: Move SEV VMCB tracking allocation to sev.c
> KVM: SVM: Drop redundant svm_sev_enabled() helper
> KVM: SVM: Remove an unnecessary prototype declaration of sev_flush_asids()
> KVM: SVM: Skip SEV cache flush if no ASIDs have been used
>
> Shenming Lu (4):
> irqchip/gic-v3-its: Drop the setting of PTZ altogether
> KVM: arm64: GICv4.1: Add function to get VLPI state
> KVM: arm64: GICv4.1: Try to save VLPI state in save_pending_tables
> KVM: arm64: GICv4.1: Give a chance to save VLPI state
>
> Steve Rutherford (1):
> KVM: SVM: Add support for KVM_SEV_SEND_CANCEL command
>
> Suzuki K Poulose (15):
> perf: aux: Add flags for the buffer format
> perf: aux: Add CoreSight PMU buffer formats
> arm64: Add support for trace synchronization barrier
> KVM: arm64: Handle access to TRFCR_EL1
> KVM: arm64: Move SPE availability check to VCPU load
> arm64: KVM: Enable access to TRBE support for host
> coresight: etm4x: Move ETM to prohibited region for disable
> coresight: etm-perf: Allow an event to use different sinks
> coresight: Do not scan for graph if none is present
> coresight: etm4x: Add support for PE OS lock
> coresight: ete: Add support for ETE sysreg access
> coresight: ete: Add support for ETE tracing
> dts: bindings: Document device tree bindings for ETE
> coresight: etm-perf: Handle stale output handles
> dts: bindings: Document device tree bindings for Arm TRBE
>
> Thomas Gleixner (1):
> time: Add mechanism to recognize clocksource in time_get_snapshot
>
> Tom Lendacky (1):
> KVM: SVM: Make sure GHCB is mapped before updating
>
> Uros Bizjak (1):
> KVM/SVM: Move vmenter.S exception fixups out of line
>
> Vitaly Kuznetsov (3):
> KVM: x86/vPMU: Forbid reading from MSR_F15H_PERF MSRs when guest doesn't have X86_FEATURE_PERFCTR_CORE
> KVM: x86: Properly handle APF vs disabled LAPIC situation
> KVM: selftests: Speed up set_memory_region_test
>
> Wang Wensheng (1):
> KVM: arm64: Fix error return code in init_hyp_mode()
>
> Wanpeng Li (5):
> x86/kvm: Don't bother __pv_cpu_mask when !CONFIG_SMP
> KVM: X86: Count attempted/successful directed yield
> KVM: X86: Do not yield to self
> KVM: Boost vCPU candidate in user mode which is delivering interrupt
> KVM: X86: Fix failure to boost kernel lock holder candidate in SEV-ES guests
>
> Wei Yongjun (2):
> coresight: core: Make symbol 'csdev_sink' static
> coresight: trbe: Fix return value check in arm_trbe_register_coresight_cpu()
>
> Will Deacon (5):
> arm64: lib: Annotate {clear, copy}_page() as position-independent
> KVM: arm64: Link position-independent string routines into .hyp.text
> arm64: kvm: Add standalone ticket spinlock implementation for use at hyp
> arm/arm64: Probe for the presence of KVM hypervisor
> KVM: arm64: Advertise KVM UID to guests via SMCCC
>
> Xiaofei Tan (1):
> arm64: sve: Provide sve_cond_update_zcr_vq fallback when !ARM64_SVE
>
> Xu Jia (1):
> KVM: arm64: Make symbol '_kvm_host_prot_finalize' static
>
> Yanan Wang (8):
> tools/headers: sync headers of asm-generic/hugetlb_encode.h
> KVM: selftests: Print the errno besides error-string in TEST_ASSERT
> KVM: selftests: Make a generic helper to get vm guest mode strings
> KVM: selftests: Add a helper to get system configured THP page size
> KVM: selftests: Add a helper to get system default hugetlb page size
> KVM: selftests: List all hugetlb src types specified with page sizes
> KVM: selftests: Adapt vm_userspace_mem_region_add to new helpers
> KVM: selftests: Add a test for kvm page table code
>
> Yang Yingliang (1):
> KVM: selftests: remove redundant semi-colon
>
> Zenghui Yu (2):
> KVM: arm64: GICv4.1: Restore VLPI pending state to physical side
> KVM: arm64: Fix Function ID typo for PTP_KVM service
>
> Zhenzhong Duan (1):
> selftests: kvm: Fix the check of return value
>
> .../ABI/testing/sysfs-bus-coresight-devices-trbe | 14 +
> Documentation/devicetree/bindings/arm/ete.yaml | 75 ++
> Documentation/devicetree/bindings/arm/trbe.yaml | 49 +
> Documentation/trace/coresight/coresight-trbe.rst | 38 +
> Documentation/virt/kvm/amd-memory-encryption.rst | 143 +++
> Documentation/virt/kvm/api.rst | 214 +++-
> Documentation/virt/kvm/arm/index.rst | 1 +
> Documentation/virt/kvm/arm/ptp_kvm.rst | 25 +
> Documentation/virt/kvm/devices/arm-vgic-its.rst | 2 +-
> Documentation/virt/kvm/devices/arm-vgic-v3.rst | 2 +-
> Documentation/virt/kvm/locking.rst | 49 +-
> Documentation/virt/kvm/s390-diag.rst | 33 +
> MAINTAINERS | 6 +-
> arch/arm/include/asm/hypervisor.h | 3 +
> arch/arm64/include/asm/assembler.h | 27 +-
> arch/arm64/include/asm/barrier.h | 1 +
> arch/arm64/include/asm/el2_setup.h | 13 +
> arch/arm64/include/asm/fpsimd.h | 11 +
> arch/arm64/include/asm/fpsimdmacros.h | 10 +-
> arch/arm64/include/asm/hyp_image.h | 7 +
> arch/arm64/include/asm/hypervisor.h | 3 +
> arch/arm64/include/asm/kvm_arm.h | 2 +
> arch/arm64/include/asm/kvm_asm.h | 9 +
> arch/arm64/include/asm/kvm_host.h | 55 +-
> arch/arm64/include/asm/kvm_hyp.h | 14 +-
> arch/arm64/include/asm/kvm_mmu.h | 25 +-
> arch/arm64/include/asm/kvm_pgtable.h | 164 ++-
> arch/arm64/include/asm/pgtable-prot.h | 4 +-
> arch/arm64/include/asm/sections.h | 1 +
> arch/arm64/include/asm/sysreg.h | 59 +-
> arch/arm64/kernel/asm-offsets.c | 3 +
> arch/arm64/kernel/cpu-reset.S | 5 +-
> arch/arm64/kernel/hyp-stub.S | 3 +-
> arch/arm64/kernel/image-vars.h | 34 +-
> arch/arm64/kernel/vmlinux.lds.S | 74 +-
> arch/arm64/kvm/arm.c | 220 +++-
> arch/arm64/kvm/debug.c | 118 +-
> arch/arm64/kvm/fpsimd.c | 26 +-
> arch/arm64/kvm/guest.c | 11 +-
> arch/arm64/kvm/handle_exit.c | 45 +
> arch/arm64/kvm/hyp/Makefile | 2 +-
> arch/arm64/kvm/hyp/fpsimd.S | 10 +
> arch/arm64/kvm/hyp/include/hyp/switch.h | 107 +-
> arch/arm64/kvm/hyp/include/nvhe/early_alloc.h | 14 +
> arch/arm64/kvm/hyp/include/nvhe/gfp.h | 68 ++
> arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 36 +
> arch/arm64/kvm/hyp/include/nvhe/memory.h | 51 +
> arch/arm64/kvm/hyp/include/nvhe/mm.h | 96 ++
> arch/arm64/kvm/hyp/include/nvhe/spinlock.h | 92 ++
> arch/arm64/kvm/hyp/nvhe/Makefile | 9 +-
> arch/arm64/kvm/hyp/nvhe/cache.S | 13 +
> arch/arm64/kvm/hyp/nvhe/debug-sr.c | 56 +-
> arch/arm64/kvm/hyp/nvhe/early_alloc.c | 54 +
> arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 18 +
> arch/arm64/kvm/hyp/nvhe/host.S | 18 +-
> arch/arm64/kvm/hyp/nvhe/hyp-init.S | 54 +-
> arch/arm64/kvm/hyp/nvhe/hyp-main.c | 75 +-
> arch/arm64/kvm/hyp/nvhe/hyp-smp.c | 6 +-
> arch/arm64/kvm/hyp/nvhe/hyp.lds.S | 1 +
> arch/arm64/kvm/hyp/nvhe/mem_protect.c | 279 +++++
> arch/arm64/kvm/hyp/nvhe/mm.c | 173 +++
> arch/arm64/kvm/hyp/nvhe/page_alloc.c | 195 ++++
> arch/arm64/kvm/hyp/nvhe/psci-relay.c | 4 +-
> arch/arm64/kvm/hyp/nvhe/setup.c | 214 ++++
> arch/arm64/kvm/hyp/nvhe/stub.c | 22 +
> arch/arm64/kvm/hyp/nvhe/switch.c | 26 +-
> arch/arm64/kvm/hyp/nvhe/tlb.c | 4 +-
> arch/arm64/kvm/hyp/pgtable.c | 410 +++++--
> arch/arm64/kvm/hyp/reserved_mem.c | 113 ++
> arch/arm64/kvm/hyp/vhe/switch.c | 4 +-
> arch/arm64/kvm/hypercalls.c | 80 +-
> arch/arm64/kvm/mmu.c | 254 +++--
> arch/arm64/kvm/perf.c | 7 +-
> arch/arm64/kvm/pmu-emul.c | 2 +-
> arch/arm64/kvm/pmu.c | 8 +-
> arch/arm64/kvm/reset.c | 51 +-
> arch/arm64/kvm/sys_regs.c | 16 +
> arch/arm64/kvm/trace_arm.h | 66 --
> arch/arm64/kvm/va_layout.c | 7 +
> arch/arm64/kvm/vgic/vgic-init.c | 12 +-
> arch/arm64/kvm/vgic/vgic-its.c | 6 +-
> arch/arm64/kvm/vgic/vgic-kvm-device.c | 7 +-
> arch/arm64/kvm/vgic/vgic-mmio-v3.c | 81 +-
> arch/arm64/kvm/vgic/vgic-mmio.c | 10 +-
> arch/arm64/kvm/vgic/vgic-v3.c | 66 +-
> arch/arm64/kvm/vgic/vgic-v4.c | 38 +
> arch/arm64/kvm/vgic/vgic.h | 2 +
> arch/arm64/lib/clear_page.S | 4 +-
> arch/arm64/lib/copy_page.S | 4 +-
> arch/arm64/mm/init.c | 3 +
> arch/mips/include/asm/kvm_host.h | 17 +-
> arch/mips/kvm/mips.c | 21 +-
> arch/mips/kvm/mmu.c | 100 +-
> arch/mips/kvm/trap_emul.c | 13 +-
> arch/mips/kvm/vz.c | 19 +-
> arch/powerpc/include/asm/kvm_book3s.h | 12 +-
> arch/powerpc/include/asm/kvm_host.h | 7 -
> arch/powerpc/include/asm/kvm_ppc.h | 9 +-
> arch/powerpc/kvm/book3s.c | 18 +-
> arch/powerpc/kvm/book3s.h | 10 +-
> arch/powerpc/kvm/book3s_64_mmu_hv.c | 98 +-
> arch/powerpc/kvm/book3s_64_mmu_radix.c | 25 +-
> arch/powerpc/kvm/book3s_hv.c | 12 +-
> arch/powerpc/kvm/book3s_pr.c | 56 +-
> arch/powerpc/kvm/e500_mmu_host.c | 29 +-
> arch/powerpc/kvm/trace_booke.h | 15 -
> arch/s390/include/asm/kvm_host.h | 5 +
> arch/s390/include/asm/smp.h | 1 +
> arch/s390/kernel/smp.c | 1 +
> arch/s390/kvm/diag.c | 31 +-
> arch/s390/kvm/gaccess.c | 30 +-
> arch/s390/kvm/gaccess.h | 60 +-
> arch/s390/kvm/kvm-s390.c | 15 +-
> arch/s390/kvm/kvm-s390.h | 8 +
> arch/s390/kvm/vsie.c | 109 +-
> arch/sh/kernel/perf_event.c | 18 -
> arch/x86/include/asm/cpufeatures.h | 1 +
> arch/x86/include/asm/kvm_host.h | 67 +-
> arch/x86/include/asm/mem_encrypt.h | 1 -
> arch/x86/include/asm/svm.h | 4 +-
> arch/x86/include/asm/vmx.h | 1 +
> arch/x86/include/uapi/asm/vmx.h | 1 +
> arch/x86/kernel/kvm.c | 118 +-
> arch/x86/kvm/Makefile | 2 +
> arch/x86/kvm/cpuid.c | 98 +-
> arch/x86/kvm/cpuid.h | 155 +--
> arch/x86/kvm/emulate.c | 80 +-
> arch/x86/kvm/kvm_cache_regs.h | 19 +-
> arch/x86/kvm/lapic.c | 8 +-
> arch/x86/kvm/mmu.h | 23 +-
> arch/x86/kvm/mmu/mmu.c | 637 ++++++-----
> arch/x86/kvm/mmu/mmu_audit.c | 2 +-
> arch/x86/kvm/mmu/mmu_internal.h | 44 +-
> arch/x86/kvm/mmu/paging_tmpl.h | 3 +-
> arch/x86/kvm/mmu/spte.c | 159 ++-
> arch/x86/kvm/mmu/spte.h | 141 ++-
> arch/x86/kvm/mmu/tdp_mmu.c | 740 +++++++------
> arch/x86/kvm/mmu/tdp_mmu.h | 51 +-
> arch/x86/kvm/reverse_cpuid.h | 186 ++++
> arch/x86/kvm/svm/avic.c | 24 +-
> arch/x86/kvm/svm/nested.c | 573 ++++++----
> arch/x86/kvm/svm/sev.c | 922 ++++++++++++----
> arch/x86/kvm/svm/svm.c | 1107 +++++++++----------
> arch/x86/kvm/svm/svm.h | 91 +-
> arch/x86/kvm/svm/vmenter.S | 47 +-
> arch/x86/kvm/vmx/nested.c | 83 +-
> arch/x86/kvm/vmx/nested.h | 5 +
> arch/x86/kvm/vmx/sgx.c | 502 +++++++++
> arch/x86/kvm/vmx/sgx.h | 34 +
> arch/x86/kvm/vmx/vmcs12.c | 1 +
> arch/x86/kvm/vmx/vmcs12.h | 4 +-
> arch/x86/kvm/vmx/vmx.c | 432 ++++----
> arch/x86/kvm/vmx/vmx.h | 39 +-
> arch/x86/kvm/vmx/vmx_ops.h | 4 +
> arch/x86/kvm/x86.c | 214 +++-
> arch/x86/kvm/x86.h | 18 +-
> arch/x86/mm/mem_encrypt.c | 10 +-
> arch/x86/mm/mem_encrypt_identity.c | 1 -
> drivers/clocksource/arm_arch_timer.c | 36 +
> drivers/crypto/ccp/sev-dev.c | 193 ++--
> drivers/crypto/ccp/sev-dev.h | 4 +-
> drivers/firmware/psci/psci.c | 2 +
> drivers/firmware/smccc/Makefile | 2 +-
> drivers/firmware/smccc/kvm_guest.c | 50 +
> drivers/firmware/smccc/smccc.c | 1 +
> drivers/hwtracing/coresight/Kconfig | 24 +-
> drivers/hwtracing/coresight/Makefile | 1 +
> drivers/hwtracing/coresight/coresight-core.c | 29 +-
> drivers/hwtracing/coresight/coresight-etm-perf.c | 119 +-
> drivers/hwtracing/coresight/coresight-etm4x-core.c | 161 ++-
> .../hwtracing/coresight/coresight-etm4x-sysfs.c | 19 +-
> drivers/hwtracing/coresight/coresight-etm4x.h | 83 +-
> drivers/hwtracing/coresight/coresight-platform.c | 6 +
> drivers/hwtracing/coresight/coresight-priv.h | 3 +
> drivers/hwtracing/coresight/coresight-trbe.c | 1157 ++++++++++++++++++++
> drivers/hwtracing/coresight/coresight-trbe.h | 152 +++
> drivers/irqchip/irq-gic-v3-its.c | 18 +-
> drivers/perf/arm_pmu.c | 30 -
> drivers/ptp/Kconfig | 2 +-
> drivers/ptp/Makefile | 2 +
> drivers/ptp/ptp_kvm_arm.c | 28 +
> drivers/ptp/{ptp_kvm.c => ptp_kvm_common.c} | 85 +-
> drivers/ptp/ptp_kvm_x86.c | 97 ++
> include/kvm/arm_pmu.h | 4 +
> include/kvm/arm_vgic.h | 1 +
> include/linux/arm-smccc.h | 41 +
> include/linux/bug.h | 10 +
> include/linux/clocksource.h | 6 +
> include/linux/clocksource_ids.h | 12 +
> include/linux/coresight.h | 13 +
> include/linux/kvm_host.h | 24 +-
> include/linux/perf_event.h | 2 -
> include/linux/psp-sev.h | 18 +-
> include/linux/ptp_kvm.h | 19 +
> include/linux/timekeeping.h | 12 +-
> include/trace/events/kvm.h | 90 +-
> include/uapi/linux/kvm.h | 45 +
> include/uapi/linux/perf_event.h | 13 +-
> kernel/events/core.c | 5 -
> kernel/time/clocksource.c | 2 +
> kernel/time/timekeeping.c | 1 +
> lib/bug.c | 54 +-
> tools/include/asm-generic/hugetlb_encode.h | 3 +
> tools/testing/selftests/kvm/.gitignore | 2 +
> tools/testing/selftests/kvm/Makefile | 4 +
> tools/testing/selftests/kvm/aarch64/vgic_init.c | 551 ++++++++++
> tools/testing/selftests/kvm/dirty_log_test.c | 69 +-
> tools/testing/selftests/kvm/include/kvm_util.h | 13 +-
> tools/testing/selftests/kvm/include/test_util.h | 21 +-
> tools/testing/selftests/kvm/kvm_page_table_test.c | 506 +++++++++
> tools/testing/selftests/kvm/lib/assert.c | 4 +-
> tools/testing/selftests/kvm/lib/kvm_util.c | 138 ++-
> tools/testing/selftests/kvm/lib/test_util.c | 163 ++-
> .../testing/selftests/kvm/set_memory_region_test.c | 61 +-
> .../testing/selftests/kvm/x86_64/xen_shinfo_test.c | 2 +-
> virt/kvm/coalesced_mmio.c | 19 +-
> virt/kvm/kvm_main.c | 303 +++--
> 217 files changed, 12444 insertions(+), 4028 deletions(-)
>
>
> diff --combined arch/x86/kernel/kvm.c
> index 5d32fa477a62,bd01a6131edf..000000000000
> --- a/arch/x86/kernel/kvm.c
> +++ b/arch/x86/kernel/kvm.c
> @@@ -574,6 -574,49 +574,54 @@@ static void kvm_smp_send_call_func_ipi(
> }
> }
>
> -static void kvm_flush_tlb_others(const struct cpumask *cpumask,
> ++static void kvm_flush_tlb_multi(const struct cpumask *cpumask,
> + const struct flush_tlb_info *info)
> + {
> + u8 state;
> + int cpu;
> + struct kvm_steal_time *src;
> + struct cpumask *flushmask = this_cpu_cpumask_var_ptr(__pv_cpu_mask);
> +
> + cpumask_copy(flushmask, cpumask);
> + /*
> + * We have to call flush only on online vCPUs. And
> + * queue flush_on_enter for pre-empted vCPUs
> + */
> + for_each_cpu(cpu, flushmask) {
> ++ /*
> ++ * The local vCPU is never preempted, so we do not explicitly
> ++ * skip check for local vCPU - it will never be cleared from
> ++ * flushmask.
> ++ */
> + src = &per_cpu(steal_time, cpu);
> + state = READ_ONCE(src->preempted);
> + if ((state & KVM_VCPU_PREEMPTED)) {
> + if (try_cmpxchg(&src->preempted, &state,
> + state | KVM_VCPU_FLUSH_TLB))
> + __cpumask_clear_cpu(cpu, flushmask);
> + }
> + }
> +
> - native_flush_tlb_others(flushmask, info);
> ++ native_flush_tlb_multi(flushmask, info);
> + }
> +
> + static __init int kvm_alloc_cpumask(void)
> + {
> + int cpu;
> +
> + if (!kvm_para_available() || nopv)
> + return 0;
> +
> + if (pv_tlb_flush_supported() || pv_ipi_supported())
> + for_each_possible_cpu(cpu) {
> + zalloc_cpumask_var_node(per_cpu_ptr(&__pv_cpu_mask, cpu),
> + GFP_KERNEL, cpu_to_node(cpu));
> + }
> +
> + return 0;
> + }
> + arch_initcall(kvm_alloc_cpumask);
> +
> static void __init kvm_smp_prepare_boot_cpu(void)
> {
> /*
> @@@ -611,38 -654,8 +659,8 @@@ static int kvm_cpu_down_prepare(unsigne
> local_irq_enable();
> return 0;
> }
> - #endif
> -
> - static void kvm_flush_tlb_multi(const struct cpumask *cpumask,
> - const struct flush_tlb_info *info)
> - {
> - u8 state;
> - int cpu;
> - struct kvm_steal_time *src;
> - struct cpumask *flushmask = this_cpu_cpumask_var_ptr(__pv_cpu_mask);
> -
> - cpumask_copy(flushmask, cpumask);
> - /*
> - * We have to call flush only on online vCPUs. And
> - * queue flush_on_enter for pre-empted vCPUs
> - */
> - for_each_cpu(cpu, flushmask) {
> - /*
> - * The local vCPU is never preempted, so we do not explicitly
> - * skip check for local vCPU - it will never be cleared from
> - * flushmask.
> - */
> - src = &per_cpu(steal_time, cpu);
> - state = READ_ONCE(src->preempted);
> - if ((state & KVM_VCPU_PREEMPTED)) {
> - if (try_cmpxchg(&src->preempted, &state,
> - state | KVM_VCPU_FLUSH_TLB))
> - __cpumask_clear_cpu(cpu, flushmask);
> - }
> - }
>
> - native_flush_tlb_multi(flushmask, info);
> - }
> + #endif
>
> static void __init kvm_guest_init(void)
> {
> @@@ -655,15 -668,9 +673,9 @@@
>
> if (kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)) {
> has_steal_clock = 1;
> - pv_ops.time.steal_clock = kvm_steal_clock;
> + static_call_update(pv_steal_clock, kvm_steal_clock);
> }
>
> - if (pv_tlb_flush_supported()) {
> - pv_ops.mmu.flush_tlb_multi = kvm_flush_tlb_multi;
> - pv_ops.mmu.tlb_remove_table = tlb_remove_table;
> - pr_info("KVM setup pv remote TLB flush\n");
> - }
> -
> if (kvm_para_has_feature(KVM_FEATURE_PV_EOI))
> apic_set_eoi_write(kvm_guest_apic_eoi_write);
>
> @@@ -673,6 -680,12 +685,12 @@@
> }
>
> #ifdef CONFIG_SMP
> + if (pv_tlb_flush_supported()) {
> - pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others;
> ++ pv_ops.mmu.flush_tlb_multi = kvm_flush_tlb_multi;
> + pv_ops.mmu.tlb_remove_table = tlb_remove_table;
> + pr_info("KVM setup pv remote TLB flush\n");
> + }
> +
> smp_ops.smp_prepare_boot_cpu = kvm_smp_prepare_boot_cpu;
> if (pv_sched_yield_supported()) {
> smp_ops.send_call_func_ipi = kvm_smp_send_call_func_ipi;
>

\
 
 \ /
  Last update: 2021-05-01 10:00    [W:1.115 / U:0.800 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site