KVM/arm updates for openEuler.
Andrew Murray (10): arm64: arm_pmu: Remove unnecessary isb instruction arm64: KVM: Encapsulate kvm_cpu_context in kvm_host_data arm64: KVM: Add accessors to track guest/host only counters arm64: arm_pmu: Add !VHE support for exclude_host/exclude_guest attributes arm64: KVM: Enable !VHE support for :G/:H perf event modifiers arm64: KVM: Enable VHE support for :G/:H perf event modifiers arm64: KVM: Avoid isb's by using direct pmxevtyper sysreg arm64: docs: Document perf event attributes arm64: KVM: Fix perf cycle counter support for VHE KVM: arm/arm64: Re-create event when setting counter value
Christoffer Dall (8): KVM: arm64: Safety check PSTATE when entering guest and handle IL KVM: arm64: Clarify explanation of STAGE2_PGTABLE_LEVELS KVM: arm/arm64: vgic: Consider priority and active state for pending irq KVM: arm/arm64: Fixup the kvm_exit tracepoint KVM: arm/arm64: Remove arch timer workqueue KVM: arm64: Make vcpu const in vcpu_read_sys_reg KVM: arm/arm64: Fix unintended stage 2 PMD mappings KVM: arm/arm64: Simplify bg_timer programming
Eric Auger (1): KVM: arm/arm64: vgic: Use a single IO device per redistributor
Feng Tiantian (1): fbcon: fix ypos over boundary issue
Heyi Guo (2): irqchip/gic-v3-its: Set VPENDING table as inner-shareable kvm/vgic-its: flush pending LPIs when nuking DT
James Morse (1): KVM: arm64: Move pmu hyp code under hyp's Makefile to avoid instrumentation
Julien Thierry (2): KVM: arm/arm64: vgic: Make vgic_irq->irq_lock a raw_spinlock KVM: arm/arm64: vgic: Make vgic_cpu->ap_list_lock a raw_spinlock
Kristina Martsenko (1): vgic: Add support for 52bit guest physical address
Marc Zyngier (21): arm64: KVM: Add trapped system register access tracepoint arm/arm64: KVM: Add ARM_EXCEPTION_IS_TRAP macro arm: KVM: Add S2_PMD_{MASK, SIZE} constants arm: KVM: Add missing kvm_stage2_has_pmd() helper arm/arm64: KVM: Statically configure the host's view of MPIDR arm64: KVM: Always set ICH_HCR_EL2.EN if GICv4 is enabled KVM: arm/arm64: vgic-v3: Retire pending interrupts on disabling LPIs KVM: arm/arm64: Initialise host's MPIDRs by reading the actual register KVM: arm/arm64: vgic: Add LPI translation cache definition KVM: arm/arm64: vgic: Add __vgic_put_lpi_locked primitive KVM: arm/arm64: vgic-its: Add MSI-LPI translation cache invalidation KVM: arm/arm64: vgic-its: Invalidate MSI-LPI translation cache on specific commands KVM: arm/arm64: vgic-its: Invalidate MSI-LPI translation cache on disabling LPIs KVM: arm/arm64: vgic-its: Invalidate MSI-LPI translation cache on ITS disable KVM: arm/arm64: vgic-its: Invalidate MSI-LPI translation cache on vgic teardown KVM: arm/arm64: vgic-its: Cache successful MSI->LPI translation KVM: arm/arm64: vgic-its: Check the LPI translation cache on MSI injection KVM: arm/arm64: vgic-irqfd: Implement kvm_arch_set_irq_inatomic KVM: Call kvm_arch_vcpu_blocking early into the blocking sequence irqchip/gic-v3-its: Make vlpi_lock a spinlock KVM: arm/arm64: vgic: Allow more than 256 vcpus for KVM_IRQ_LINE
Mark Rutland (1): KVM: arm/arm64: Log PSTATE for unhandled sysregs
Punit Agrawal (8): KVM: arm/arm64: Share common code in user_mem_abort() KVM: arm/arm64: Re-factor setting the Stage 2 entry to exec on fault KVM: arm/arm64: Introduce helpers to manipulate page table entries KVM: arm64: Support dirty page tracking for PUD hugepages KVM: arm64: Support PUD hugepage in stage2_is_exec() KVM: arm64: Support handling access faults for PUD hugepages KVM: arm64: Update age handlers to support PUD hugepages KVM: arm64: Add support for creating PUD hugepages at stage 2
Suzuki K Poulose (20): kvm: arm/arm64: Remove spurious WARN_ON kvm: arm64: Add helper for loading the stage2 setting for a VM arm64: Add a helper for PARange to physical shift conversion kvm: arm64: Clean up VTCR_EL2 initialisation kvm: arm/arm64: Allow arch specific configurations for VM kvm: arm64: Configure VTCR_EL2 per VM kvm: arm/arm64: Prepare for VM specific stage2 translations kvm: arm64: Prepare for dynamic stage2 page table layout kvm: arm64: Make stage2 page table layout dynamic kvm: arm64: Dynamic configuration of VTTBR mask kvm: arm64: Configure VTCR_EL2.SL0 per VM kvm: arm64: Switch to per VM IPA limit kvm: arm64: Add 52bit support for PAR to HPFAR conversoin kvm: arm64: Set a limit on the IPA size kvm: arm64: Limit the minimum number of page table levels kvm: arm64: Allow tuning the physical address size for VM KVM: arm64: Relax the restriction on using stage2 PUD huge mapping KVM: arm/arm64: Enforce PTE mappings at stage2 when needed KVM: arm/arm64: Fix handling of stage2 huge mappings kvm: arm: Skip stage2 huge mappings for unaligned ipa backed by THP
Xiangyou Xie (2): KVM: arm/arm64: vgic-its: Introduce multiple LPI translation caches KVM: arm/arm64: vgic-its: Do not execute invalidate MSI-LPI translation cache on movi command
Yiwen Jiang (1): kvm: arm/arm64: add irqsave for lpi_cache_lock
Zenghui Yu (7): KVM: arm/arm64: Add support for probing Hisi ncsnp capability KVM: arm/arm64: Adjust entry/exit and trap related tracepoints perf tools arm64: Add support for get_cpuid() function perf, kvm/arm64: Add stat support on arm64 perf, kvm/arm64: perf-kvm-stat to report VM TRAP KVM: arm/arm64: Avoid the unnecessary stage 2 translation faults KVM: arm/arm64: Only probe CPU type and ncsnp info in hypervisor
honghao (1): KVM: arm/arm64: Probe Hisi CPU TYPE from ACPI/DTB
Documentation/arm64/perf.txt | 85 ++++ Documentation/virtual/kvm/api.txt | 43 +- arch/arm/include/asm/hisi_cpu_model.h | 18 + arch/arm/include/asm/kvm_arm.h | 4 +- arch/arm/include/asm/kvm_asm.h | 4 + arch/arm/include/asm/kvm_host.h | 25 +- arch/arm/include/asm/kvm_mmu.h | 76 ++- arch/arm/include/asm/stage2_pgtable.h | 69 ++- arch/arm/include/uapi/asm/kvm.h | 4 +- arch/arm/kvm/coproc.c | 4 +- arch/arm/kvm/hyp/cp15-sr.c | 1 - arch/arm64/include/asm/cpufeature.h | 21 + arch/arm64/include/asm/hisi_cpu_model.h | 21 + arch/arm64/include/asm/kvm_arm.h | 160 ++++-- arch/arm64/include/asm/kvm_asm.h | 13 +- arch/arm64/include/asm/kvm_host.h | 61 ++- arch/arm64/include/asm/kvm_hyp.h | 10 + arch/arm64/include/asm/kvm_mmu.h | 84 +++- arch/arm64/include/asm/pgtable-hwdef.h | 4 + arch/arm64/include/asm/pgtable.h | 9 + arch/arm64/include/asm/ptrace.h | 3 + arch/arm64/include/asm/stage2_pgtable-nopmd.h | 42 -- arch/arm64/include/asm/stage2_pgtable-nopud.h | 39 -- arch/arm64/include/asm/stage2_pgtable.h | 242 ++++++--- arch/arm64/include/uapi/asm/kvm.h | 4 +- arch/arm64/kernel/asm-offsets.c | 1 + arch/arm64/kernel/perf_event.c | 50 +- arch/arm64/kvm/Makefile | 3 +- arch/arm64/kvm/handle_exit.c | 10 + arch/arm64/kvm/hyp/Makefile | 1 - arch/arm64/kvm/hyp/hyp-entry.S | 16 +- arch/arm64/kvm/hyp/s2-setup.c | 90 ---- arch/arm64/kvm/hyp/switch.c | 49 +- arch/arm64/kvm/hyp/sysreg-sr.c | 20 +- arch/arm64/kvm/hyp/tlb.c | 4 +- arch/arm64/kvm/pmu.c | 201 ++++++++ arch/arm64/kvm/reset.c | 103 ++++ arch/arm64/kvm/sys_regs.c | 15 +- arch/arm64/kvm/sys_regs.h | 4 + arch/arm64/kvm/trace.h | 70 +++ drivers/irqchip/irq-gic-v3-its.c | 20 +- drivers/video/fbdev/core/fbcon.h | 5 +- include/kvm/arm_arch_timer.h | 7 - include/kvm/arm_vgic.h | 17 +- include/linux/irqchip/arm-gic-v3.h | 8 + include/uapi/linux/kvm.h | 11 + tools/perf/arch/arm64/Makefile | 2 + tools/perf/arch/arm64/util/Build | 1 + tools/perf/arch/arm64/util/aarch64_guest_exits.h | 95 ++++ tools/perf/arch/arm64/util/header.c | 74 +-- tools/perf/arch/arm64/util/kvm-stat.c | 112 +++++ virt/kvm/arm/arch_timer.c | 67 +-- virt/kvm/arm/arm.c | 41 +- virt/kvm/arm/hisi_cpu_model.c | 116 +++++ virt/kvm/arm/hyp/vgic-v3-sr.c | 4 +- virt/kvm/arm/mmu.c | 592 ++++++++++++++++------- virt/kvm/arm/pmu.c | 42 +- virt/kvm/arm/trace.h | 27 +- virt/kvm/arm/vgic/vgic-debug.c | 4 +- virt/kvm/arm/vgic/vgic-init.c | 18 +- virt/kvm/arm/vgic/vgic-irqfd.c | 36 +- virt/kvm/arm/vgic/vgic-its.c | 356 ++++++++++++-- virt/kvm/arm/vgic/vgic-kvm-device.c | 2 +- virt/kvm/arm/vgic/vgic-mmio-v2.c | 14 +- virt/kvm/arm/vgic/vgic-mmio-v3.c | 100 ++-- virt/kvm/arm/vgic/vgic-mmio.c | 34 +- virt/kvm/arm/vgic/vgic-v2.c | 4 +- virt/kvm/arm/vgic/vgic-v3.c | 8 +- virt/kvm/arm/vgic/vgic.c | 170 ++++--- virt/kvm/arm/vgic/vgic.h | 6 + virt/kvm/kvm_main.c | 6 +- 71 files changed, 2807 insertions(+), 875 deletions(-) create mode 100644 Documentation/arm64/perf.txt create mode 100644 arch/arm/include/asm/hisi_cpu_model.h create mode 100644 arch/arm64/include/asm/hisi_cpu_model.h delete mode 100644 arch/arm64/include/asm/stage2_pgtable-nopmd.h delete mode 100644 arch/arm64/include/asm/stage2_pgtable-nopud.h delete mode 100644 arch/arm64/kvm/hyp/s2-setup.c create mode 100644 arch/arm64/kvm/pmu.c create mode 100644 tools/perf/arch/arm64/util/aarch64_guest_exits.h create mode 100644 tools/perf/arch/arm64/util/kvm-stat.c create mode 100644 virt/kvm/arm/hisi_cpu_model.c