kernel_samsung_a53x/arch/arm64/kernel
James Morse a52972cab7 arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space
[ Upstream commit 237405ebef580a7352a52129b2465c117145eafa ]

arm64 advertises hardware features to user-space via HWCAPs, and by
emulating access to the CPUs id registers. The cpufeature code has a
sanitised system-wide view of an id register, and a sanitised user-space
view of an id register, where some features use their 'safe' value
instead of the hardware value.

It is currently possible for a HWCAP to be advertised where the user-space
view of the id register does not show the feature as supported.
Erratum workaround need to remove both the HWCAP, and the feature from
the user-space view of the id register. This involves duplicating the
code, and spreading it over cpufeature.c and cpu_errata.c.

Make the HWCAP code use the user-space view of id registers. This ensures
the values never diverge, and allows erratum workaround to remove HWCAP
by modifying the user-space view of the id register.

Signed-off-by: James Morse <james.morse@arm.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20220909165938.3931307-2-james.morse@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
[ Mark: fixup lack of 'width' parameter ]
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:20:24 +01:00
..
probes Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso32 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
acpi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
acpi_numa.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
acpi_parking_protocol.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
alternative.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
armv8_deprecated.c arm64: armv8_deprecated: fix unused-function error 2024-11-08 11:26:06 +01:00
asm-offsets.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cacheinfo.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu-reset.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu-reset.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu_errata.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu_ops.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpufeature.c arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space 2024-11-23 23:20:24 +01:00
cpuidle.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpuinfo.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crash_core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crash_dump.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug-monitors.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
efi-entry.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
efi-header.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
efi-rt-wrapper.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
efi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
entry-common.c arm64: allow kprobes on EL0 handlers 2024-11-08 11:26:02 +01:00
entry-fpsimd.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
entry-ftrace.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
entry.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fpsimd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ftrace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
head.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hibernate-asm.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hibernate.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw_breakpoint.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hyp-stub.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
idreg-override.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
image-vars.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
image.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
insn.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
io.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jump_label.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kaslr.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kexec_image.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kgdb.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kuser32.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
machine_kexec.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
machine_kexec_file.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module-plts.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mte.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
paravirt.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
perf_callchain.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
perf_event.c drivers/perf: pmuv3: don't expose SW_INCR event in sysfs 2024-11-18 12:13:07 +01:00
perf_regs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pointer_auth.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
process.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
proton-pack.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
psci.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptrace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reloc_test_core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reloc_test_syms.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
relocate_kernel.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
return_address.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdei.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setup.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
signal.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
signal32.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sigreturn32.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sleep.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smccc-call.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp_spin_table.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stacktrace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
suspend.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sys.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sys32.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sys_compat.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
syscall.c security: samsung: defex_lsm: nuke 2024-06-15 16:20:49 -03:00
time.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
topology.c arch_topology: Rename freq_scale as arch_freq_scale 2024-11-17 17:45:22 +01:00
trace-events-emulation.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
traps.c arm64: allow kprobes on EL0 handlers 2024-11-08 11:26:02 +01:00
uh_entry.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmlinux.lds.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00