linux/arch/arm64/kvm
Oliver Upton 51ca4bffdd arm64: errata: Mitigate Ampere1 erratum AC03_CPU_38 at stage-2
commit 6df696cd9b upstream.

AmpereOne has an erratum in its implementation of FEAT_HAFDBS that
required disabling the feature on the design. This was done by reporting
the feature as not implemented in the ID register, although the
corresponding control bits were not actually RES0. This does not align
well with the requirements of the architecture, which mandates these
bits be RES0 if HAFDBS isn't implemented.

The kernel's use of stage-1 is unaffected, as the HA and HD bits are
only set if HAFDBS is detected in the ID register. KVM, on the other
hand, relies on the RES0 behavior at stage-2 to use the same value for
VTCR_EL2 on any cpu in the system. Mitigate the non-RES0 behavior by
leaving VTCR_EL2.HA clear on affected systems.

Cc: stable@vger.kernel.org
Cc: D Scott Phillips <scott@os.amperecomputing.com>
Cc: Darren Hart <darren@os.amperecomputing.com>
Acked-by: D Scott Phillips <scott@os.amperecomputing.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20230609220104.1836988-2-oliver.upton@linux.dev
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-07-23 13:54:07 +02:00
..
hyp arm64: errata: Mitigate Ampere1 erratum AC03_CPU_38 at stage-2 2023-07-23 13:54:07 +02:00
vgic KVM: arm64: Restore GICv2-on-GICv3 functionality 2023-06-07 16:38:25 +01:00
.gitignore KVM: arm64: Generate hyp_constants.h for the host 2021-12-06 08:37:03 +00:00
arch_timer.c Merge branch kvm-arm64/timer-vm-offsets into kvmarm-master/next 2023-04-21 09:36:40 +01:00
arm.c s390: 2023-05-01 12:06:20 -07:00
debug.c arm64: Drop SYS_ from SPE register defines 2023-01-19 18:30:22 +00:00
emulate-nested.c KVM: arm64: nv: Support virtual EL2 exceptions 2023-02-11 09:16:11 +00:00
fpsimd.c KVM: arm64: Clarify host SME state management 2023-04-21 13:46:20 +01:00
guest.c KVM/arm64 updates for 6.4 2023-04-26 15:46:52 -04:00
handle_exit.c KVM: arm64: Let errors from SMCCC emulation to reach userspace 2023-04-05 12:07:42 +01:00
hypercalls.c s390: 2023-05-01 12:06:20 -07:00
inject_fault.c KVM: arm64: Fix repeated words in comments 2023-04-21 13:46:04 +01:00
Kconfig kvm: Remove "select SRCU" 2023-04-05 13:47:42 +00:00
Makefile KVM: arm64: nv: Filter out unsupported features from ID regs 2023-02-11 10:13:30 +00:00
mmio.c KVM: arm64: Generalise VM features into a set of flags 2022-03-18 14:02:33 +00:00
mmu.c KVM: arm64: Check for kvm_vma_mte_allowed in the critical section 2023-03-16 23:42:56 +00:00
nested.c KVM: arm64: nv: Use reg_to_encoding() to get sysreg ID 2023-02-11 22:10:34 +00:00
pkvm.c KVM: arm64: Ensure CPU PMU probes before pKVM host de-privilege 2023-04-20 16:57:53 +01:00
pmu-emul.c KVM: arm64: Use raw_smp_processor_id() in kvm_pmu_probe_armpmu() 2023-06-07 16:48:34 +01:00
pmu.c KVM: arm64: PMU: Don't overwrite PMUSERENR with vcpu loaded 2023-06-04 17:19:36 +01:00
psci.c Merge branch kvm-arm64/smccc-filtering into kvmarm-master/next 2023-04-21 09:44:32 +01:00
pvtime.c KVM: MMU: Make the definition of 'INVALID_GPA' common 2023-01-19 21:48:38 +00:00
reset.c KVM: arm64: Avoid lock inversion when setting the VM register width 2023-03-29 14:08:31 +01:00
stacktrace.c arm64: stacktrace: track hyp stacks in unwinder's address space 2022-09-09 12:30:08 +01:00
sys_regs.c KVM: arm64: Handle trap of tagged Set/Way CMOs 2023-05-24 13:45:18 +01:00
sys_regs.h KVM: arm64: nv: Allow a sysreg to be hidden from userspace only 2023-02-11 10:13:29 +00:00
trace.h KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00
trace_arm.h KVM: arm64: nv: timers: Support hyp timer emulation 2023-03-30 19:01:10 +01:00
trace_handle_exit.h KVM: arm64: Upgrade trace_kvm_arm_set_dreg32() to 64bit 2021-08-20 11:12:18 +01:00
trng.c KVM: arm64: Implement the TRNG hypervisor call 2021-01-25 22:19:31 +00:00
va_layout.c arm64: alternatives: kvm: prepare for cap changes 2022-09-16 17:15:02 +01:00
vgic-sys-reg-v3.c KVM: arm64: vgic-v3: Convert userspace accessors over to FIELD_GET/FIELD_PREP 2022-07-17 11:55:33 +01:00
vmid.c KVM: arm64: Use the bitmap API to allocate bitmaps 2023-04-20 09:10:28 +01:00