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
_______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm