[GIT PULL] KVM/arm64 updates for 5.9
Marc Zyngier
maz at kernel.org
Wed Aug 5 13:56:04 EDT 2020
Hi Paolo,
This is the bulk of the 5.9 patches for KVM/arm64. It is a pretty busy
merge window for us this time, thanks to the ongoing Protected KVM
work. We have changes all over the map, but the most important piece
probably is the way we now build the EL2 code on non-VHE systems. On
top of giving us better control over what gets pulled in there, it
allowed us to enable instrumentation on VHE systems.
The rest is a mixed bag of new features (TTL TLB invalidation, Pointer
Auth on non-VHE), preliminary patches for NV, some early MMU rework
before the 5.10 onslaught, and tons of cleanups.
A few things to notice:
- We share a branch with the arm64 tree, which has gone in already.
- There are a number of known conflicts with Sean's MMU cache rework,
as well as the late fixes that went in 5.8. The conflicts are pretty
simple to resolve, and -next has the right resolutions already.
Please pull,
M.
The following changes since commit 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68:
Linux 5.8-rc3 (2020-06-28 15:00:24 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.9
for you to fetch changes up to 16314874b12b451bd5a1df86bcb69745eb487502:
Merge branch 'kvm-arm64/misc-5.9' into kvmarm-master/next (2020-07-30 16:13:04 +0100)
----------------------------------------------------------------
KVM/arm64 updates for Linux 5.9:
- Split the VHE and nVHE hypervisor code bases, build the EL2 code
separately, allowing for the VHE code to now be built with instrumentation
- Level-based TLB invalidation support
- Restructure of the vcpu register storage to accomodate the NV code
- Pointer Authentication available for guests on nVHE hosts
- Simplification of the system register table parsing
- MMU cleanups and fixes
- A number of post-32bit cleanups and other fixes
----------------------------------------------------------------
Alexander Graf (2):
KVM: arm64: vgic-its: Change default outer cacheability for {PEND, PROP}BASER
KVM: arm: Add trace name for ARM_NISV
Andrew Scull (3):
arm64: kvm: Remove kern_hyp_va from get_vcpu_ptr
KVM: arm64: Handle calls to prefixed hyp functions
KVM: arm64: Move hyp-init.S to nVHE
Christoffer Dall (1):
KVM: arm64: Factor out stage 2 page table data from struct kvm
David Brazdil (16):
KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe
KVM: arm64: Move __smccc_workaround_1_smc to .rodata
KVM: arm64: Add build rules for separate VHE/nVHE object files
KVM: arm64: Use build-time defines in has_vhe()
KVM: arm64: Build hyp-entry.S separately for VHE/nVHE
KVM: arm64: Duplicate hyp/tlb.c for VHE/nVHE
KVM: arm64: Split hyp/switch.c to VHE/nVHE
KVM: arm64: Split hyp/debug-sr.c to VHE/nVHE
KVM: arm64: Split hyp/sysreg-sr.c to VHE/nVHE
KVM: arm64: Duplicate hyp/timer-sr.c for VHE/nVHE
KVM: arm64: Compile remaining hyp/ files for both VHE/nVHE
KVM: arm64: Remove __hyp_text macro, use build rules instead
KVM: arm64: Lift instrumentation restrictions on VHE
KVM: arm64: Make nVHE ASLR conditional on RANDOMIZE_BASE
KVM: arm64: Substitute RANDOMIZE_BASE for HARDEN_EL2_VECTORS
KVM: arm64: Ensure that all nVHE hyp code is in .hyp.text
Gavin Shan (1):
KVM: arm64: Rename HSR to ESR
James Morse (5):
KVM: arm64: Drop the target_table[] indirection
KVM: arm64: Tolerate an empty target_table list
KVM: arm64: Move ACTLR_EL1 emulation to the sys_reg_descs array
KVM: arm64: Remove target_table from exit handlers
KVM: arm64: Remove the target table
Marc Zyngier (31):
KVM: arm64: Enable Address Authentication at EL2 if available
KVM: arm64: Allow ARM64_PTR_AUTH when ARM64_VHE=n
KVM: arm64: Allow PtrAuth to be enabled from userspace on non-VHE systems
KVM: arm64: Check HCR_EL2 instead of shadow copy to swap PtrAuth registers
KVM: arm64: Simplify PtrAuth alternative patching
KVM: arm64: Allow in-atomic injection of SPIs
arm64: Detect the ARMv8.4 TTL feature
arm64: Document SW reserved PTE/PMD bits in Stage-2 descriptors
arm64: Add level-hinted TLB invalidation helper
Merge branch 'kvm-arm64/ttl-for-arm64' into HEAD
KVM: arm64: Use TTL hint in when invalidating stage-2 translations
KVM: arm64: Introduce accessor for ctxt->sys_reg
KVM: arm64: hyp: Use ctxt_sys_reg/__vcpu_sys_reg instead of raw sys_regs access
KVM: arm64: sve: Use __vcpu_sys_reg() instead of raw sys_regs access
KVM: arm64: pauth: Use ctxt_sys_reg() instead of raw sys_regs access
KVM: arm64: debug: Drop useless vpcu parameter
KVM: arm64: Make struct kvm_regs userspace-only
KVM: arm64: Move ELR_EL1 to the system register array
KVM: arm64: Move SP_EL1 to the system register array
KVM: arm64: Disintegrate SPSR array
KVM: arm64: Move SPSR_EL1 to the system register array
KVM: arm64: timers: Rename kvm_timer_sync_hwstate to kvm_timer_sync_user
KVM: arm64: timers: Move timer registers to the sys_regs file
KVM: arm64: Don't use has_vhe() for CHOOSE_HYP_SYM()
Merge branch 'kvm-arm64/el2-obj-v4.1' into kvmarm-master/next-WIP
Merge branch 'kvm-arm64/pre-nv-5.9' into kvmarm-master/next-WIP
Merge branch 'kvm-arm64/ptrauth-nvhe' into kvmarm-master/next-WIP
Merge branch 'kvm-arm64/target-table-no-more' into kvmarm-master/next-WIP
Merge branch 'kvm-arm64/misc-5.9' into kvmarm-master/next-WIP
Merge branch 'kvm-arm64/el2-obj-v4.1' into kvmarm-master/next
Merge branch 'kvm-arm64/misc-5.9' into kvmarm-master/next
Peng Hao (1):
KVM: arm64: Drop long gone function parameter documentation
Will Deacon (4):
KVM: arm64: Rename kvm_vcpu_dabt_isextabt()
KVM: arm64: Handle data and instruction external aborts the same way
KVM: arm64: Don't skip cache maintenance for read-only memslots
KVM: arm64: Move S1PTW S2 fault logic out of io_mem_abort()
arch/arm64/Kconfig | 20 +-
arch/arm64/include/asm/cpucaps.h | 3 +-
arch/arm64/include/asm/kvm_asm.h | 75 +-
arch/arm64/include/asm/kvm_coproc.h | 8 -
arch/arm64/include/asm/kvm_emulate.h | 75 +-
arch/arm64/include/asm/kvm_host.h | 94 ++-
arch/arm64/include/asm/kvm_hyp.h | 15 +-
arch/arm64/include/asm/kvm_mmu.h | 16 +-
arch/arm64/include/asm/kvm_ptrauth.h | 34 +-
arch/arm64/include/asm/mmu.h | 7 -
arch/arm64/include/asm/pgtable-hwdef.h | 2 +
arch/arm64/include/asm/stage2_pgtable.h | 9 +
arch/arm64/include/asm/sysreg.h | 1 +
arch/arm64/include/asm/tlbflush.h | 45 +
arch/arm64/include/asm/virt.h | 13 +-
arch/arm64/kernel/asm-offsets.c | 3 +-
arch/arm64/kernel/cpu_errata.c | 4 +-
arch/arm64/kernel/cpufeature.c | 11 +
arch/arm64/kernel/image-vars.h | 54 ++
arch/arm64/kvm/Kconfig | 2 +-
arch/arm64/kvm/Makefile | 4 +-
arch/arm64/kvm/arch_timer.c | 157 +++-
arch/arm64/kvm/arm.c | 57 +-
arch/arm64/kvm/fpsimd.c | 6 +-
arch/arm64/kvm/guest.c | 79 +-
arch/arm64/kvm/handle_exit.c | 32 +-
arch/arm64/kvm/hyp/Makefile | 24 +-
arch/arm64/kvm/hyp/aarch32.c | 8 +-
arch/arm64/kvm/hyp/entry.S | 4 +-
arch/arm64/kvm/hyp/fpsimd.S | 1 -
arch/arm64/kvm/hyp/hyp-entry.S | 21 +-
.../kvm/hyp/{debug-sr.c => include/hyp/debug-sr.h} | 88 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 511 +++++++++++
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 193 +++++
arch/arm64/kvm/hyp/nvhe/Makefile | 62 ++
arch/arm64/kvm/hyp/nvhe/debug-sr.c | 77 ++
arch/arm64/kvm/{ => hyp/nvhe}/hyp-init.S | 5 +
arch/arm64/kvm/hyp/nvhe/switch.c | 272 ++++++
arch/arm64/kvm/hyp/nvhe/sysreg-sr.c | 46 +
arch/arm64/kvm/hyp/{ => nvhe}/timer-sr.c | 6 +-
arch/arm64/kvm/hyp/nvhe/tlb.c | 154 ++++
arch/arm64/kvm/hyp/smccc_wa.S | 32 +
arch/arm64/kvm/hyp/switch.c | 936 ---------------------
arch/arm64/kvm/hyp/sysreg-sr.c | 333 --------
arch/arm64/kvm/hyp/tlb.c | 242 ------
arch/arm64/kvm/hyp/vgic-v2-cpuif-proxy.c | 4 +-
arch/arm64/kvm/hyp/vgic-v3-sr.c | 134 ++-
arch/arm64/kvm/hyp/vhe/Makefile | 11 +
arch/arm64/kvm/hyp/vhe/debug-sr.c | 26 +
arch/arm64/kvm/hyp/vhe/switch.c | 219 +++++
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 114 +++
arch/arm64/kvm/hyp/vhe/timer-sr.c | 12 +
arch/arm64/kvm/hyp/vhe/tlb.c | 162 ++++
arch/arm64/kvm/inject_fault.c | 2 +-
arch/arm64/kvm/mmio.c | 6 -
arch/arm64/kvm/mmu.c | 311 ++++---
arch/arm64/kvm/regmap.c | 37 +-
arch/arm64/kvm/reset.c | 23 +-
arch/arm64/kvm/sys_regs.c | 207 ++---
arch/arm64/kvm/sys_regs_generic_v8.c | 96 ---
arch/arm64/kvm/trace_arm.h | 8 +-
arch/arm64/kvm/va_layout.c | 2 +-
arch/arm64/kvm/vgic/vgic-irqfd.c | 24 +-
arch/arm64/kvm/vgic/vgic-its.c | 3 +-
arch/arm64/kvm/vgic/vgic-mmio-v3.c | 2 +-
include/kvm/arm_arch_timer.h | 13 +-
include/trace/events/kvm.h | 2 +-
scripts/kallsyms.c | 1 +
68 files changed, 2883 insertions(+), 2377 deletions(-)
rename arch/arm64/kvm/hyp/{debug-sr.c => include/hyp/debug-sr.h} (66%)
create mode 100644 arch/arm64/kvm/hyp/include/hyp/switch.h
create mode 100644 arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h
create mode 100644 arch/arm64/kvm/hyp/nvhe/Makefile
create mode 100644 arch/arm64/kvm/hyp/nvhe/debug-sr.c
rename arch/arm64/kvm/{ => hyp/nvhe}/hyp-init.S (95%)
create mode 100644 arch/arm64/kvm/hyp/nvhe/switch.c
create mode 100644 arch/arm64/kvm/hyp/nvhe/sysreg-sr.c
rename arch/arm64/kvm/hyp/{ => nvhe}/timer-sr.c (84%)
create mode 100644 arch/arm64/kvm/hyp/nvhe/tlb.c
create mode 100644 arch/arm64/kvm/hyp/smccc_wa.S
delete mode 100644 arch/arm64/kvm/hyp/switch.c
delete mode 100644 arch/arm64/kvm/hyp/sysreg-sr.c
delete mode 100644 arch/arm64/kvm/hyp/tlb.c
create mode 100644 arch/arm64/kvm/hyp/vhe/Makefile
create mode 100644 arch/arm64/kvm/hyp/vhe/debug-sr.c
create mode 100644 arch/arm64/kvm/hyp/vhe/switch.c
create mode 100644 arch/arm64/kvm/hyp/vhe/sysreg-sr.c
create mode 100644 arch/arm64/kvm/hyp/vhe/timer-sr.c
create mode 100644 arch/arm64/kvm/hyp/vhe/tlb.c
delete mode 100644 arch/arm64/kvm/sys_regs_generic_v8.c
More information about the linux-arm-kernel
mailing list