[GIT PULL] KVM/arm64 updates for 5.15
Marc Zyngier
maz at kernel.org
Thu Aug 26 04:56:49 PDT 2021
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
More information about the linux-arm-kernel
mailing list