* [GIT PULL] KVM/arm64 updates for 6.5
@ 2023-06-23 14:50 Oliver Upton
2023-07-01 11:07 ` Paolo Bonzini
0 siblings, 1 reply; 2+ messages in thread
From: Oliver Upton @ 2023-06-23 14:50 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Marc Zyngier, Will Deacon, Ricardo Koller, Fuad Tabba,
Quentin Perret, Jing Zhang, Dan Carpenter, Arnd Bergmann, kvmarm,
kvm
Hi Paolo,
Here are the KVM/arm64 updates for 6.5. Note that the for-next/module-alloc
branch was merged to resolve a nontrivial conflict with the arm64 tree.
There is still an outstanding conflict with the arm64 tree with a rather
straightforward resolution, I've included mine in the diff at the end.
I will be handling fixes for 6.5, so please expect subsequent pulls to
be coming from me. Marc will take over starting with the 6.6 merge
window.
--
Thanks,
Oliver
The following changes since commit 44c026a73be8038f03dbdeef028b642880cf1511:
Linux 6.4-rc3 (2023-05-21 14:05:48 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-6.5
for you to fetch changes up to 192df2aa0113ddddee2a93e453ff46610807b425:
KVM: arm64: Fix misuse of KVM_ARM_VCPU_POWER_OFF bit index (2023-06-22 17:17:14 +0000)
----------------------------------------------------------------
KVM/arm64 updates for 6.5
- Eager page splitting optimization for dirty logging, optionally
allowing for a VM to avoid the cost of block splitting in the stage-2
fault path.
- Arm FF-A proxy for pKVM, allowing a pKVM host to safely interact with
services that live in the Secure world. pKVM intervenes on FF-A calls
to guarantee the host doesn't misuse memory donated to the hyp or a
pKVM guest.
- Support for running the split hypervisor with VHE enabled, known as
'hVHE' mode. This is extremely useful for testing the split
hypervisor on VHE-only systems, and paves the way for new use cases
that depend on having two TTBRs available at EL2.
- Generalized framework for configurable ID registers from userspace.
KVM/arm64 currently prevents arbitrary CPU feature set configuration
from userspace, but the intent is to relax this limitation and allow
userspace to select a feature set consistent with the CPU.
- Enable the use of Branch Target Identification (FEAT_BTI) in the
hypervisor.
- Use a separate set of pointer authentication keys for the hypervisor
when running in protected mode, as the host is untrusted at runtime.
- Ensure timer IRQs are consistently released in the init failure
paths.
- Avoid trapping CTR_EL0 on systems with Enhanced Virtualization Traps
(FEAT_EVT), as it is a register commonly read from userspace.
- Erratum workaround for the upcoming AmpereOne part, which has broken
hardware A/D state management.
As a consequence of the hVHE series reworking the arm64 software
features framework, the for-next/module-alloc branch from the arm64 tree
comes along for the ride.
----------------------------------------------------------------
Arnd Bergmann (1):
arm64: kvm: avoid overflow in integer division
Dan Carpenter (1):
KVM: arm64: timers: Fix resource leaks in kvm_timer_hyp_init()
Fuad Tabba (1):
KVM: arm64: Handle FFA_FEATURES call from the host
Jing Zhang (5):
KVM: arm64: Reuse fields of sys_reg_desc for idreg
KVM: arm64: Save ID registers' sanitized value per guest
KVM: arm64: Use arm64_ftr_bits to sanitise ID register writes
KVM: arm64: Use generic sanitisation for ID_(AA64)DFR0_EL1
KVM: arm64: Use generic sanitisation for ID_AA64PFR0_EL1
Marc Zyngier (19):
KVM: arm64: Use local TLBI on permission relaxation
KVM: arm64: Relax trapping of CTR_EL0 when FEAT_EVT is available
KVM: arm64: Drop is_kernel_in_hyp_mode() from __invalidate_icache_guest_page()
arm64: Prevent the use of is_kernel_in_hyp_mode() in hypervisor code
arm64: Turn kaslr_feature_override into a generic SW feature override
arm64: Add KVM_HVHE capability and has_hvhe() predicate
arm64: Don't enable VHE for the kernel if OVERRIDE_HVHE is set
arm64: Allow EL1 physical timer access when running VHE
arm64: Use CPACR_EL1 format to set CPTR_EL2 when E2H is set
KVM: arm64: Remove alternatives from sysreg accessors in VHE hypervisor context
KVM: arm64: Key use of VHE instructions in nVHE code off ARM64_KVM_HVHE
KVM: arm64: Force HCR_EL2.E2H when ARM64_KVM_HVHE is set
KVM: arm64: Disable TTBR1_EL2 when using ARM64_KVM_HVHE
KVM: arm64: Adjust EL2 stage-1 leaf AP bits when ARM64_KVM_HVHE is set
KVM: arm64: Rework CPTR_EL2 programming for HVHE configuration
KVM: arm64: Program the timer traps with VHE layout in hVHE mode
KVM: arm64: Force HCR_E2H in guest context when ARM64_KVM_HVHE is set
arm64: Allow arm64_sw.hvhe on command line
KVM: arm64: Fix hVHE init on CPUs where HCR_EL2.E2H is not RES1
Mark Rutland (6):
arm64: module: remove old !KASAN_VMALLOC logic
arm64: kasan: remove !KASAN_VMALLOC remnants
arm64: kaslr: split kaslr/module initialization
arm64: module: move module randomization to module.c
arm64: module: mandate MODULE_PLTS
arm64: module: rework module VA range selection
Mostafa Saleh (2):
KVM: arm64: Use BTI for nvhe
KVM: arm64: Use different pointer authentication keys for pKVM
Oliver Upton (17):
KVM: arm64: Separate out feature sanitisation and initialisation
KVM: arm64: Relax invariance of KVM_ARM_VCPU_POWER_OFF
KVM: arm64: Make vCPU feature flags consistent VM-wide
KVM: arm64: Rewrite IMPDEF PMU version as NI
KVM: arm64: Handle ID register reads using the VM-wide values
KVM: arm64: Rip out the vestiges of the 'old' ID register scheme
Merge branch kvm-arm64/eager-page-splitting into kvmarm/next
Merge branch kvm-arm64/ffa-proxy into kvmarm/next
Merge branch kvm-arm64/hvhe into kvmarm/next
Merge branch for-next/module-alloc into kvmarm/next
Merge branch kvm-arm64/configurable-id-regs into kvmarm/next
Merge branch kvm-arm64/misc into kvmarm/next
arm64: errata: Mitigate Ampere1 erratum AC03_CPU_38 at stage-2
KVM: arm64: Refactor HFGxTR configuration into separate helpers
KVM: arm64: Prevent guests from enabling HA/HD on Ampere1
Merge branch kvm-arm64/ampere1-hafdbs-mitigation into kvmarm/next
KVM: arm64: Fix misuse of KVM_ARM_VCPU_POWER_OFF bit index
Quentin Perret (1):
KVM: arm64: pkvm: Add support for fragmented FF-A descriptors
Ricardo Koller (11):
KVM: arm64: Rename free_removed to free_unlinked
KVM: arm64: Add KVM_PGTABLE_WALK flags for skipping CMOs and BBM TLBIs
KVM: arm64: Add helper for creating unlinked stage2 subtrees
KVM: arm64: Export kvm_are_all_memslots_empty()
KVM: arm64: Add KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE
KVM: arm64: Add kvm_pgtable_stage2_split()
KVM: arm64: Refactor kvm_arch_commit_memory_region()
KVM: arm64: Add kvm_uninit_stage2_mmu()
KVM: arm64: Split huge pages when dirty logging is enabled
KVM: arm64: Open-code kvm_mmu_write_protect_pt_masked()
KVM: arm64: Split huge pages during KVM_CLEAR_DIRTY_LOG
Will Deacon (8):
KVM: arm64: Block unsafe FF-A calls from the host
KVM: arm64: Probe FF-A version and host/hyp partition ID during init
KVM: arm64: Allocate pages for hypervisor FF-A mailboxes
KVM: arm64: Handle FFA_RXTX_MAP and FFA_RXTX_UNMAP calls from the host
KVM: arm64: Add FF-A helpers to share/unshare memory with secure world
KVM: arm64: Handle FFA_MEM_SHARE calls from the host
KVM: arm64: Handle FFA_MEM_RECLAIM calls from the host
KVM: arm64: Handle FFA_MEM_LEND calls from the host
Documentation/arm64/memory.rst | 8 +-
Documentation/arm64/silicon-errata.rst | 3 +
Documentation/virt/kvm/api.rst | 27 +
arch/arm64/Kconfig | 47 +-
arch/arm64/include/asm/cpufeature.h | 6 +
arch/arm64/include/asm/el2_setup.h | 27 +-
arch/arm64/include/asm/kvm_arm.h | 7 +-
arch/arm64/include/asm/kvm_asm.h | 4 +
arch/arm64/include/asm/kvm_emulate.h | 46 +-
arch/arm64/include/asm/kvm_host.h | 61 ++-
arch/arm64/include/asm/kvm_hyp.h | 37 +-
arch/arm64/include/asm/kvm_mmu.h | 4 +-
arch/arm64/include/asm/kvm_pgtable.h | 79 ++-
arch/arm64/include/asm/kvm_pkvm.h | 21 +
arch/arm64/include/asm/memory.h | 16 +-
arch/arm64/include/asm/module.h | 8 -
arch/arm64/include/asm/module.lds.h | 2 -
arch/arm64/include/asm/sysreg.h | 1 +
arch/arm64/include/asm/virt.h | 12 +-
arch/arm64/kernel/Makefile | 3 +-
arch/arm64/kernel/cpu_errata.c | 7 +
arch/arm64/kernel/cpufeature.c | 34 +-
arch/arm64/kernel/ftrace.c | 8 +-
arch/arm64/kernel/head.S | 2 +
arch/arm64/kernel/hyp-stub.S | 10 +-
arch/arm64/kernel/idreg-override.c | 25 +-
arch/arm64/kernel/kaslr.c | 87 +--
arch/arm64/kernel/module.c | 159 ++++--
arch/arm64/kernel/setup.c | 2 +
arch/arm64/kvm/arch_timer.c | 14 +-
arch/arm64/kvm/arm.c | 201 +++++--
arch/arm64/kvm/fpsimd.c | 4 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 101 +++-
arch/arm64/kvm/hyp/include/nvhe/ffa.h | 17 +
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 3 +
arch/arm64/kvm/hyp/nvhe/Makefile | 2 +-
arch/arm64/kvm/hyp/nvhe/ffa.c | 762 ++++++++++++++++++++++++++
arch/arm64/kvm/hyp/nvhe/host.S | 36 +-
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 32 +-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 19 +-
arch/arm64/kvm/hyp/nvhe/mem_protect.c | 74 ++-
arch/arm64/kvm/hyp/nvhe/pkvm.c | 27 +-
arch/arm64/kvm/hyp/nvhe/setup.c | 11 +
arch/arm64/kvm/hyp/nvhe/switch.c | 28 +-
arch/arm64/kvm/hyp/nvhe/timer-sr.c | 16 +-
arch/arm64/kvm/hyp/nvhe/tlb.c | 52 ++
arch/arm64/kvm/hyp/pgtable.c | 228 +++++++-
arch/arm64/kvm/hyp/vhe/switch.c | 2 +-
arch/arm64/kvm/hyp/vhe/tlb.c | 32 ++
arch/arm64/kvm/mmu.c | 207 +++++--
arch/arm64/kvm/pkvm.c | 1 +
arch/arm64/kvm/reset.c | 58 --
arch/arm64/kvm/sys_regs.c | 505 ++++++++++++-----
arch/arm64/kvm/sys_regs.h | 22 +-
arch/arm64/mm/kasan_init.c | 17 +-
arch/arm64/tools/cpucaps | 3 +
include/kvm/arm_pmu.h | 8 +-
include/linux/arm_ffa.h | 8 +
include/linux/kvm_host.h | 2 +
include/uapi/linux/kvm.h | 2 +
virt/kvm/kvm_main.c | 3 +-
61 files changed, 2631 insertions(+), 619 deletions(-)
create mode 100644 arch/arm64/kvm/hyp/include/nvhe/ffa.h
create mode 100644 arch/arm64/kvm/hyp/nvhe/ffa.c
--
diff --cc arch/arm64/kernel/cpufeature.c
index 3d93147179a0,6ea7f23b1287..000000000000
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@@ -2656,23 -2662,27 +2677,44 @@@ static const struct arm64_cpu_capabilit
.cpu_enable = cpu_enable_dit,
ARM64_CPUID_FIELDS(ID_AA64PFR0_EL1, DIT, IMP)
},
+ {
+ .desc = "Memory Copy and Memory Set instructions",
+ .capability = ARM64_HAS_MOPS,
+ .type = ARM64_CPUCAP_SYSTEM_FEATURE,
+ .matches = has_cpuid_feature,
+ .cpu_enable = cpu_enable_mops,
+ ARM64_CPUID_FIELDS(ID_AA64ISAR2_EL1, MOPS, IMP)
+ },
+ {
+ .capability = ARM64_HAS_TCR2,
+ .type = ARM64_CPUCAP_SYSTEM_FEATURE,
+ .matches = has_cpuid_feature,
+ ARM64_CPUID_FIELDS(ID_AA64MMFR3_EL1, TCRX, IMP)
+ },
+ {
+ .desc = "Stage-1 Permission Indirection Extension (S1PIE)",
+ .capability = ARM64_HAS_S1PIE,
+ .type = ARM64_CPUCAP_BOOT_CPU_FEATURE,
+ .matches = has_cpuid_feature,
+ ARM64_CPUID_FIELDS(ID_AA64MMFR3_EL1, S1PIE, IMP)
+ },
+ {
+ .desc = "VHE for hypervisor only",
+ .capability = ARM64_KVM_HVHE,
+ .type = ARM64_CPUCAP_SYSTEM_FEATURE,
+ .matches = hvhe_possible,
+ },
+ {
+ .desc = "Enhanced Virtualization Traps",
+ .capability = ARM64_HAS_EVT,
+ .type = ARM64_CPUCAP_SYSTEM_FEATURE,
+ .sys_reg = SYS_ID_AA64MMFR2_EL1,
+ .sign = FTR_UNSIGNED,
+ .field_pos = ID_AA64MMFR2_EL1_EVT_SHIFT,
+ .field_width = 4,
+ .min_field_value = ID_AA64MMFR2_EL1_EVT_IMP,
+ .matches = has_cpuid_feature,
+ },
{},
};
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [GIT PULL] KVM/arm64 updates for 6.5
2023-06-23 14:50 [GIT PULL] KVM/arm64 updates for 6.5 Oliver Upton
@ 2023-07-01 11:07 ` Paolo Bonzini
0 siblings, 0 replies; 2+ messages in thread
From: Paolo Bonzini @ 2023-07-01 11:07 UTC (permalink / raw)
To: Oliver Upton
Cc: Marc Zyngier, Will Deacon, Ricardo Koller, Fuad Tabba,
Quentin Perret, Jing Zhang, Dan Carpenter, Arnd Bergmann, kvmarm,
kvm
On Fri, Jun 23, 2023 at 4:50 PM Oliver Upton <oliver.upton@linux.dev> wrote:
>
> Hi Paolo,
>
> Here are the KVM/arm64 updates for 6.5. Note that the for-next/module-alloc
> branch was merged to resolve a nontrivial conflict with the arm64 tree.
>
> There is still an outstanding conflict with the arm64 tree with a rather
> straightforward resolution, I've included mine in the diff at the end.
>
> I will be handling fixes for 6.5, so please expect subsequent pulls to
> be coming from me. Marc will take over starting with the 6.6 merge
> window.
Pulled, thanks for telling me about the conflict. :)
Paolo
> --
> Thanks,
> Oliver
>
> The following changes since commit 44c026a73be8038f03dbdeef028b642880cf1511:
>
> Linux 6.4-rc3 (2023-05-21 14:05:48 -0700)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-6.5
>
> for you to fetch changes up to 192df2aa0113ddddee2a93e453ff46610807b425:
>
> KVM: arm64: Fix misuse of KVM_ARM_VCPU_POWER_OFF bit index (2023-06-22 17:17:14 +0000)
>
> ----------------------------------------------------------------
> KVM/arm64 updates for 6.5
>
> - Eager page splitting optimization for dirty logging, optionally
> allowing for a VM to avoid the cost of block splitting in the stage-2
> fault path.
>
> - Arm FF-A proxy for pKVM, allowing a pKVM host to safely interact with
> services that live in the Secure world. pKVM intervenes on FF-A calls
> to guarantee the host doesn't misuse memory donated to the hyp or a
> pKVM guest.
>
> - Support for running the split hypervisor with VHE enabled, known as
> 'hVHE' mode. This is extremely useful for testing the split
> hypervisor on VHE-only systems, and paves the way for new use cases
> that depend on having two TTBRs available at EL2.
>
> - Generalized framework for configurable ID registers from userspace.
> KVM/arm64 currently prevents arbitrary CPU feature set configuration
> from userspace, but the intent is to relax this limitation and allow
> userspace to select a feature set consistent with the CPU.
>
> - Enable the use of Branch Target Identification (FEAT_BTI) in the
> hypervisor.
>
> - Use a separate set of pointer authentication keys for the hypervisor
> when running in protected mode, as the host is untrusted at runtime.
>
> - Ensure timer IRQs are consistently released in the init failure
> paths.
>
> - Avoid trapping CTR_EL0 on systems with Enhanced Virtualization Traps
> (FEAT_EVT), as it is a register commonly read from userspace.
>
> - Erratum workaround for the upcoming AmpereOne part, which has broken
> hardware A/D state management.
>
> As a consequence of the hVHE series reworking the arm64 software
> features framework, the for-next/module-alloc branch from the arm64 tree
> comes along for the ride.
>
> ----------------------------------------------------------------
> Arnd Bergmann (1):
> arm64: kvm: avoid overflow in integer division
>
> Dan Carpenter (1):
> KVM: arm64: timers: Fix resource leaks in kvm_timer_hyp_init()
>
> Fuad Tabba (1):
> KVM: arm64: Handle FFA_FEATURES call from the host
>
> Jing Zhang (5):
> KVM: arm64: Reuse fields of sys_reg_desc for idreg
> KVM: arm64: Save ID registers' sanitized value per guest
> KVM: arm64: Use arm64_ftr_bits to sanitise ID register writes
> KVM: arm64: Use generic sanitisation for ID_(AA64)DFR0_EL1
> KVM: arm64: Use generic sanitisation for ID_AA64PFR0_EL1
>
> Marc Zyngier (19):
> KVM: arm64: Use local TLBI on permission relaxation
> KVM: arm64: Relax trapping of CTR_EL0 when FEAT_EVT is available
> KVM: arm64: Drop is_kernel_in_hyp_mode() from __invalidate_icache_guest_page()
> arm64: Prevent the use of is_kernel_in_hyp_mode() in hypervisor code
> arm64: Turn kaslr_feature_override into a generic SW feature override
> arm64: Add KVM_HVHE capability and has_hvhe() predicate
> arm64: Don't enable VHE for the kernel if OVERRIDE_HVHE is set
> arm64: Allow EL1 physical timer access when running VHE
> arm64: Use CPACR_EL1 format to set CPTR_EL2 when E2H is set
> KVM: arm64: Remove alternatives from sysreg accessors in VHE hypervisor context
> KVM: arm64: Key use of VHE instructions in nVHE code off ARM64_KVM_HVHE
> KVM: arm64: Force HCR_EL2.E2H when ARM64_KVM_HVHE is set
> KVM: arm64: Disable TTBR1_EL2 when using ARM64_KVM_HVHE
> KVM: arm64: Adjust EL2 stage-1 leaf AP bits when ARM64_KVM_HVHE is set
> KVM: arm64: Rework CPTR_EL2 programming for HVHE configuration
> KVM: arm64: Program the timer traps with VHE layout in hVHE mode
> KVM: arm64: Force HCR_E2H in guest context when ARM64_KVM_HVHE is set
> arm64: Allow arm64_sw.hvhe on command line
> KVM: arm64: Fix hVHE init on CPUs where HCR_EL2.E2H is not RES1
>
> Mark Rutland (6):
> arm64: module: remove old !KASAN_VMALLOC logic
> arm64: kasan: remove !KASAN_VMALLOC remnants
> arm64: kaslr: split kaslr/module initialization
> arm64: module: move module randomization to module.c
> arm64: module: mandate MODULE_PLTS
> arm64: module: rework module VA range selection
>
> Mostafa Saleh (2):
> KVM: arm64: Use BTI for nvhe
> KVM: arm64: Use different pointer authentication keys for pKVM
>
> Oliver Upton (17):
> KVM: arm64: Separate out feature sanitisation and initialisation
> KVM: arm64: Relax invariance of KVM_ARM_VCPU_POWER_OFF
> KVM: arm64: Make vCPU feature flags consistent VM-wide
> KVM: arm64: Rewrite IMPDEF PMU version as NI
> KVM: arm64: Handle ID register reads using the VM-wide values
> KVM: arm64: Rip out the vestiges of the 'old' ID register scheme
> Merge branch kvm-arm64/eager-page-splitting into kvmarm/next
> Merge branch kvm-arm64/ffa-proxy into kvmarm/next
> Merge branch kvm-arm64/hvhe into kvmarm/next
> Merge branch for-next/module-alloc into kvmarm/next
> Merge branch kvm-arm64/configurable-id-regs into kvmarm/next
> Merge branch kvm-arm64/misc into kvmarm/next
> arm64: errata: Mitigate Ampere1 erratum AC03_CPU_38 at stage-2
> KVM: arm64: Refactor HFGxTR configuration into separate helpers
> KVM: arm64: Prevent guests from enabling HA/HD on Ampere1
> Merge branch kvm-arm64/ampere1-hafdbs-mitigation into kvmarm/next
> KVM: arm64: Fix misuse of KVM_ARM_VCPU_POWER_OFF bit index
>
> Quentin Perret (1):
> KVM: arm64: pkvm: Add support for fragmented FF-A descriptors
>
> Ricardo Koller (11):
> KVM: arm64: Rename free_removed to free_unlinked
> KVM: arm64: Add KVM_PGTABLE_WALK flags for skipping CMOs and BBM TLBIs
> KVM: arm64: Add helper for creating unlinked stage2 subtrees
> KVM: arm64: Export kvm_are_all_memslots_empty()
> KVM: arm64: Add KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE
> KVM: arm64: Add kvm_pgtable_stage2_split()
> KVM: arm64: Refactor kvm_arch_commit_memory_region()
> KVM: arm64: Add kvm_uninit_stage2_mmu()
> KVM: arm64: Split huge pages when dirty logging is enabled
> KVM: arm64: Open-code kvm_mmu_write_protect_pt_masked()
> KVM: arm64: Split huge pages during KVM_CLEAR_DIRTY_LOG
>
> Will Deacon (8):
> KVM: arm64: Block unsafe FF-A calls from the host
> KVM: arm64: Probe FF-A version and host/hyp partition ID during init
> KVM: arm64: Allocate pages for hypervisor FF-A mailboxes
> KVM: arm64: Handle FFA_RXTX_MAP and FFA_RXTX_UNMAP calls from the host
> KVM: arm64: Add FF-A helpers to share/unshare memory with secure world
> KVM: arm64: Handle FFA_MEM_SHARE calls from the host
> KVM: arm64: Handle FFA_MEM_RECLAIM calls from the host
> KVM: arm64: Handle FFA_MEM_LEND calls from the host
>
> Documentation/arm64/memory.rst | 8 +-
> Documentation/arm64/silicon-errata.rst | 3 +
> Documentation/virt/kvm/api.rst | 27 +
> arch/arm64/Kconfig | 47 +-
> arch/arm64/include/asm/cpufeature.h | 6 +
> arch/arm64/include/asm/el2_setup.h | 27 +-
> arch/arm64/include/asm/kvm_arm.h | 7 +-
> arch/arm64/include/asm/kvm_asm.h | 4 +
> arch/arm64/include/asm/kvm_emulate.h | 46 +-
> arch/arm64/include/asm/kvm_host.h | 61 ++-
> arch/arm64/include/asm/kvm_hyp.h | 37 +-
> arch/arm64/include/asm/kvm_mmu.h | 4 +-
> arch/arm64/include/asm/kvm_pgtable.h | 79 ++-
> arch/arm64/include/asm/kvm_pkvm.h | 21 +
> arch/arm64/include/asm/memory.h | 16 +-
> arch/arm64/include/asm/module.h | 8 -
> arch/arm64/include/asm/module.lds.h | 2 -
> arch/arm64/include/asm/sysreg.h | 1 +
> arch/arm64/include/asm/virt.h | 12 +-
> arch/arm64/kernel/Makefile | 3 +-
> arch/arm64/kernel/cpu_errata.c | 7 +
> arch/arm64/kernel/cpufeature.c | 34 +-
> arch/arm64/kernel/ftrace.c | 8 +-
> arch/arm64/kernel/head.S | 2 +
> arch/arm64/kernel/hyp-stub.S | 10 +-
> arch/arm64/kernel/idreg-override.c | 25 +-
> arch/arm64/kernel/kaslr.c | 87 +--
> arch/arm64/kernel/module.c | 159 ++++--
> arch/arm64/kernel/setup.c | 2 +
> arch/arm64/kvm/arch_timer.c | 14 +-
> arch/arm64/kvm/arm.c | 201 +++++--
> arch/arm64/kvm/fpsimd.c | 4 +-
> arch/arm64/kvm/hyp/include/hyp/switch.h | 101 +++-
> arch/arm64/kvm/hyp/include/nvhe/ffa.h | 17 +
> arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 3 +
> arch/arm64/kvm/hyp/nvhe/Makefile | 2 +-
> arch/arm64/kvm/hyp/nvhe/ffa.c | 762 ++++++++++++++++++++++++++
> arch/arm64/kvm/hyp/nvhe/host.S | 36 +-
> arch/arm64/kvm/hyp/nvhe/hyp-init.S | 32 +-
> arch/arm64/kvm/hyp/nvhe/hyp-main.c | 19 +-
> arch/arm64/kvm/hyp/nvhe/mem_protect.c | 74 ++-
> arch/arm64/kvm/hyp/nvhe/pkvm.c | 27 +-
> arch/arm64/kvm/hyp/nvhe/setup.c | 11 +
> arch/arm64/kvm/hyp/nvhe/switch.c | 28 +-
> arch/arm64/kvm/hyp/nvhe/timer-sr.c | 16 +-
> arch/arm64/kvm/hyp/nvhe/tlb.c | 52 ++
> arch/arm64/kvm/hyp/pgtable.c | 228 +++++++-
> arch/arm64/kvm/hyp/vhe/switch.c | 2 +-
> arch/arm64/kvm/hyp/vhe/tlb.c | 32 ++
> arch/arm64/kvm/mmu.c | 207 +++++--
> arch/arm64/kvm/pkvm.c | 1 +
> arch/arm64/kvm/reset.c | 58 --
> arch/arm64/kvm/sys_regs.c | 505 ++++++++++++-----
> arch/arm64/kvm/sys_regs.h | 22 +-
> arch/arm64/mm/kasan_init.c | 17 +-
> arch/arm64/tools/cpucaps | 3 +
> include/kvm/arm_pmu.h | 8 +-
> include/linux/arm_ffa.h | 8 +
> include/linux/kvm_host.h | 2 +
> include/uapi/linux/kvm.h | 2 +
> virt/kvm/kvm_main.c | 3 +-
> 61 files changed, 2631 insertions(+), 619 deletions(-)
> create mode 100644 arch/arm64/kvm/hyp/include/nvhe/ffa.h
> create mode 100644 arch/arm64/kvm/hyp/nvhe/ffa.c
>
> --
> diff --cc arch/arm64/kernel/cpufeature.c
> index 3d93147179a0,6ea7f23b1287..000000000000
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@@ -2656,23 -2662,27 +2677,44 @@@ static const struct arm64_cpu_capabilit
> .cpu_enable = cpu_enable_dit,
> ARM64_CPUID_FIELDS(ID_AA64PFR0_EL1, DIT, IMP)
> },
> + {
> + .desc = "Memory Copy and Memory Set instructions",
> + .capability = ARM64_HAS_MOPS,
> + .type = ARM64_CPUCAP_SYSTEM_FEATURE,
> + .matches = has_cpuid_feature,
> + .cpu_enable = cpu_enable_mops,
> + ARM64_CPUID_FIELDS(ID_AA64ISAR2_EL1, MOPS, IMP)
> + },
> + {
> + .capability = ARM64_HAS_TCR2,
> + .type = ARM64_CPUCAP_SYSTEM_FEATURE,
> + .matches = has_cpuid_feature,
> + ARM64_CPUID_FIELDS(ID_AA64MMFR3_EL1, TCRX, IMP)
> + },
> + {
> + .desc = "Stage-1 Permission Indirection Extension (S1PIE)",
> + .capability = ARM64_HAS_S1PIE,
> + .type = ARM64_CPUCAP_BOOT_CPU_FEATURE,
> + .matches = has_cpuid_feature,
> + ARM64_CPUID_FIELDS(ID_AA64MMFR3_EL1, S1PIE, IMP)
> + },
> + {
> + .desc = "VHE for hypervisor only",
> + .capability = ARM64_KVM_HVHE,
> + .type = ARM64_CPUCAP_SYSTEM_FEATURE,
> + .matches = hvhe_possible,
> + },
> + {
> + .desc = "Enhanced Virtualization Traps",
> + .capability = ARM64_HAS_EVT,
> + .type = ARM64_CPUCAP_SYSTEM_FEATURE,
> + .sys_reg = SYS_ID_AA64MMFR2_EL1,
> + .sign = FTR_UNSIGNED,
> + .field_pos = ID_AA64MMFR2_EL1_EVT_SHIFT,
> + .field_width = 4,
> + .min_field_value = ID_AA64MMFR2_EL1_EVT_IMP,
> + .matches = has_cpuid_feature,
> + },
> {},
> };
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-07-01 11:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-23 14:50 [GIT PULL] KVM/arm64 updates for 6.5 Oliver Upton
2023-07-01 11:07 ` Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox