arm64/sve: Detect SVE and activate runtime support
This patch enables detection of hardware SVE support via the cpufeatures framework, and reports its presence to the kernel and userspace via the new ARM64_SVE cpucap and HWCAP_SVE hwcap respectively. Userspace can also detect SVE using ID_AA64PFR0_EL1, using the cpufeatures MRS emulation. When running on hardware that supports SVE, this enables runtime kernel support for SVE, and allows user tasks to execute SVE instructions and make of the of the SVE-specific user/kernel interface extensions implemented by this series. Signed-off-by: Dave Martin <Dave.Martin@arm.com> Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
@@ -867,9 +867,10 @@ el0_svc:
|
||||
mov wscno, w8 // syscall number in w8
|
||||
mov wsc_nr, #__NR_syscalls
|
||||
|
||||
#ifndef CONFIG_ARM64_SVE
|
||||
#ifdef CONFIG_ARM64_SVE
|
||||
alternative_if_not ARM64_SVE
|
||||
b el0_svc_naked
|
||||
#else
|
||||
alternative_else_nop_endif
|
||||
tbz x16, #TIF_SVE, el0_svc_naked // Skip unless TIF_SVE set:
|
||||
bic x16, x16, #_TIF_SVE // discard SVE state
|
||||
str x16, [tsk, #TSK_TI_FLAGS]
|
||||
@@ -884,7 +885,7 @@ el0_svc:
|
||||
mrs x9, cpacr_el1
|
||||
bic x9, x9, #CPACR_EL1_ZEN_EL0EN // disable SVE for el0
|
||||
msr cpacr_el1, x9 // synchronised by eret to el0
|
||||
#endif /* CONFIG_ARM64_SVE */
|
||||
#endif
|
||||
|
||||
el0_svc_naked: // compat entry point
|
||||
stp x0, xscno, [sp, #S_ORIG_X0] // save the original x0 and syscall number
|
||||
|
Reference in New Issue
Block a user