Re: [GIT PULL] KVM/arm64 updates for 5.15

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux