Message ID | 20210826115649.2641468-1-maz@kernel.org |
---|---|
State | New |
Headers | show |
Series | [GIT,PULL] KVM/arm64 updates for 5.15 | expand |
On 26/08/21 13:56, Marc Zyngier wrote: > Hi Paolo, > > Here's the KVM/arm64 pull request for 5.15. This round is all over the > map, with plenty of updates around the MM subsystem (page tables, page > ownership, small fixes), PMU (reset state, perf improvements), PSCI, > the move to the generic entry code, and a lot of cleanups all over the > shop, probably owing to having a few more eyes looking at the code. > > A few things to note: > > - the kvmarm-fixes-5.14-2 tag was brought in to allow the merge of > some patches > > - the arm64/for-next/sysreg was merged to resolve couple of conflicts > > Please pull, > > M. > > The following changes since commit c500bee1c5b2f1d59b1081ac879d73268ab0ff17: > > Linux 5.14-rc4 (2021-08-01 17:04:17 -0700) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.15 > > for you to fetch changes up to 419025b3b4190ee867ef4fc48fb3bd7da2e67a0c: > > Merge branch kvm-arm64/misc-5.15 into kvmarm-master/next (2021-08-26 11:36:12 +0100) > > ---------------------------------------------------------------- > KVM/arm64 updates for 5.15 > > - Page ownership tracking between host EL1 and EL2 > > - Rely on userspace page tables to create large stage-2 mappings > > - Fix incompatibility between pKVM and kmemleak > > - Fix the PMU reset state, and improve the performance of the virtual PMU > > - Move over to the generic KVM entry code > > - Address PSCI reset issues w.r.t. save/restore > > - Preliminary rework for the upcoming pKVM fixed feature > > - A bunch of MM cleanups > > - a vGIC fix for timer spurious interrupts > > - Various cleanups > > ---------------------------------------------------------------- > Alexandre Chartre (1): > KVM: arm64: Disabling disabled PMU counters wastes a lot of time > > Anshuman Khandual (9): > arm64/kexec: Test page size support with new TGRAN range values > KVM: arm64: perf: Replace '0xf' instances with ID_AA64DFR0_PMUVER_IMP_DEF > arm64/mm: Define ID_AA64MMFR0_TGRAN_2_SHIFT > KVM: arm64: Restrict IPA size to maximum 48 bits on 4K and 16K page size > arm64/mm: Add remaining ID_AA64MMFR0_PARANGE_ macros > KVM: arm64: Use ARM64_MIN_PARANGE_BITS as the minimum supported IPA > KVM: arm64: Drop init_common_resources() > KVM: arm64: Drop check_kvm_target_cpu() based percpu probe > KVM: arm64: Drop unused REQUIRES_VIRT > > David Brazdil (2): > KVM: arm64: Fix off-by-one in range_is_memory > KVM: arm64: Minor optimization of range_is_memory > > Fuad Tabba (10): > KVM: arm64: placeholder to check if VM is protected > KVM: arm64: Remove trailing whitespace in comment > KVM: arm64: MDCR_EL2 is a 64-bit register > KVM: arm64: Fix names of config register fields > KVM: arm64: Refactor sys_regs.h,c for nVHE reuse > KVM: arm64: Restore mdcr_el2 from vcpu > KVM: arm64: Keep mdcr_el2's value as set by __init_el2_debug > KVM: arm64: Track value of cptr_el2 in struct kvm_vcpu_arch > KVM: arm64: Add feature register flag definitions > KVM: arm64: Add config register bit definitions > > Jason Wang (1): > KVM: arm64: Fix comments related to GICv2 PMR reporting > > Marc Zyngier (28): > KVM: arm64: Walk userspace page tables to compute the THP mapping size > KVM: arm64: Avoid mapping size adjustment on permission fault > KVM: Remove kvm_is_transparent_hugepage() and PageTransCompoundMap() > KVM: arm64: Use get_page() instead of kvm_get_pfn() > KVM: arm64: Introduce helper to retrieve a PTE and its level > KVM: Get rid of kvm_get_pfn() > KVM: arm64: Narrow PMU sysreg reset values to architectural requirements > KVM: arm64: Drop unnecessary masking of PMU registers > KVM: arm64: Remove PMSWINC_EL0 shadow register > arm64: Move .hyp.rodata outside of the _sdata.._edata range > KVM: arm64: Unregister HYP sections from kmemleak in protected mode > KVM: arm64: vgic: Resample HW pending state on deactivation > KVM: arm64: Move kern_hyp_va() usage in __load_guest_stage2() into the callers > KVM: arm64: Unify stage-2 programming behind __load_stage2() > KVM: arm64: Upgrade VMID accesses to {READ,WRITE}_ONCE > KVM: arm64: Upgrade trace_kvm_arm_set_dreg32() to 64bit > Merge branch arm64/for-next/sysreg into kvm-arm64/misc-5.15 > Merge tag 'kvmarm-fixes-5.14-2' into kvm-arm64/mmu/el2-tracking > Merge branch kvm-arm64/pmu/reset-values into kvmarm-master/next > Merge branch kvm-arm64/mmu/mapping-levels into kvmarm-master/next > Merge branch kvm-arm64/misc-5.15 into kvmarm-master/next > Merge branch kvm-arm64/mmu/kmemleak-pkvm into kvmarm-master/next > Merge branch kvm-arm64/mmu/el2-tracking into kvmarm-master/next > Merge branch kvm-arm64/psci/cpu_on into kvmarm-master/next > Merge branch kvm-arm64/generic-entry into kvmarm-master/next > Merge branch kvm-arm64/mmu/vmid-cleanups into kvmarm-master/next > Merge branch kvm-arm64/pkvm-fixed-features-prologue into kvmarm-master/next > Merge branch kvm-arm64/misc-5.15 into kvmarm-master/next > > Oliver Upton (7): > KVM: arm64: Fix read-side race on updates to vcpu reset state > KVM: arm64: Handle PSCI resets before userspace touches vCPU state > KVM: arm64: Enforce reserved bits for PSCI target affinities > selftests: KVM: Introduce psci_cpu_on_test > KVM: arm64: Record number of signal exits as a vCPU stat > entry: KVM: Allow use of generic KVM entry w/o full generic support > KVM: arm64: Use generic KVM xfer to guest work function > > Paolo Bonzini (1): > KVM: arm64: Count VMID-wide TLB invalidations > > Quentin Perret (20): > KVM: arm64: Introduce hyp_assert_lock_held() > KVM: arm64: Provide the host_stage2_try() helper macro > KVM: arm64: Expose page-table helpers > KVM: arm64: Optimize host memory aborts > KVM: arm64: Rename KVM_PTE_LEAF_ATTR_S2_IGNORED > KVM: arm64: Don't overwrite software bits with owner id > KVM: arm64: Tolerate re-creating hyp mappings to set software bits > KVM: arm64: Enable forcing page-level stage-2 mappings > KVM: arm64: Allow populating software bits > KVM: arm64: Add helpers to tag shared pages in SW bits > KVM: arm64: Expose host stage-2 manipulation helpers > KVM: arm64: Expose pkvm_hyp_id > KVM: arm64: Introduce addr_is_memory() > KVM: arm64: Enable retrieving protections attributes of PTEs > KVM: arm64: Mark host bss and rodata section as shared > KVM: arm64: Remove __pkvm_mark_hyp > KVM: arm64: Refactor protected nVHE stage-1 locking > KVM: arm64: Restrict EL2 stage-1 changes in protected mode > KVM: arm64: Make __pkvm_create_mappings static > KVM: arm64: Return -EPERM from __pkvm_host_share_hyp() > > Raghavendra Rao Ananta (1): > KVM: arm64: Trim guest debug exception handling > > Ricardo Koller (1): > KVM: arm64: vgic: Drop WARN from vgic_get_irq > > Steven Price (1): > KVM: arm64: Fix race when enabling KVM_ARM_CAP_MTE > > Will Deacon (2): > KVM: arm64: Add hyp_spin_is_locked() for basic locking assertions at EL2 > KVM: arm64: Make hyp_panic() more robust when protected mode is enabled > > arch/arm64/include/asm/cpufeature.h | 27 ++- > arch/arm64/include/asm/kvm_arm.h | 54 +++-- > arch/arm64/include/asm/kvm_asm.h | 7 +- > arch/arm64/include/asm/kvm_host.h | 17 +- > arch/arm64/include/asm/kvm_hyp.h | 2 +- > arch/arm64/include/asm/kvm_mmu.h | 17 +- > arch/arm64/include/asm/kvm_pgtable.h | 168 ++++++++++---- > arch/arm64/include/asm/sysreg.h | 54 +++-- > arch/arm64/kernel/cpufeature.c | 8 +- > arch/arm64/kernel/vmlinux.lds.S | 4 +- > arch/arm64/kvm/Kconfig | 10 + > arch/arm64/kvm/arm.c | 173 ++++++--------- > arch/arm64/kvm/debug.c | 2 +- > arch/arm64/kvm/guest.c | 5 +- > arch/arm64/kvm/handle_exit.c | 43 ++-- > arch/arm64/kvm/hyp/include/hyp/switch.h | 6 +- > arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 35 ++- > arch/arm64/kvm/hyp/include/nvhe/mm.h | 3 +- > arch/arm64/kvm/hyp/include/nvhe/spinlock.h | 25 +++ > arch/arm64/kvm/hyp/nvhe/debug-sr.c | 2 +- > arch/arm64/kvm/hyp/nvhe/host.S | 21 +- > arch/arm64/kvm/hyp/nvhe/hyp-main.c | 20 +- > arch/arm64/kvm/hyp/nvhe/mem_protect.c | 244 ++++++++++++++++---- > arch/arm64/kvm/hyp/nvhe/mm.c | 22 +- > arch/arm64/kvm/hyp/nvhe/setup.c | 82 ++++++- > arch/arm64/kvm/hyp/nvhe/switch.c | 17 +- > arch/arm64/kvm/hyp/nvhe/tlb.c | 4 +- > arch/arm64/kvm/hyp/pgtable.c | 247 +++++++++++---------- > arch/arm64/kvm/hyp/vhe/debug-sr.c | 2 +- > arch/arm64/kvm/hyp/vhe/switch.c | 18 +- > arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 2 +- > arch/arm64/kvm/hyp/vhe/tlb.c | 4 +- > arch/arm64/kvm/mmu.c | 76 ++++++- > arch/arm64/kvm/perf.c | 2 +- > arch/arm64/kvm/pmu-emul.c | 14 +- > arch/arm64/kvm/psci.c | 15 +- > arch/arm64/kvm/reset.c | 43 ++-- > arch/arm64/kvm/sys_regs.c | 134 ++++++----- > arch/arm64/kvm/sys_regs.h | 31 +++ > arch/arm64/kvm/trace_handle_exit.h | 10 +- > arch/arm64/kvm/vgic/vgic-mmio-v2.c | 4 +- > arch/arm64/kvm/vgic/vgic-v2.c | 36 +-- > arch/arm64/kvm/vgic/vgic-v3.c | 36 +-- > arch/arm64/kvm/vgic/vgic.c | 39 +++- > arch/arm64/kvm/vgic/vgic.h | 2 + > include/linux/entry-kvm.h | 6 +- > include/linux/kvm_host.h | 1 - > include/linux/page-flags.h | 37 --- > tools/testing/selftests/kvm/.gitignore | 1 + > tools/testing/selftests/kvm/Makefile | 1 + > .../selftests/kvm/aarch64/psci_cpu_on_test.c | 121 ++++++++++ > .../selftests/kvm/include/aarch64/processor.h | 3 + > virt/kvm/kvm_main.c | 19 +- > 53 files changed, 1279 insertions(+), 697 deletions(-) > create mode 100644 tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c > I'm back and will get to this today or tomorrow. Paolo