Skip to content

Commit 4331f07

Browse files
committed
Merge tag 'riscv-for-linus-6.8-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux
Pull RISC-V updates from Palmer Dabbelt: - Support for many new extensions in hwprobe, along with a handful of cleanups - Various cleanups to our page table handling code, so we alwayse use {READ,WRITE}_ONCE - Support for the which-cpus flavor of hwprobe - Support for XIP kernels has been resurrected * tag 'riscv-for-linus-6.8-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (52 commits) riscv: hwprobe: export Zicond extension riscv: hwprobe: export Zacas ISA extension riscv: add ISA extension parsing for Zacas dt-bindings: riscv: add Zacas ISA extension description riscv: hwprobe: export Ztso ISA extension riscv: add ISA extension parsing for Ztso use linux/export.h rather than asm-generic/export.h riscv: Remove SHADOW_OVERFLOW_STACK_SIZE macro riscv; fix __user annotation in save_v_state() riscv: fix __user annotation in traps_misaligned.c riscv: Select ARCH_WANTS_NO_INSTR riscv: Remove obsolete rv32_defconfig file riscv: Allow disabling of BUILTIN_DTB for XIP riscv: Fixed wrong register in XIP_FIXUP_FLASH_OFFSET macro riscv: Make XIP bootable again riscv: Fix set_direct_map_default_noflush() to reset _PAGE_EXEC riscv: Fix module_alloc() that did not reset the linear mapping permissions riscv: Fix wrong usage of lm_alias() when splitting a huge linear mapping riscv: Check if the code to patch lies in the exit section riscv: Use the same CPU operations for all CPUs ...
2 parents 6cff79f + cb51bfe commit 4331f07

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1471
-726
lines changed

Documentation/arch/riscv/hwprobe.rst

Lines changed: 115 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,34 @@ is defined in <asm/hwprobe.h>::
1212
};
1313

1414
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,
1616
unsigned int flags);
1717

1818
The arguments are split into three groups: an array of key-value pairs, a CPU
1919
set, and some flags. The key-value pairs are supplied with a count. Userspace
2020
must prepopulate the key field for each element, and the kernel will fill in the
2121
value if the key is recognized. If a key is unknown to the kernel, its key field
2222
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.
2943

3044
On success 0 is returned, on failure a negative error code is returned.
3145

@@ -80,6 +94,100 @@ The following keys are defined:
8094
* :c:macro:`RISCV_HWPROBE_EXT_ZICBOZ`: The Zicboz extension is supported, as
8195
ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
8296

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+
83191
* :c:macro:`RISCV_HWPROBE_KEY_CPUPERF_0`: A bitmask that contains performance
84192
information about the selected set of processors.
85193

Documentation/devicetree/bindings/riscv/cpus.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ properties:
3232
oneOf:
3333
- items:
3434
- enum:
35+
- amd,mbv32
3536
- andestech,ax45mp
3637
- canaan,k210
3738
- sifive,bullet0

0 commit comments

Comments
 (0)