mbox series

[GIT,PULL] KVM/arm64 updates for 5.13

Message ID 20210423113544.1726204-1-maz@kernel.org (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] KVM/arm64 updates for 5.13 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.13

Message

Marc Zyngier April 23, 2021, 11:35 a.m. UTC
Hi Paolo,

Here's the rather large pull request for 5.13. Changes are all over
the map, but the big ticket items are the S2 host isolation when
running in protected mode, the save/restore support for GICv4.1 and
guest SVE support in nVHE mode. Plenty of fixes too.

Note that this pull request drags a number of branches from other
trees in order to avoid conflicts and make people's life easier:

- the Coresight ETE/TRBE branch, as it is intertwined with the KVM
  tracing support

- the arm64 vhe-only branch that deals with broken CPUs such as the
  Apple M1

- the arm64 neon-softirqs-disabled that improves the support for
  FP processing

You will still get a couple of conflicts with the KVM tree, but these
are absolutely trivial to resolve.

Please pull,

	M.

The following changes since commit 1e28eed17697bcf343c6743f0028cc3b5dd88bf0:

  Linux 5.12-rc3 (2021-03-14 14:41:02 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.13

for you to fetch changes up to 9a8aae605b80fc0a830cdce747eed48e11acc067:

  Merge branch 'kvm-arm64/kill_oprofile_dependency' into kvmarm-master/next (2021-04-22 13:41:49 +0100)

----------------------------------------------------------------
KVM/arm64 updates for Linux 5.13

New features:

- 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
- Alexandru is now a reviewer (not really a new feature...)

Fixes:
- Proper emulation of the GICR_TYPER register
- Handle the complete set of relocation in the nVHE EL2 object
- Get rid of the oprofile dependency in the PMU code (and of the
  oprofile body parts at the same time)
- Debug and SPE fixes
- Fix vcpu reset

----------------------------------------------------------------
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

Ard Biesheuvel (3):
      arm64: assembler: remove conditional NEON yield macros
      arm64: assembler: introduce wxN aliases for wN registers
      arm64: fpsimd: run kernel mode NEON with softirqs disabled

Daniel Kiss (1):
      KVM: arm64: Enable SVE support for nVHE

David Brazdil (1):
      KVM: arm64: Support PREL/PLT relocs in EL2 code

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

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

Marc Zyngier (50):
      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
      arm64: cpufeature: Allow early filtering of feature override
      arm64: Cope with CPUs stuck in VHE mode
      arm64: Get rid of CONFIG_ARM64_VHE
      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

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

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

Suzuki K Poulose (17):
      KVM: arm64: Hide system instruction access to Trace registers
      KVM: arm64: Disable guest access to trace filter controls
      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

Wang Wensheng (1):
      KVM: arm64: Fix error return code in init_hyp_mode()

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

Zenghui Yu (2):
      KVM: arm64: GICv4.1: Restore VLPI pending state to physical side
      KVM: arm64: Fix Function ID typo for PTP_KVM service

 .../ABI/testing/sysfs-bus-coresight-devices-trbe   |   14 +
 Documentation/admin-guide/kernel-parameters.txt    |    3 +-
 Documentation/devicetree/bindings/arm/ete.yaml     |   75 ++
 Documentation/devicetree/bindings/arm/trbe.yaml    |   49 +
 Documentation/trace/coresight/coresight-trbe.rst   |   38 +
 Documentation/virt/kvm/api.rst                     |   25 +-
 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 +-
 MAINTAINERS                                        |    6 +-
 arch/arm/include/asm/hypervisor.h                  |    3 +
 arch/arm64/Kconfig                                 |   20 -
 arch/arm64/crypto/aes-modes.S                      |    2 +-
 arch/arm64/crypto/sha1-ce-core.S                   |    2 +-
 arch/arm64/crypto/sha2-ce-core.S                   |    2 +-
 arch/arm64/crypto/sha3-ce-core.S                   |    4 +-
 arch/arm64/crypto/sha512-ce-core.S                 |    2 +-
 arch/arm64/include/asm/assembler.h                 |  129 +--
 arch/arm64/include/asm/barrier.h                   |    1 +
 arch/arm64/include/asm/cpufeature.h                |   17 +
 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                   |    3 +
 arch/arm64/include/asm/kvm_asm.h                   |    9 +
 arch/arm64/include/asm/kvm_host.h                  |   46 +-
 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                    |    5 +
 arch/arm64/kernel/cpu-reset.S                      |    5 +-
 arch/arm64/kernel/cpufeature.c                     |   11 +-
 arch/arm64/kernel/fpsimd.c                         |    4 +-
 arch/arm64/kernel/head.S                           |   39 +-
 arch/arm64/kernel/hyp-stub.S                       |   13 +-
 arch/arm64/kernel/idreg-override.c                 |   26 +-
 arch/arm64/kernel/image-vars.h                     |   34 +-
 arch/arm64/kernel/vmlinux.lds.S                    |   74 +-
 arch/arm64/kvm/arm.c                               |  216 +++-
 arch/arm64/kvm/debug.c                             |  116 +-
 arch/arm64/kvm/fpsimd.c                            |   26 +-
 arch/arm64/kvm/guest.c                             |    6 +-
 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                               |  136 ++-
 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/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/s390/kernel/perf_event.c                      |   21 -
 arch/sh/kernel/perf_event.c                        |   18 -
 drivers/clocksource/arm_arch_timer.c               |   36 +
 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/perf_event.h                         |    2 -
 include/linux/ptp_kvm.h                            |   19 +
 include/linux/timekeeping.h                        |   12 +-
 include/uapi/linux/kvm.h                           |    1 +
 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/testing/selftests/kvm/.gitignore             |    1 +
 tools/testing/selftests/kvm/Makefile               |    1 +
 tools/testing/selftests/kvm/aarch64/vgic_init.c    |  551 ++++++++++
 tools/testing/selftests/kvm/include/kvm_util.h     |    9 +
 tools/testing/selftests/kvm/lib/kvm_util.c         |   75 ++
 144 files changed, 6298 insertions(+), 856 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-trbe
 create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
 create mode 100644 Documentation/devicetree/bindings/arm/trbe.yaml
 create mode 100644 Documentation/trace/coresight/coresight-trbe.rst
 create mode 100644 Documentation/virt/kvm/arm/ptp_kvm.rst
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/early_alloc.h
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/gfp.h
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/memory.h
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/mm.h
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/spinlock.h
 create mode 100644 arch/arm64/kvm/hyp/nvhe/cache.S
 create mode 100644 arch/arm64/kvm/hyp/nvhe/early_alloc.c
 create mode 100644 arch/arm64/kvm/hyp/nvhe/mem_protect.c
 create mode 100644 arch/arm64/kvm/hyp/nvhe/mm.c
 create mode 100644 arch/arm64/kvm/hyp/nvhe/page_alloc.c
 create mode 100644 arch/arm64/kvm/hyp/nvhe/setup.c
 create mode 100644 arch/arm64/kvm/hyp/nvhe/stub.c
 create mode 100644 arch/arm64/kvm/hyp/reserved_mem.c
 create mode 100644 drivers/firmware/smccc/kvm_guest.c
 create mode 100644 drivers/hwtracing/coresight/coresight-trbe.c
 create mode 100644 drivers/hwtracing/coresight/coresight-trbe.h
 create mode 100644 drivers/ptp/ptp_kvm_arm.c
 rename drivers/ptp/{ptp_kvm.c => ptp_kvm_common.c} (60%)
 create mode 100644 drivers/ptp/ptp_kvm_x86.c
 create mode 100644 include/linux/clocksource_ids.h
 create mode 100644 include/linux/ptp_kvm.h
 create mode 100644 tools/testing/selftests/kvm/aarch64/vgic_init.c

Comments

Paolo Bonzini April 23, 2021, 11:42 a.m. UTC | #1
On 23/04/21 13:35, Marc Zyngier wrote:
> Hi Paolo,
> 
> Here's the rather large pull request for 5.13. Changes are all over
> the map, but the big ticket items are the S2 host isolation when
> running in protected mode, the save/restore support for GICv4.1 and
> guest SVE support in nVHE mode. Plenty of fixes too.
> 
> Note that this pull request drags a number of branches from other
> trees in order to avoid conflicts and make people's life easier:
> 
> - the Coresight ETE/TRBE branch, as it is intertwined with the KVM
>    tracing support
> 
> - the arm64 vhe-only branch that deals with broken CPUs such as the
>    Apple M1
> 
> - the arm64 neon-softirqs-disabled that improves the support for
>    FP processing
> 
> You will still get a couple of conflicts with the KVM tree, but these
> are absolutely trivial to resolve.

Great, thanks.  I've pulled, it and will send the pull request to Linus 
around mid week to let these go in first.

Paolo

> Please pull,
> 
> 	M.
> 
> The following changes since commit 1e28eed17697bcf343c6743f0028cc3b5dd88bf0:
> 
>    Linux 5.12-rc3 (2021-03-14 14:41:02 -0700)
> 
> are available in the Git repository at:
> 
>    git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.13
> 
> for you to fetch changes up to 9a8aae605b80fc0a830cdce747eed48e11acc067:
> 
>    Merge branch 'kvm-arm64/kill_oprofile_dependency' into kvmarm-master/next (2021-04-22 13:41:49 +0100)
> 
> ----------------------------------------------------------------
> KVM/arm64 updates for Linux 5.13
> 
> New features:
> 
> - 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
> - Alexandru is now a reviewer (not really a new feature...)
> 
> Fixes:
> - Proper emulation of the GICR_TYPER register
> - Handle the complete set of relocation in the nVHE EL2 object
> - Get rid of the oprofile dependency in the PMU code (and of the
>    oprofile body parts at the same time)
> - Debug and SPE fixes
> - Fix vcpu reset
> 
> ----------------------------------------------------------------
> 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
> 
> Ard Biesheuvel (3):
>        arm64: assembler: remove conditional NEON yield macros
>        arm64: assembler: introduce wxN aliases for wN registers
>        arm64: fpsimd: run kernel mode NEON with softirqs disabled
> 
> Daniel Kiss (1):
>        KVM: arm64: Enable SVE support for nVHE
> 
> David Brazdil (1):
>        KVM: arm64: Support PREL/PLT relocs in EL2 code
> 
> 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
> 
> 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
> 
> Marc Zyngier (50):
>        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
>        arm64: cpufeature: Allow early filtering of feature override
>        arm64: Cope with CPUs stuck in VHE mode
>        arm64: Get rid of CONFIG_ARM64_VHE
>        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
> 
> 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
> 
> 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
> 
> Suzuki K Poulose (17):
>        KVM: arm64: Hide system instruction access to Trace registers
>        KVM: arm64: Disable guest access to trace filter controls
>        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
> 
> Wang Wensheng (1):
>        KVM: arm64: Fix error return code in init_hyp_mode()
> 
> 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
> 
> Zenghui Yu (2):
>        KVM: arm64: GICv4.1: Restore VLPI pending state to physical side
>        KVM: arm64: Fix Function ID typo for PTP_KVM service
> 
>   .../ABI/testing/sysfs-bus-coresight-devices-trbe   |   14 +
>   Documentation/admin-guide/kernel-parameters.txt    |    3 +-
>   Documentation/devicetree/bindings/arm/ete.yaml     |   75 ++
>   Documentation/devicetree/bindings/arm/trbe.yaml    |   49 +
>   Documentation/trace/coresight/coresight-trbe.rst   |   38 +
>   Documentation/virt/kvm/api.rst                     |   25 +-
>   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 +-
>   MAINTAINERS                                        |    6 +-
>   arch/arm/include/asm/hypervisor.h                  |    3 +
>   arch/arm64/Kconfig                                 |   20 -
>   arch/arm64/crypto/aes-modes.S                      |    2 +-
>   arch/arm64/crypto/sha1-ce-core.S                   |    2 +-
>   arch/arm64/crypto/sha2-ce-core.S                   |    2 +-
>   arch/arm64/crypto/sha3-ce-core.S                   |    4 +-
>   arch/arm64/crypto/sha512-ce-core.S                 |    2 +-
>   arch/arm64/include/asm/assembler.h                 |  129 +--
>   arch/arm64/include/asm/barrier.h                   |    1 +
>   arch/arm64/include/asm/cpufeature.h                |   17 +
>   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                   |    3 +
>   arch/arm64/include/asm/kvm_asm.h                   |    9 +
>   arch/arm64/include/asm/kvm_host.h                  |   46 +-
>   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                    |    5 +
>   arch/arm64/kernel/cpu-reset.S                      |    5 +-
>   arch/arm64/kernel/cpufeature.c                     |   11 +-
>   arch/arm64/kernel/fpsimd.c                         |    4 +-
>   arch/arm64/kernel/head.S                           |   39 +-
>   arch/arm64/kernel/hyp-stub.S                       |   13 +-
>   arch/arm64/kernel/idreg-override.c                 |   26 +-
>   arch/arm64/kernel/image-vars.h                     |   34 +-
>   arch/arm64/kernel/vmlinux.lds.S                    |   74 +-
>   arch/arm64/kvm/arm.c                               |  216 +++-
>   arch/arm64/kvm/debug.c                             |  116 +-
>   arch/arm64/kvm/fpsimd.c                            |   26 +-
>   arch/arm64/kvm/guest.c                             |    6 +-
>   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                               |  136 ++-
>   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/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/s390/kernel/perf_event.c                      |   21 -
>   arch/sh/kernel/perf_event.c                        |   18 -
>   drivers/clocksource/arm_arch_timer.c               |   36 +
>   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/perf_event.h                         |    2 -
>   include/linux/ptp_kvm.h                            |   19 +
>   include/linux/timekeeping.h                        |   12 +-
>   include/uapi/linux/kvm.h                           |    1 +
>   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/testing/selftests/kvm/.gitignore             |    1 +
>   tools/testing/selftests/kvm/Makefile               |    1 +
>   tools/testing/selftests/kvm/aarch64/vgic_init.c    |  551 ++++++++++
>   tools/testing/selftests/kvm/include/kvm_util.h     |    9 +
>   tools/testing/selftests/kvm/lib/kvm_util.c         |   75 ++
>   144 files changed, 6298 insertions(+), 856 deletions(-)
>   create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-trbe
>   create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
>   create mode 100644 Documentation/devicetree/bindings/arm/trbe.yaml
>   create mode 100644 Documentation/trace/coresight/coresight-trbe.rst
>   create mode 100644 Documentation/virt/kvm/arm/ptp_kvm.rst
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/early_alloc.h
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/gfp.h
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/memory.h
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/mm.h
>   create mode 100644 arch/arm64/kvm/hyp/include/nvhe/spinlock.h
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/cache.S
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/early_alloc.c
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/mem_protect.c
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/mm.c
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/page_alloc.c
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/setup.c
>   create mode 100644 arch/arm64/kvm/hyp/nvhe/stub.c
>   create mode 100644 arch/arm64/kvm/hyp/reserved_mem.c
>   create mode 100644 drivers/firmware/smccc/kvm_guest.c
>   create mode 100644 drivers/hwtracing/coresight/coresight-trbe.c
>   create mode 100644 drivers/hwtracing/coresight/coresight-trbe.h
>   create mode 100644 drivers/ptp/ptp_kvm_arm.c
>   rename drivers/ptp/{ptp_kvm.c => ptp_kvm_common.c} (60%)
>   create mode 100644 drivers/ptp/ptp_kvm_x86.c
>   create mode 100644 include/linux/clocksource_ids.h
>   create mode 100644 include/linux/ptp_kvm.h
>   create mode 100644 tools/testing/selftests/kvm/aarch64/vgic_init.c
>