Skip to content

Commit 4f6b6c2

Browse files
committed
Merge tag 'riscv-for-linus-6.5-mw2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux
Pull more RISC-V updates from Palmer Dabbelt: - A bunch of fixes/cleanups from the first part of the merge window, mostly related to ACPI and vector as those were large - Some documentation improvements, mostly related to the new code - The "riscv,isa" DT key is deprecated - Support for link-time dead code elimination - Support for minor fault registration in userfaultd - A handful of cleanups around CMO alternatives * tag 'riscv-for-linus-6.5-mw2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (23 commits) riscv: mm: mark noncoherent_supported as __ro_after_init riscv: mm: mark CBO relate initialization funcs as __init riscv: errata: thead: only set cbom size & noncoherent during boot riscv: Select HAVE_ARCH_USERFAULTFD_MINOR RISC-V: Document the ISA string parsing rules for ACPI risc-v: Fix order of IPI enablement vs RCU startup mm: riscv: fix an unsafe pte read in huge_pte_alloc() dt-bindings: riscv: deprecate riscv,isa RISC-V: drop error print from riscv_hartid_to_cpuid() riscv: Discard vector state on syscalls riscv: move memblock_allow_resize() after linear mapping is ready riscv: Enable ARCH_SUSPEND_POSSIBLE for s2idle riscv: vdso: include vdso/vsyscall.h for vdso_data selftests: Test RISC-V Vector's first-use handler riscv: vector: clear V-reg in the first-use trap riscv: vector: only enable interrupts in the first-use trap RISC-V: Fix up some vector state related build failures RISC-V: Document that V registers are clobbered on syscalls riscv: disable HAVE_LD_DEAD_CODE_DATA_ELIMINATION for LLD riscv: enable HAVE_LD_DEAD_CODE_DATA_ELIMINATION ...
2 parents 22dcc7d + e8605e8 commit 4f6b6c2

File tree

24 files changed

+450
-54
lines changed

24 files changed

+450
-54
lines changed

Documentation/devicetree/bindings/riscv/cpus.yaml

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ description: |
2525
2626
allOf:
2727
- $ref: /schemas/cpu.yaml#
28+
- $ref: extensions.yaml
2829

2930
properties:
3031
compatible:
@@ -82,25 +83,6 @@ properties:
8283
description:
8384
The blocksize in bytes for the Zicboz cache operations.
8485

85-
riscv,isa:
86-
description:
87-
Identifies the specific RISC-V instruction set architecture
88-
supported by the hart. These are documented in the RISC-V
89-
User-Level ISA document, available from
90-
https://riscv.org/specifications/
91-
92-
Due to revisions of the ISA specification, some deviations
93-
have arisen over time.
94-
Notably, riscv,isa was defined prior to the creation of the
95-
Zicntr, Zicsr, Zifencei and Zihpm extensions and thus "i"
96-
implies "zicntr_zicsr_zifencei_zihpm".
97-
98-
While the isa strings in ISA specification are case
99-
insensitive, letters in the riscv,isa string must be all
100-
lowercase.
101-
$ref: /schemas/types.yaml#/definitions/string
102-
pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[a-z])+)?(?:_[hsxz](?:[a-z])+)*$
103-
10486
# RISC-V has multiple properties for cache op block sizes as the sizes
10587
# differ between individual CBO extensions
10688
cache-op-block-size: false
@@ -139,8 +121,17 @@ properties:
139121
DMIPS/MHz, relative to highest capacity-dmips-mhz
140122
in the system.
141123

124+
anyOf:
125+
- required:
126+
- riscv,isa
127+
- required:
128+
- riscv,isa-base
129+
130+
dependencies:
131+
riscv,isa-base: [ "riscv,isa-extensions" ]
132+
riscv,isa-extensions: [ "riscv,isa-base" ]
133+
142134
required:
143-
- riscv,isa
144135
- interrupt-controller
145136

146137
unevaluatedProperties: false
@@ -160,7 +151,9 @@ examples:
160151
i-cache-sets = <128>;
161152
i-cache-size = <16384>;
162153
reg = <0>;
163-
riscv,isa = "rv64imac";
154+
riscv,isa-base = "rv64i";
155+
riscv,isa-extensions = "i", "m", "a", "c";
156+
164157
cpu_intc0: interrupt-controller {
165158
#interrupt-cells = <1>;
166159
compatible = "riscv,cpu-intc";
@@ -183,8 +176,10 @@ examples:
183176
i-tlb-size = <32>;
184177
mmu-type = "riscv,sv39";
185178
reg = <1>;
186-
riscv,isa = "rv64imafdc";
187179
tlb-split;
180+
riscv,isa-base = "rv64i";
181+
riscv,isa-extensions = "i", "m", "a", "f", "d", "c";
182+
188183
cpu_intc1: interrupt-controller {
189184
#interrupt-cells = <1>;
190185
compatible = "riscv,cpu-intc";
@@ -202,8 +197,10 @@ examples:
202197
device_type = "cpu";
203198
reg = <0>;
204199
compatible = "riscv";
205-
riscv,isa = "rv64imafdc";
206200
mmu-type = "riscv,sv48";
201+
riscv,isa-base = "rv64i";
202+
riscv,isa-extensions = "i", "m", "a", "f", "d", "c";
203+
207204
interrupt-controller {
208205
#interrupt-cells = <1>;
209206
interrupt-controller;
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR MIT)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/riscv/extensions.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: RISC-V ISA extensions
8+
9+
maintainers:
10+
- Paul Walmsley <[email protected]>
11+
- Palmer Dabbelt <[email protected]>
12+
- Conor Dooley <[email protected]>
13+
14+
description: |
15+
RISC-V has a large number of extensions, some of which are "standard"
16+
extensions, meaning they are ratified by RISC-V International, and others
17+
are "vendor" extensions.
18+
This document defines properties that indicate whether a hart supports a
19+
given extension.
20+
21+
Once a standard extension has been ratified, no changes in behaviour can be
22+
made without the creation of a new extension.
23+
The properties for standard extensions therefore map to their originally
24+
ratified states, with the exception of the I, Zicntr & Zihpm extensions.
25+
See the "i" property for more information.
26+
27+
select:
28+
properties:
29+
compatible:
30+
contains:
31+
const: riscv
32+
33+
properties:
34+
riscv,isa:
35+
description:
36+
Identifies the specific RISC-V instruction set architecture
37+
supported by the hart. These are documented in the RISC-V
38+
User-Level ISA document, available from
39+
https://riscv.org/specifications/
40+
41+
Due to revisions of the ISA specification, some deviations
42+
have arisen over time.
43+
Notably, riscv,isa was defined prior to the creation of the
44+
Zicntr, Zicsr, Zifencei and Zihpm extensions and thus "i"
45+
implies "zicntr_zicsr_zifencei_zihpm".
46+
47+
While the isa strings in ISA specification are case
48+
insensitive, letters in the riscv,isa string must be all
49+
lowercase.
50+
$ref: /schemas/types.yaml#/definitions/string
51+
pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[a-z])+)?(?:_[hsxz](?:[a-z])+)*$
52+
deprecated: true
53+
54+
riscv,isa-base:
55+
description:
56+
The base ISA implemented by this hart, as described by the 20191213
57+
version of the unprivileged ISA specification.
58+
enum:
59+
- rv32i
60+
- rv64i
61+
62+
riscv,isa-extensions:
63+
$ref: /schemas/types.yaml#/definitions/string-array
64+
minItems: 1
65+
description: Extensions supported by the hart.
66+
items:
67+
anyOf:
68+
# single letter extensions, in canonical order
69+
- const: i
70+
description: |
71+
The base integer instruction set, as ratified in the 20191213
72+
version of the unprivileged ISA specification.
73+
74+
This does not include Chapter 10, "Counters", which was moved into
75+
the Zicntr and Zihpm extensions after the ratification of the
76+
20191213 version of the unprivileged specification.
77+
78+
- const: m
79+
description:
80+
The standard M extension for integer multiplication and division, as
81+
ratified in the 20191213 version of the unprivileged ISA
82+
specification.
83+
84+
- const: a
85+
description:
86+
The standard A extension for atomic instructions, as ratified in the
87+
20191213 version of the unprivileged ISA specification.
88+
89+
- const: f
90+
description:
91+
The standard F extension for single-precision floating point, as
92+
ratified in the 20191213 version of the unprivileged ISA
93+
specification.
94+
95+
- const: d
96+
description:
97+
The standard D extension for double-precision floating-point, as
98+
ratified in the 20191213 version of the unprivileged ISA
99+
specification.
100+
101+
- const: q
102+
description:
103+
The standard Q extension for quad-precision floating-point, as
104+
ratified in the 20191213 version of the unprivileged ISA
105+
specification.
106+
107+
- const: c
108+
description:
109+
The standard C extension for compressed instructions, as ratified in
110+
the 20191213 version of the unprivileged ISA specification.
111+
112+
- const: v
113+
description:
114+
The standard V extension for vector operations, as ratified
115+
in-and-around commit 7a6c8ae ("Fix text that describes vfmv.v.f
116+
encoding") of the riscv-v-spec.
117+
118+
- const: h
119+
description:
120+
The standard H extension for hypervisors as ratified in the 20191213
121+
version of the privileged ISA specification.
122+
123+
# multi-letter extensions, sorted alphanumerically
124+
- const: smaia
125+
description: |
126+
The standard Smaia supervisor-level extension for the advanced
127+
interrupt architecture for machine-mode-visible csr and behavioural
128+
changes to interrupts as frozen at commit ccbddab ("Merge pull
129+
request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
130+
131+
- const: ssaia
132+
description: |
133+
The standard Ssaia supervisor-level extension for the advanced
134+
interrupt architecture for supervisor-mode-visible csr and
135+
behavioural changes to interrupts as frozen at commit ccbddab
136+
("Merge pull request #42 from riscv/jhauser-2023-RC4") of riscv-aia.
137+
138+
- const: sscofpmf
139+
description: |
140+
The standard Sscofpmf supervisor-level extension for count overflow
141+
and mode-based filtering as ratified at commit 01d1df0 ("Add ability
142+
to manually trigger workflow. (#2)") of riscv-count-overflow.
143+
144+
- const: sstc
145+
description: |
146+
The standard Sstc supervisor-level extension for time compare as
147+
ratified at commit 3f9ed34 ("Add ability to manually trigger
148+
workflow. (#2)") of riscv-time-compare.
149+
150+
- const: svinval
151+
description:
152+
The standard Svinval supervisor-level extension for fine-grained
153+
address-translation cache invalidation as ratified in the 20191213
154+
version of the privileged ISA specification.
155+
156+
- const: svnapot
157+
description:
158+
The standard Svnapot supervisor-level extensions for napot
159+
translation contiguity as ratified in the 20191213 version of the
160+
privileged ISA specification.
161+
162+
- const: svpbmt
163+
description:
164+
The standard Svpbmt supervisor-level extensions for page-based
165+
memory types as ratified in the 20191213 version of the privileged
166+
ISA specification.
167+
168+
- const: zba
169+
description: |
170+
The standard Zba bit-manipulation extension for address generation
171+
acceleration instructions as ratified at commit 6d33919 ("Merge pull
172+
request #158 from hirooih/clmul-fix-loop-end-condition") of
173+
riscv-bitmanip.
174+
175+
- const: zbb
176+
description: |
177+
The standard Zbb bit-manipulation extension for basic bit-manipulation
178+
as ratified at commit 6d33919 ("Merge pull request #158 from
179+
hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
180+
181+
- const: zbc
182+
description: |
183+
The standard Zbc bit-manipulation extension for carry-less
184+
multiplication as ratified at commit 6d33919 ("Merge pull request
185+
#158 from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
186+
187+
- const: zbs
188+
description: |
189+
The standard Zbs bit-manipulation extension for single-bit
190+
instructions as ratified at commit 6d33919 ("Merge pull request #158
191+
from hirooih/clmul-fix-loop-end-condition") of riscv-bitmanip.
192+
193+
- const: zicbom
194+
description:
195+
The standard Zicbom extension for base cache management operations as
196+
ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
197+
198+
- const: zicbop
199+
description:
200+
The standard Zicbop extension for cache-block prefetch instructions
201+
as ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of
202+
riscv-CMOs.
203+
204+
- const: zicboz
205+
description:
206+
The standard Zicboz extension for cache-block zeroing as ratified
207+
in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
208+
209+
- const: zicntr
210+
description:
211+
The standard Zicntr extension for base counters and timers, as
212+
ratified in the 20191213 version of the unprivileged ISA
213+
specification.
214+
215+
- const: zicsr
216+
description: |
217+
The standard Zicsr extension for control and status register
218+
instructions, as ratified in the 20191213 version of the
219+
unprivileged ISA specification.
220+
221+
This does not include Chapter 10, "Counters", which documents
222+
special case read-only CSRs, that were moved into the Zicntr and
223+
Zihpm extensions after the ratification of the 20191213 version of
224+
the unprivileged specification.
225+
226+
- const: zifencei
227+
description:
228+
The standard Zifencei extension for instruction-fetch fence, as
229+
ratified in the 20191213 version of the unprivileged ISA
230+
specification.
231+
232+
- const: zihintpause
233+
description:
234+
The standard Zihintpause extension for pause hints, as ratified in
235+
commit d8ab5c7 ("Zihintpause is ratified") of the riscv-isa-manual.
236+
237+
- const: zihpm
238+
description:
239+
The standard Zihpm extension for hardware performance counters, as
240+
ratified in the 20191213 version of the unprivileged ISA
241+
specification.
242+
243+
- const: ztso
244+
description:
245+
The standard Ztso extension for total store ordering, as ratified
246+
in commit 2e5236 ("Ztso is now ratified.") of the
247+
riscv-isa-manual.
248+
249+
additionalProperties: true
250+
...

Documentation/riscv/acpi.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
==============
4+
ACPI on RISC-V
5+
==============
6+
7+
The ISA string parsing rules for ACPI are defined by `Version ASCIIDOC
8+
Conversion, 12/2022 of the RISC-V specifications, as defined by tag
9+
"riscv-isa-release-1239329-2023-05-23" (commit 1239329
10+
) <https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23>`_

Documentation/riscv/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ RISC-V architecture
55
.. toctree::
66
:maxdepth: 1
77

8+
acpi
89
boot-image-header
910
vm-layout
1011
hwprobe

Documentation/riscv/vector.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,11 @@ processes in form of sysctl knob:
130130

131131
Modifying the system default enablement status does not affect the enablement
132132
status of any existing process of thread that do not make an execve() call.
133+
134+
3. Vector Register State Across System Calls
135+
---------------------------------------------
136+
137+
As indicated by version 1.0 of the V extension [1], vector registers are
138+
clobbered by system calls.
139+
140+
1: https://github.com/riscv/riscv-v-spec/blob/master/calling-convention.adoc

0 commit comments

Comments
 (0)