Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 23 Oct 2020 18:17:56 +0000 (11:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 23 Oct 2020 18:17:56 +0000 (11:17 -0700)
Pull KVM updates from Paolo Bonzini:
 "For x86, there is a new alternative and (in the future) more scalable
  implementation of extended page tables that does not need a reverse
  map from guest physical addresses to host physical addresses.

  For now it is disabled by default because it is still lacking a few of
  the existing MMU's bells and whistles. However it is a very solid
  piece of work and it is already available for people to hammer on it.

  Other updates:

  ARM:
   - New page table code for both hypervisor and guest stage-2
   - Introduction of a new EL2-private host context
   - Allow EL2 to have its own private per-CPU variables
   - Support of PMU event filtering
   - Complete rework of the Spectre mitigation

  PPC:
   - Fix for running nested guests with in-kernel IRQ chip
   - Fix race condition causing occasional host hard lockup
   - Minor cleanups and bugfixes

  x86:
   - allow trapping unknown MSRs to userspace
   - allow userspace to force #GP on specific MSRs
   - INVPCID support on AMD
   - nested AMD cleanup, on demand allocation of nested SVM state
   - hide PV MSRs and hypercalls for features not enabled in CPUID
   - new test for MSR_IA32_TSC writes from host and guest
   - cleanups: MMU, CPUID, shared MSRs
   - LAPIC latency optimizations ad bugfixes"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (232 commits)
  kvm: x86/mmu: NX largepage recovery for TDP MMU
  kvm: x86/mmu: Don't clear write flooding count for direct roots
  kvm: x86/mmu: Support MMIO in the TDP MMU
  kvm: x86/mmu: Support write protection for nesting in tdp MMU
  kvm: x86/mmu: Support disabling dirty logging for the tdp MMU
  kvm: x86/mmu: Support dirty logging for the TDP MMU
  kvm: x86/mmu: Support changed pte notifier in tdp MMU
  kvm: x86/mmu: Add access tracking for tdp_mmu
  kvm: x86/mmu: Support invalidate range MMU notifier for TDP MMU
  kvm: x86/mmu: Allocate struct kvm_mmu_pages for all pages in TDP MMU
  kvm: x86/mmu: Add TDP MMU PF handler
  kvm: x86/mmu: Remove disallowed_hugepage_adjust shadow_walk_iterator arg
  kvm: x86/mmu: Support zapping SPTEs in the TDP MMU
  KVM: Cache as_id in kvm_memory_slot
  kvm: x86/mmu: Add functions to handle changed TDP SPTEs
  kvm: x86/mmu: Allocate and free TDP MMU roots
  kvm: x86/mmu: Init / Uninit the TDP MMU
  kvm: x86/mmu: Introduce tdp_iter
  KVM: mmu: extract spte.h and spte.c
  KVM: mmu: Separate updating a PTE from kvm_set_pte_rmapp
  ...

18 files changed:
1  2 
Documentation/virt/kvm/api.rst
Documentation/virt/kvm/cpuid.rst
arch/arm64/include/asm/pgtable-hwdef.h
arch/arm64/include/asm/pgtable-prot.h
arch/arm64/kernel/image-vars.h
arch/arm64/kernel/vmlinux.lds.S
arch/arm64/kvm/pmu-emul.c
arch/arm64/kvm/sys_regs.c
arch/powerpc/kvm/book3s_hv.c
arch/x86/include/uapi/asm/svm.h
arch/x86/kernel/kvm.c
arch/x86/kvm/hyperv.c
arch/x86/kvm/svm/sev.c
arch/x86/kvm/svm/svm.c
arch/x86/kvm/vmx/nested.c
arch/x86/kvm/vmx/vmx.c
arch/x86/mm/fault.c
include/kvm/arm_pmu.h

Simple merge
@@@ -38,64 -38,64 +38,64 @@@ returns:
  
  where ``flag`` is defined as below:
  
- ================================= =========== ================================
- flag                              value       meaning
- ================================= =========== ================================
- KVM_FEATURE_CLOCKSOURCE           0           kvmclock available at msrs
-                                               0x11 and 0x12
+ ================================== =========== ================================
+ flag                               value       meaning
+ ================================== =========== ================================
+ KVM_FEATURE_CLOCKSOURCE            0           kvmclock available at msrs
+                                                0x11 and 0x12
  
- KVM_FEATURE_NOP_IO_DELAY          1           not necessary to perform delays
-                                               on PIO operations
+ KVM_FEATURE_NOP_IO_DELAY           1           not necessary to perform delays
+                                                on PIO operations
  
- KVM_FEATURE_MMU_OP                2           deprecated
+ KVM_FEATURE_MMU_OP                 2           deprecated
  
- KVM_FEATURE_CLOCKSOURCE2          3           kvmclock available at msrs
-                                               0x4b564d00 and 0x4b564d01
+ KVM_FEATURE_CLOCKSOURCE2           3           kvmclock available at msrs
+                                                0x4b564d00 and 0x4b564d01
  
- KVM_FEATURE_ASYNC_PF              4           async pf can be enabled by
-                                               writing to msr 0x4b564d02
+ KVM_FEATURE_ASYNC_PF               4           async pf can be enabled by
+                                                writing to msr 0x4b564d02
  
- KVM_FEATURE_STEAL_TIME            5           steal time can be enabled by
-                                               writing to msr 0x4b564d03
+ KVM_FEATURE_STEAL_TIME             5           steal time can be enabled by
+                                                writing to msr 0x4b564d03
  
- KVM_FEATURE_PV_EOI                6           paravirtualized end of interrupt
-                                               handler can be enabled by
-                                               writing to msr 0x4b564d04
+ KVM_FEATURE_PV_EOI                 6           paravirtualized end of interrupt
+                                                handler can be enabled by
+                                                writing to msr 0x4b564d04
  
- KVM_FEATURE_PV_UNHAULT            7           guest checks this feature bit
-                                               before enabling paravirtualized
-                                               spinlock support
+ KVM_FEATURE_PV_UNHALT              7           guest checks this feature bit
+                                                before enabling paravirtualized
+                                                spinlock support
  
- KVM_FEATURE_PV_TLB_FLUSH          9           guest checks this feature bit
-                                               before enabling paravirtualized
-                                               tlb flush
+ KVM_FEATURE_PV_TLB_FLUSH           9           guest checks this feature bit
+                                                before enabling paravirtualized
+                                                tlb flush
  
- KVM_FEATURE_ASYNC_PF_VMEXIT       10          paravirtualized async PF VM EXIT
-                                               can be enabled by setting bit 2
-                                               when writing to msr 0x4b564d02
+ KVM_FEATURE_ASYNC_PF_VMEXIT        10          paravirtualized async PF VM EXIT
+                                                can be enabled by setting bit 2
+                                                when writing to msr 0x4b564d02
  
- KVM_FEATURE_PV_SEND_IPI           11          guest checks this feature bit
-                                               before enabling paravirtualized
-                                               sebd IPIs
+ KVM_FEATURE_PV_SEND_IPI            11          guest checks this feature bit
+                                                before enabling paravirtualized
+                                                send IPIs
  
- KVM_FEATURE_POLL_CONTROL          12          host-side polling on HLT can
-                                               be disabled by writing
-                                               to msr 0x4b564d05.
 -KVM_FEATURE_PV_POLL_CONTROL        12          host-side polling on HLT can
++KVM_FEATURE_POLL_CONTROL           12          host-side polling on HLT can
+                                                be disabled by writing
+                                                to msr 0x4b564d05.
  
- KVM_FEATURE_PV_SCHED_YIELD        13          guest checks this feature bit
-                                               before using paravirtualized
-                                               sched yield.
+ KVM_FEATURE_PV_SCHED_YIELD         13          guest checks this feature bit
+                                                before using paravirtualized
+                                                sched yield.
  
- KVM_FEATURE_ASYNC_PF_INT          14          guest checks this feature bit
-                                               before using the second async
-                                               pf control msr 0x4b564d06 and
-                                               async pf acknowledgment msr
-                                               0x4b564d07.
+ KVM_FEATURE_ASYNC_PF_INT           14          guest checks this feature bit
+                                                before using the second async
+                                                pf control msr 0x4b564d06 and
+                                                async pf acknowledgment msr
+                                                0x4b564d07.
  
- KVM_FEATURE_CLOCSOURCE_STABLE_BIT 24          host will warn if no guest-side
-                                               per-cpu warps are expeced in
-                                               kvmclock
- ================================= =========== ================================
+ KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24          host will warn if no guest-side
+                                                per-cpu warps are expected in
+                                                kvmclock
+ ================================== =========== ================================
  
  ::
  
@@@ -64,10 -56,8 +64,9 @@@ extern bool arm64_use_ng_mappings
  #define PROT_SECT_NORMAL_EXEC (PROT_SECT_DEFAULT | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))
  
  #define _PAGE_DEFAULT         (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))
- #define _HYP_PAGE_DEFAULT     _PAGE_DEFAULT
  
  #define PAGE_KERNEL           __pgprot(PROT_NORMAL)
 +#define PAGE_KERNEL_TAGGED    __pgprot(PROT_NORMAL_TAGGED)
  #define PAGE_KERNEL_RO                __pgprot((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY)
  #define PAGE_KERNEL_ROX               __pgprot((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY)
  #define PAGE_KERNEL_EXEC      __pgprot(PROT_NORMAL & ~PTE_PXN)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge