File Index
Files and directories
Sign in
FILE

cpucaps.h

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/include/asm/cpucaps.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2
 3#ifndef __ASM_CPUCAPS_H
 4#define __ASM_CPUCAPS_H
 5
 6#include <asm/cpucap-defs.h>
 7
 8#ifndef __ASSEMBLER__
 9#include <linux/types.h>
10/*
11 * Check whether a cpucap is possible at compiletime.
12 */
13static __always_inline bool
14cpucap_is_possible(const unsigned int cap)
15{
16	compiletime_assert(__builtin_constant_p(cap),
17			   "cap must be a constant");
18	compiletime_assert(cap < ARM64_NCAPS,
19			   "cap must be < ARM64_NCAPS");
20
21	switch (cap) {
22	case ARM64_HAS_PAN:
23		return IS_ENABLED(CONFIG_ARM64_PAN);
24	case ARM64_HAS_EPAN:
25		return IS_ENABLED(CONFIG_ARM64_EPAN);
26	case ARM64_SVE:
27		return IS_ENABLED(CONFIG_ARM64_SVE);
28	case ARM64_SME:
29	case ARM64_SME2:
30	case ARM64_SME_FA64:
31		return IS_ENABLED(CONFIG_ARM64_SME);
32	case ARM64_HAS_CNP:
33		return IS_ENABLED(CONFIG_ARM64_CNP);
34	case ARM64_HAS_ADDRESS_AUTH:
35	case ARM64_HAS_GENERIC_AUTH:
36		return IS_ENABLED(CONFIG_ARM64_PTR_AUTH);
37	case ARM64_HAS_GIC_PRIO_MASKING:
38		return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI);
39	case ARM64_MTE:
40		return IS_ENABLED(CONFIG_ARM64_MTE);
41	case ARM64_BTI:
42		return IS_ENABLED(CONFIG_ARM64_BTI);
43	case ARM64_HAS_TLB_RANGE:
44		return IS_ENABLED(CONFIG_ARM64_TLB_RANGE);
45	case ARM64_HAS_S1POE:
46		return IS_ENABLED(CONFIG_ARM64_POE);
47	case ARM64_HAS_GCS:
48		return IS_ENABLED(CONFIG_ARM64_GCS);
49	case ARM64_HAFT:
50		return IS_ENABLED(CONFIG_ARM64_HAFT);
51	case ARM64_UNMAP_KERNEL_AT_EL0:
52		return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0);
53	case ARM64_WORKAROUND_843419:
54		return IS_ENABLED(CONFIG_ARM64_ERRATUM_843419);
55	case ARM64_WORKAROUND_1742098:
56		return IS_ENABLED(CONFIG_ARM64_ERRATUM_1742098);
57	case ARM64_WORKAROUND_2645198:
58		return IS_ENABLED(CONFIG_ARM64_ERRATUM_2645198);
59	case ARM64_WORKAROUND_2658417:
60		return IS_ENABLED(CONFIG_ARM64_ERRATUM_2658417);
61	case ARM64_WORKAROUND_CAVIUM_23154:
62		return IS_ENABLED(CONFIG_CAVIUM_ERRATUM_23154);
63	case ARM64_WORKAROUND_NVIDIA_CARMEL_CNP:
64		return IS_ENABLED(CONFIG_NVIDIA_CARMEL_CNP_ERRATUM);
65	case ARM64_WORKAROUND_REPEAT_TLBI:
66		return IS_ENABLED(CONFIG_ARM64_WORKAROUND_REPEAT_TLBI);
67	case ARM64_WORKAROUND_SPECULATIVE_SSBS:
68		return IS_ENABLED(CONFIG_ARM64_ERRATUM_3194386);
69	case ARM64_MPAM:
70		/*
71		 * KVM MPAM support doesn't rely on the host kernel supporting MPAM.
72		*/
73		return true;
74	case ARM64_HAS_PMUV3:
75		return IS_ENABLED(CONFIG_HW_PERF_EVENTS);
76	}
77
78	return true;
79}
80#endif /* __ASSEMBLER__ */
81
82#endif /* __ASM_CPUCAPS_H */
~/ Read-only file preview.