* [GIT PULL] KVM/arm64 updates for 5.10
@ 2020-10-10 16:38 Marc Zyngier
0 siblings, 0 replies; only message in thread
From: Marc Zyngier @ 2020-10-10 16:38 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Alexandru Elisei, Andrew Jones, Andrew Scull,
Anthony Steinhauser, Dan Carpenter, David Brazdil, Eric Auger,
Gavin Shan, James Morse, kernel test robot, Liu Shixin,
Mauro Carvalho Chehab, Quentin Perret, Steven Price,
Sudeep Holla, Suzuki K Poulose, Tian Tao, Will Deacon,
Xiaofei Tan, kernel-team, kvm, kvmarm, linux-arm-kernel
Paolo,
Here's the (pretty large) set of KVM/arm64 updates for 5.10.
This time around, more of the work we're doing on the pKVM front: new
page table code, new EL2-private data structures, including a per-CPU
infrastructure. Also, we now have a way for userspace to decide which
PMU events get counted. Finally, a complete rework of the Spectre
mitigation, as the existing code had quickly become completely
unmaintainable.
A couple of notes:
- The Spectre stuff is a shared branch between the arm64 and the KVM,
so both tries carry the whole thing
- The branch is based on -rc4, but would have (badly) conflicted with
some of the fixes merged in -rc5. So I did the merge myself, solving
the conflicts myself. This may explain why some of the patches have
an air of "déjà vu" (the steal-time fixes, for example)...
The following changes since commit f4d51dffc6c01a9e94650d95ce0104964f8ae822:
Linux 5.9-rc4 (2020-09-06 17:11:40 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.10
for you to fetch changes up to 4e5dc64c43192b4fd4c96ac150a8f013065f5f5b:
Merge branches 'kvm-arm64/pt-new' and 'kvm-arm64/pmu-5.9' into kvmarm-master/next (2020-10-02 09:25:55 +0100)
----------------------------------------------------------------
KVM/arm64 updates for Linux 5.10
- New page table code for both hypervisor and guest stage-2
- Introduction of a new EL2-private host context
- Allow EL2 to have its own private per-CPU variables
- Support of PMU event filtering
- Complete rework of the Spectre mitigation
----------------------------------------------------------------
Alexandru Elisei (5):
KVM: arm64: Update page shift if stage 2 block mapping not supported
KVM: arm64: Try PMD block mappings if PUD mappings are not supported
KVM: arm64: Do not flush memslot if FWB is supported
KVM: arm64: Add undocumented return values for PMU device control group
KVM: arm64: Match PMU error code descriptions with error conditions
Andrew Jones (6):
KVM: arm64: pvtime: steal-time is only supported when configured
KVM: arm64: pvtime: Fix potential loss of stolen time
KVM: arm64: Drop type input from kvm_put_guest
KVM: arm64: pvtime: Fix stolen time accounting across migration
KVM: Documentation: Minor fixups
arm64/x86: KVM: Introduce steal-time cap
Andrew Scull (19):
KVM: arm64: Remove __activate_vm wrapper
KVM: arm64: Remove hyp_panic arguments
KVM: arm64: Remove kvm_host_data_t typedef
KVM: arm64: Choose hyp symbol based on context
KVM: arm64: Save chosen hyp vector to a percpu variable
KVM: arm64: nVHE: Use separate vector for the host
KVM: arm64: nVHE: Don't consume host SErrors with ESB
KVM: arm64: Introduce hyp context
KVM: arm64: Update context references from host to hyp
KVM: arm64: Restore hyp when panicking in guest context
KVM: arm64: Share context save and restore macros
KVM: arm64: nVHE: Switch to hyp context for EL2
KVM: arm64: nVHE: Handle hyp panics
KVM: arm64: nVHE: Pass pointers consistently to hyp-init
smccc: Define vendor hyp owned service call region
smccc: Use separate variables for args and results
KVM: arm64: nVHE: Migrate hyp interface to SMCCC
KVM: arm64: nVHE: Migrate hyp-init to SMCCC
KVM: arm64: nVHE: Fix pointers during SMCCC convertion
David Brazdil (10):
kvm: arm64: Partially link nVHE hyp code, simplify HYPCOPY
kvm: arm64: Move nVHE hyp namespace macros to hyp_image.h
kvm: arm64: Only define __kvm_ex_table for CONFIG_KVM
kvm: arm64: Remove __hyp_this_cpu_read
kvm: arm64: Remove hyp_adr/ldr_this_cpu
kvm: arm64: Add helpers for accessing nVHE hyp per-cpu vars
kvm: arm64: Duplicate arm64_ssbd_callback_required for nVHE hyp
kvm: arm64: Create separate instances of kvm_host_data for VHE/nVHE
kvm: arm64: Set up hyp percpu data for nVHE
kvm: arm64: Remove unnecessary hyp mappings
Liu Shixin (1):
KVM: arm64: vgic-debug: Convert to use DEFINE_SEQ_ATTRIBUTE macro
Marc Zyngier (23):
KVM: arm64: Do not try to map PUDs when they are folded into PMD
KVM: arm64: Fix address truncation in traces
Merge branch 'kvm-arm64/pt-new' into kvmarm-master/next
Merge branch 'kvm-arm64/nvhe-hyp-context' into kvmarm-master/next
Merge branch 'kvm-arm64/pt-new' into kvmarm-master/next
Merge branch 'kvm-arm64/misc-5.10' into kvmarm-master/next
arm64: Make use of ARCH_WORKAROUND_1 even when KVM is not enabled
arm64: Run ARCH_WORKAROUND_1 enabling code on all CPUs
KVM: arm64: Refactor PMU attribute error handling
KVM: arm64: Use event mask matching architecture revision
KVM: arm64: Add PMU event filtering infrastructure
KVM: arm64: Mask out filtered events in PCMEID{0,1}_EL1
KVM: arm64: Document PMU filtering API
Merge branch 'kvm-arm64/pmu-5.9' into kvmarm-master/next
arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs
KVM: arm64: Set CSV2 for guests on hardware unaffected by Spectre-v2
KVM: arm64: Simplify handling of ARCH_WORKAROUND_2
KVM: arm64: Get rid of kvm_arm_have_ssbd()
KVM: arm64: Convert ARCH_WORKAROUND_2 to arm64_get_spectre_v4_state()
arm64: Get rid of arm64_ssbd_state
Merge remote-tracking branch 'arm64/for-next/ghostbusters' into kvm-arm64/hyp-pcpu
Merge branch 'kvm-arm64/hyp-pcpu' into kvmarm-master/next
Merge branches 'kvm-arm64/pt-new' and 'kvm-arm64/pmu-5.9' into kvmarm-master/next
Mauro Carvalho Chehab (1):
KVM: arm64: Fix some documentation build warnings
Quentin Perret (4):
KVM: arm64: Add support for stage-2 write-protect in generic page-table
KVM: arm64: Convert write-protect operation to generic page-table API
KVM: arm64: Add support for stage-2 cache flushing in generic page-table
KVM: arm64: Convert memslot cache-flushing code to generic page-table API
Tian Tao (1):
KVM: arm64: Fix inject_fault.c kernel-doc warnings
Will Deacon (33):
KVM: arm64: Remove kvm_mmu_free_memory_caches()
KVM: arm64: Add stand-alone page-table walker infrastructure
KVM: arm64: Add support for creating kernel-agnostic stage-1 page tables
KVM: arm64: Use generic allocator for hyp stage-1 page-tables
KVM: arm64: Add support for creating kernel-agnostic stage-2 page tables
KVM: arm64: Add support for stage-2 map()/unmap() in generic page-table
KVM: arm64: Convert kvm_phys_addr_ioremap() to generic page-table API
KVM: arm64: Convert kvm_set_spte_hva() to generic page-table API
KVM: arm64: Convert unmap_stage2_range() to generic page-table API
KVM: arm64: Add support for stage-2 page-aging in generic page-table
KVM: arm64: Convert page-aging and access faults to generic page-table API
KVM: arm64: Add support for relaxing stage-2 perms in generic page-table code
KVM: arm64: Convert user_mem_abort() to generic page-table API
KVM: arm64: Check the pgt instead of the pgd when modifying page-table
KVM: arm64: Remove unused page-table code
KVM: arm64: Remove unused 'pgd' field from 'struct kvm_s2_mmu'
KVM: arm64: Don't constrain maximum IPA size based on host configuration
arm64: Remove Spectre-related CONFIG_* options
KVM: arm64: Replace CONFIG_KVM_INDIRECT_VECTORS with CONFIG_RANDOMIZE_BASE
KVM: arm64: Simplify install_bp_hardening_cb()
arm64: Rename ARM64_HARDEN_BRANCH_PREDICTOR to ARM64_SPECTRE_V2
arm64: Introduce separate file for spectre mitigations and reporting
arm64: Rewrite Spectre-v2 mitigation code
arm64: Group start_thread() functions together
arm64: Treat SSBS as a non-strict system feature
arm64: Rename ARM64_SSBD to ARM64_SPECTRE_V4
arm64: Move SSBD prctl() handler alongside other spectre mitigation code
arm64: Rewrite Spectre-v4 mitigation code
KVM: arm64: Allow patching EL2 vectors even with KASLR is not enabled
arm64: Pull in task_stack_page() to Spectre-v4 mitigation code
arm64: Add support for PR_SPEC_DISABLE_NOEXEC prctl() option
KVM: arm64: Pass level hint to TLBI during stage-2 permission fault
KVM: arm64: Ensure user_mem_abort() return value is initialised
Xiaofei Tan (1):
KVM: arm64: Fix doc warnings in mmu code
Documentation/virt/kvm/api.rst | 22 +-
Documentation/virt/kvm/devices/vcpu.rst | 57 +-
arch/arm64/Kconfig | 26 -
arch/arm64/include/asm/assembler.h | 29 +-
arch/arm64/include/asm/cpucaps.h | 4 +-
arch/arm64/include/asm/cpufeature.h | 24 -
arch/arm64/include/asm/hyp_image.h | 36 +
arch/arm64/include/asm/kvm_asm.h | 192 +++-
arch/arm64/include/asm/kvm_emulate.h | 14 -
arch/arm64/include/asm/kvm_host.h | 77 +-
arch/arm64/include/asm/kvm_hyp.h | 9 +-
arch/arm64/include/asm/kvm_mmu.h | 341 +-----
arch/arm64/include/asm/kvm_pgtable.h | 309 +++++
arch/arm64/include/asm/kvm_ptrauth.h | 6 +-
arch/arm64/include/asm/mmu.h | 11 +-
arch/arm64/include/asm/percpu.h | 28 +-
arch/arm64/include/asm/pgtable-hwdef.h | 24 -
arch/arm64/include/asm/pgtable-prot.h | 19 -
arch/arm64/include/asm/processor.h | 44 +-
arch/arm64/include/asm/spectre.h | 32 +
arch/arm64/include/asm/stage2_pgtable.h | 215 ----
arch/arm64/include/uapi/asm/kvm.h | 25 +
arch/arm64/kernel/Makefile | 3 +-
arch/arm64/kernel/cpu_errata.c | 487 +-------
arch/arm64/kernel/cpufeature.c | 51 +-
arch/arm64/kernel/entry.S | 10 +-
arch/arm64/kernel/hibernate.c | 6 +-
arch/arm64/kernel/image-vars.h | 5 -
arch/arm64/kernel/process.c | 23 +-
arch/arm64/kernel/proton-pack.c | 792 +++++++++++++
arch/arm64/kernel/ssbd.c | 129 ---
arch/arm64/kernel/suspend.c | 3 +-
arch/arm64/kernel/vmlinux.lds.S | 13 +
arch/arm64/kvm/Kconfig | 3 -
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/arm.c | 113 +-
arch/arm64/kvm/hyp.S | 34 -
arch/arm64/kvm/hyp/Makefile | 3 +-
arch/arm64/kvm/hyp/entry.S | 95 +-
arch/arm64/kvm/hyp/hyp-entry.S | 107 +-
arch/arm64/kvm/hyp/include/hyp/debug-sr.h | 4 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 48 +-
arch/arm64/kvm/hyp/nvhe/.gitignore | 2 +
arch/arm64/kvm/hyp/nvhe/Makefile | 62 +-
arch/arm64/kvm/hyp/nvhe/host.S | 187 +++
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 67 +-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 117 ++
arch/arm64/kvm/hyp/nvhe/hyp.lds.S | 19 +
arch/arm64/kvm/hyp/nvhe/switch.c | 52 +-
arch/arm64/kvm/hyp/nvhe/tlb.c | 2 -
arch/arm64/kvm/hyp/pgtable.c | 892 +++++++++++++++
arch/arm64/kvm/hyp/vhe/switch.c | 35 +-
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 4 +-
arch/arm64/kvm/hypercalls.c | 33 +-
arch/arm64/kvm/inject_fault.c | 1 +
arch/arm64/kvm/mmu.c | 1759 +++++------------------------
arch/arm64/kvm/pmu-emul.c | 195 +++-
arch/arm64/kvm/pmu.c | 13 +-
arch/arm64/kvm/psci.c | 74 +-
arch/arm64/kvm/pvtime.c | 29 +-
arch/arm64/kvm/reset.c | 44 +-
arch/arm64/kvm/sys_regs.c | 8 +-
arch/arm64/kvm/trace_arm.h | 16 +-
arch/arm64/kvm/trace_handle_exit.h | 6 +-
arch/arm64/kvm/vgic/vgic-debug.c | 24 +-
arch/arm64/kvm/vgic/vgic-v3.c | 4 +-
arch/x86/kvm/x86.c | 3 +
include/kvm/arm_pmu.h | 5 +
include/linux/arm-smccc.h | 74 +-
include/linux/kvm_host.h | 31 +-
include/uapi/linux/kvm.h | 1 +
71 files changed, 3658 insertions(+), 3576 deletions(-)
create mode 100644 arch/arm64/include/asm/hyp_image.h
create mode 100644 arch/arm64/include/asm/kvm_pgtable.h
create mode 100644 arch/arm64/include/asm/spectre.h
create mode 100644 arch/arm64/kernel/proton-pack.c
delete mode 100644 arch/arm64/kernel/ssbd.c
delete mode 100644 arch/arm64/kvm/hyp.S
create mode 100644 arch/arm64/kvm/hyp/nvhe/.gitignore
create mode 100644 arch/arm64/kvm/hyp/nvhe/host.S
create mode 100644 arch/arm64/kvm/hyp/nvhe/hyp-main.c
create mode 100644 arch/arm64/kvm/hyp/nvhe/hyp.lds.S
create mode 100644 arch/arm64/kvm/hyp/pgtable.c
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-10-10 21:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-10 16:38 [GIT PULL] KVM/arm64 updates for 5.10 Marc Zyngier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).