@@ -12,20 +12,34 @@ is defined in <asm/hwprobe.h>::
12
12
};
13
13
14
14
long sys_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
15
- size_t cpu_count , cpu_set_t *cpus,
15
+ size_t cpusetsize , cpu_set_t *cpus,
16
16
unsigned int flags);
17
17
18
18
The arguments are split into three groups: an array of key-value pairs, a CPU
19
19
set, and some flags. The key-value pairs are supplied with a count. Userspace
20
20
must prepopulate the key field for each element, and the kernel will fill in the
21
21
value if the key is recognized. If a key is unknown to the kernel, its key field
22
22
will be cleared to -1, and its value set to 0. The CPU set is defined by
23
- CPU_SET(3). For value-like keys (eg. vendor/arch/impl), the returned value will
24
- be only be valid if all CPUs in the given set have the same value. Otherwise -1
25
- will be returned. For boolean-like keys, the value returned will be a logical
26
- AND of the values for the specified CPUs. Usermode can supply NULL for cpus and
27
- 0 for cpu_count as a shortcut for all online CPUs. There are currently no flags,
28
- this value must be zero for future compatibility.
23
+ CPU_SET(3) with size ``cpusetsize `` bytes. For value-like keys (eg. vendor,
24
+ arch, impl), the returned value will only be valid if all CPUs in the given set
25
+ have the same value. Otherwise -1 will be returned. For boolean-like keys, the
26
+ value returned will be a logical AND of the values for the specified CPUs.
27
+ Usermode can supply NULL for ``cpus `` and 0 for ``cpusetsize `` as a shortcut for
28
+ all online CPUs. The currently supported flags are:
29
+
30
+ * :c:macro: `RISCV_HWPROBE_WHICH_CPUS `: This flag basically reverses the behavior
31
+ of sys_riscv_hwprobe(). Instead of populating the values of keys for a given
32
+ set of CPUs, the values of each key are given and the set of CPUs is reduced
33
+ by sys_riscv_hwprobe() to only those which match each of the key-value pairs.
34
+ How matching is done depends on the key type. For value-like keys, matching
35
+ means to be the exact same as the value. For boolean-like keys, matching
36
+ means the result of a logical AND of the pair's value with the CPU's value is
37
+ exactly the same as the pair's value. Additionally, when ``cpus `` is an empty
38
+ set, then it is initialized to all online CPUs which fit within it, i.e. the
39
+ CPU set returned is the reduction of all the online CPUs which can be
40
+ represented with a CPU set of size ``cpusetsize ``.
41
+
42
+ All other flags are reserved for future compatibility and must be zero.
29
43
30
44
On success 0 is returned, on failure a negative error code is returned.
31
45
@@ -80,6 +94,100 @@ The following keys are defined:
80
94
* :c:macro: `RISCV_HWPROBE_EXT_ZICBOZ `: The Zicboz extension is supported, as
81
95
ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
82
96
97
+ * :c:macro: `RISCV_HWPROBE_EXT_ZBC ` The Zbc extension is supported, as defined
98
+ in version 1.0 of the Bit-Manipulation ISA extensions.
99
+
100
+ * :c:macro: `RISCV_HWPROBE_EXT_ZBKB ` The Zbkb extension is supported, as
101
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
102
+
103
+ * :c:macro: `RISCV_HWPROBE_EXT_ZBKC ` The Zbkc extension is supported, as
104
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
105
+
106
+ * :c:macro: `RISCV_HWPROBE_EXT_ZBKX ` The Zbkx extension is supported, as
107
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
108
+
109
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKND ` The Zknd extension is supported, as
110
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
111
+
112
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKNE ` The Zkne extension is supported, as
113
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
114
+
115
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKNH ` The Zknh extension is supported, as
116
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
117
+
118
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKSED ` The Zksed extension is supported, as
119
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
120
+
121
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKSH ` The Zksh extension is supported, as
122
+ defined in version 1.0 of the Scalar Crypto ISA extensions.
123
+
124
+ * :c:macro: `RISCV_HWPROBE_EXT_ZKT ` The Zkt extension is supported, as defined
125
+ in version 1.0 of the Scalar Crypto ISA extensions.
126
+
127
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVBB `: The Zvbb extension is supported as
128
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
129
+
130
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVBC `: The Zvbc extension is supported as
131
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
132
+
133
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKB `: The Zvkb extension is supported as
134
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
135
+
136
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKG `: The Zvkg extension is supported as
137
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
138
+
139
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKNED `: The Zvkned extension is supported as
140
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
141
+
142
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKNHA `: The Zvknha extension is supported as
143
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
144
+
145
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKNHB `: The Zvknhb extension is supported as
146
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
147
+
148
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKSED `: The Zvksed extension is supported as
149
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
150
+
151
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKSH `: The Zvksh extension is supported as
152
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
153
+
154
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVKT `: The Zvkt extension is supported as
155
+ defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
156
+
157
+ * :c:macro: `RISCV_HWPROBE_EXT_ZFH `: The Zfh extension version 1.0 is supported
158
+ as defined in the RISC-V ISA manual.
159
+
160
+ * :c:macro: `RISCV_HWPROBE_EXT_ZFHMIN `: The Zfhmin extension version 1.0 is
161
+ supported as defined in the RISC-V ISA manual.
162
+
163
+ * :c:macro: `RISCV_HWPROBE_EXT_ZIHINTNTL `: The Zihintntl extension version 1.0
164
+ is supported as defined in the RISC-V ISA manual.
165
+
166
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVFH `: The Zvfh extension is supported as
167
+ defined in the RISC-V Vector manual starting from commit e2ccd0548d6c
168
+ ("Remove draft warnings from Zvfh[min]").
169
+
170
+ * :c:macro: `RISCV_HWPROBE_EXT_ZVFHMIN `: The Zvfhmin extension is supported as
171
+ defined in the RISC-V Vector manual starting from commit e2ccd0548d6c
172
+ ("Remove draft warnings from Zvfh[min]").
173
+
174
+ * :c:macro: `RISCV_HWPROBE_EXT_ZFA `: The Zfa extension is supported as
175
+ defined in the RISC-V ISA manual starting from commit 056b6ff467c7
176
+ ("Zfa is ratified").
177
+
178
+ * :c:macro: `RISCV_HWPROBE_EXT_ZTSO `: The Ztso extension is supported as
179
+ defined in the RISC-V ISA manual starting from commit 5618fb5a216b
180
+ ("Ztso is now ratified.")
181
+
182
+ * :c:macro: `RISCV_HWPROBE_EXT_ZACAS `: The Zacas extension is supported as
183
+ defined in the Atomic Compare-and-Swap (CAS) instructions manual starting
184
+ from commit 5059e0ca641c ("update to ratified").
185
+
186
+ * :c:macro: `RISCV_HWPROBE_EXT_ZICOND `: The Zicond extension is supported as
187
+ defined in the RISC-V Integer Conditional (Zicond) operations extension
188
+ manual starting from commit 95cf1f9 ("Add changes requested by Ved
189
+ during signoff")
190
+
83
191
* :c:macro: `RISCV_HWPROBE_KEY_CPUPERF_0 `: A bitmask that contains performance
84
192
information about the selected set of processors.
85
193
0 commit comments