~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/interrupt-controller/riscv,imsics.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/devicetree/bindings/interrupt-controller/riscv,imsics.yaml (Architecture i386) and /Documentation/devicetree/bindings/interrupt-controller/riscv,imsics.yaml (Architecture ppc)


  1 # SPDX-License-Identifier: (GPL-2.0-only OR BS      1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2 %YAML 1.2                                           2 %YAML 1.2
  3 ---                                                 3 ---
  4 $id: http://devicetree.org/schemas/interrupt-c      4 $id: http://devicetree.org/schemas/interrupt-controller/riscv,imsics.yaml#
  5 $schema: http://devicetree.org/meta-schemas/co      5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6                                                     6 
  7 title: RISC-V Incoming MSI Controller (IMSIC)       7 title: RISC-V Incoming MSI Controller (IMSIC)
  8                                                     8 
  9 maintainers:                                        9 maintainers:
 10   - Anup Patel <anup@brainfault.org>                10   - Anup Patel <anup@brainfault.org>
 11                                                    11 
 12 description: |                                     12 description: |
 13   The RISC-V advanced interrupt architecture (     13   The RISC-V advanced interrupt architecture (AIA) defines a per-CPU incoming
 14   MSI controller (IMSIC) for handling MSIs in      14   MSI controller (IMSIC) for handling MSIs in a RISC-V platform. The RISC-V
 15   AIA specification can be found at https://gi     15   AIA specification can be found at https://github.com/riscv/riscv-aia.
 16                                                    16 
 17   The IMSIC is a per-CPU (or per-HART) device      17   The IMSIC is a per-CPU (or per-HART) device with separate interrupt file
 18   for each privilege level (machine or supervi     18   for each privilege level (machine or supervisor). The configuration of
 19   a IMSIC interrupt file is done using AIA CSR     19   a IMSIC interrupt file is done using AIA CSRs and it also has a 4KB MMIO
 20   space to receive MSIs from devices. Each IMS     20   space to receive MSIs from devices. Each IMSIC interrupt file supports a
 21   fixed number of interrupt identities (to dis     21   fixed number of interrupt identities (to distinguish MSIs from devices)
 22   which is same for given privilege level acro     22   which is same for given privilege level across CPUs (or HARTs).
 23                                                    23 
 24   The device tree of a RISC-V platform will ha     24   The device tree of a RISC-V platform will have one IMSIC device tree node
 25   for each privilege level (machine or supervi     25   for each privilege level (machine or supervisor) which collectively describe
 26   IMSIC interrupt files at that privilege leve     26   IMSIC interrupt files at that privilege level across CPUs (or HARTs).
 27                                                    27 
 28   The arrangement of IMSIC interrupt files in      28   The arrangement of IMSIC interrupt files in MMIO space of a RISC-V platform
 29   follows a particular scheme defined by the R     29   follows a particular scheme defined by the RISC-V AIA specification. A IMSIC
 30   group is a set of IMSIC interrupt files co-l     30   group is a set of IMSIC interrupt files co-located in MMIO space and we can
 31   have multiple IMSIC groups (i.e. clusters, s     31   have multiple IMSIC groups (i.e. clusters, sockets, chiplets, etc) in a
 32   RISC-V platform. The MSI target address of a     32   RISC-V platform. The MSI target address of a IMSIC interrupt file at given
 33   privilege level (machine or supervisor) enco     33   privilege level (machine or supervisor) encodes group index, HART index,
 34   and guest index (shown below).                   34   and guest index (shown below).
 35                                                    35 
 36   XLEN-1            > (HART Index MSB)             36   XLEN-1            > (HART Index MSB)                  12    0
 37   |                  |                             37   |                  |                                  |     |
 38   --------------------------------------------     38   -------------------------------------------------------------
 39   |xxxxxx|Group Index|xxxxxxxxxxx|HART Index|G     39   |xxxxxx|Group Index|xxxxxxxxxxx|HART Index|Guest Index|  0  |
 40   --------------------------------------------     40   -------------------------------------------------------------
 41                                                    41 
 42 allOf:                                             42 allOf:
 43   - $ref: /schemas/interrupt-controller.yaml#      43   - $ref: /schemas/interrupt-controller.yaml#
 44   - $ref: /schemas/interrupt-controller/msi-co     44   - $ref: /schemas/interrupt-controller/msi-controller.yaml#
 45                                                    45 
 46 properties:                                        46 properties:
 47   compatible:                                      47   compatible:
 48     items:                                         48     items:
 49       - enum:                                      49       - enum:
 50           - qemu,imsics                            50           - qemu,imsics
 51       - const: riscv,imsics                        51       - const: riscv,imsics
 52                                                    52 
 53   reg:                                             53   reg:
 54     minItems: 1                                    54     minItems: 1
 55     maxItems: 16384                                55     maxItems: 16384
 56     description:                                   56     description:
 57       Base address of each IMSIC group.            57       Base address of each IMSIC group.
 58                                                    58 
 59   interrupt-controller: true                       59   interrupt-controller: true
 60                                                    60 
 61   "#interrupt-cells":                              61   "#interrupt-cells":
 62     const: 0                                       62     const: 0
 63                                                    63 
 64   msi-controller: true                             64   msi-controller: true
 65                                                    65 
 66   "#msi-cells":                                    66   "#msi-cells":
 67     const: 0                                       67     const: 0
 68                                                    68 
 69   interrupts-extended:                             69   interrupts-extended:
 70     minItems: 1                                    70     minItems: 1
 71     maxItems: 16384                                71     maxItems: 16384
 72     description:                                   72     description:
 73       This property represents the set of CPUs     73       This property represents the set of CPUs (or HARTs) for which given
 74       device tree node describes the IMSIC int     74       device tree node describes the IMSIC interrupt files. Each node pointed
 75       to should be a riscv,cpu-intc node, whic     75       to should be a riscv,cpu-intc node, which has a CPU node (i.e. RISC-V
 76       HART) as parent.                             76       HART) as parent.
 77                                                    77 
 78   riscv,num-ids:                                   78   riscv,num-ids:
 79     $ref: /schemas/types.yaml#/definitions/uin     79     $ref: /schemas/types.yaml#/definitions/uint32
 80     minimum: 63                                    80     minimum: 63
 81     maximum: 2047                                  81     maximum: 2047
 82     description:                                   82     description:
 83       Number of interrupt identities supported     83       Number of interrupt identities supported by IMSIC interrupt file.
 84                                                    84 
 85   riscv,num-guest-ids:                             85   riscv,num-guest-ids:
 86     $ref: /schemas/types.yaml#/definitions/uin     86     $ref: /schemas/types.yaml#/definitions/uint32
 87     minimum: 63                                    87     minimum: 63
 88     maximum: 2047                                  88     maximum: 2047
 89     description:                                   89     description:
 90       Number of interrupt identities are suppo     90       Number of interrupt identities are supported by IMSIC guest interrupt
 91       file. When not specified it is assumed t     91       file. When not specified it is assumed to be same as specified by the
 92       riscv,num-ids property.                      92       riscv,num-ids property.
 93                                                    93 
 94   riscv,guest-index-bits:                          94   riscv,guest-index-bits:
 95     minimum: 0                                     95     minimum: 0
 96     maximum: 7                                     96     maximum: 7
 97     default: 0                                     97     default: 0
 98     description:                                   98     description:
 99       Number of guest index bits in the MSI ta     99       Number of guest index bits in the MSI target address.
100                                                   100 
101   riscv,hart-index-bits:                          101   riscv,hart-index-bits:
102     minimum: 0                                    102     minimum: 0
103     maximum: 15                                   103     maximum: 15
104     description:                                  104     description:
105       Number of HART index bits in the MSI tar    105       Number of HART index bits in the MSI target address. When not
106       specified it is calculated based on the     106       specified it is calculated based on the interrupts-extended property.
107                                                   107 
108   riscv,group-index-bits:                         108   riscv,group-index-bits:
109     minimum: 0                                    109     minimum: 0
110     maximum: 7                                    110     maximum: 7
111     default: 0                                    111     default: 0
112     description:                                  112     description:
113       Number of group index bits in the MSI ta    113       Number of group index bits in the MSI target address.
114                                                   114 
115   riscv,group-index-shift:                        115   riscv,group-index-shift:
116     $ref: /schemas/types.yaml#/definitions/uin    116     $ref: /schemas/types.yaml#/definitions/uint32
117     minimum: 0                                    117     minimum: 0
118     maximum: 55                                   118     maximum: 55
119     default: 24                                   119     default: 24
120     description:                                  120     description:
121       The least significant bit position of th    121       The least significant bit position of the group index bits in the
122       MSI target address.                         122       MSI target address.
123                                                   123 
124 required:                                         124 required:
125   - compatible                                    125   - compatible
126   - reg                                           126   - reg
127   - interrupt-controller                          127   - interrupt-controller
128   - msi-controller                                128   - msi-controller
129   - "#msi-cells"                                  129   - "#msi-cells"
130   - interrupts-extended                           130   - interrupts-extended
131   - riscv,num-ids                                 131   - riscv,num-ids
132                                                   132 
133 unevaluatedProperties: false                      133 unevaluatedProperties: false
134                                                   134 
135 examples:                                         135 examples:
136   - |                                             136   - |
137     // Example 1 (Machine-level IMSIC files wi    137     // Example 1 (Machine-level IMSIC files with just one group):
138                                                   138 
139     interrupt-controller@24000000 {               139     interrupt-controller@24000000 {
140       compatible = "qemu,imsics", "riscv,imsic    140       compatible = "qemu,imsics", "riscv,imsics";
141       interrupts-extended = <&cpu1_intc 11>,      141       interrupts-extended = <&cpu1_intc 11>,
142                             <&cpu2_intc 11>,      142                             <&cpu2_intc 11>,
143                             <&cpu3_intc 11>,      143                             <&cpu3_intc 11>,
144                             <&cpu4_intc 11>;      144                             <&cpu4_intc 11>;
145       reg = <0x28000000 0x4000>;                  145       reg = <0x28000000 0x4000>;
146       interrupt-controller;                       146       interrupt-controller;
147       #interrupt-cells = <0>;                     147       #interrupt-cells = <0>;
148       msi-controller;                             148       msi-controller;
149       #msi-cells = <0>;                           149       #msi-cells = <0>;
150       riscv,num-ids = <127>;                      150       riscv,num-ids = <127>;
151     };                                            151     };
152                                                   152 
153   - |                                             153   - |
154     // Example 2 (Supervisor-level IMSIC files    154     // Example 2 (Supervisor-level IMSIC files with two groups):
155                                                   155 
156     interrupt-controller@28000000 {               156     interrupt-controller@28000000 {
157       compatible = "qemu,imsics", "riscv,imsic    157       compatible = "qemu,imsics", "riscv,imsics";
158       interrupts-extended = <&cpu1_intc 9>,       158       interrupts-extended = <&cpu1_intc 9>,
159                             <&cpu2_intc 9>,       159                             <&cpu2_intc 9>,
160                             <&cpu3_intc 9>,       160                             <&cpu3_intc 9>,
161                             <&cpu4_intc 9>;       161                             <&cpu4_intc 9>;
162       reg = <0x28000000 0x2000>, /* Group0 IMS    162       reg = <0x28000000 0x2000>, /* Group0 IMSICs */
163             <0x29000000 0x2000>; /* Group1 IMS    163             <0x29000000 0x2000>; /* Group1 IMSICs */
164       interrupt-controller;                       164       interrupt-controller;
165       #interrupt-cells = <0>;                     165       #interrupt-cells = <0>;
166       msi-controller;                             166       msi-controller;
167       #msi-cells = <0>;                           167       #msi-cells = <0>;
168       riscv,num-ids = <127>;                      168       riscv,num-ids = <127>;
169       riscv,group-index-bits = <1>;               169       riscv,group-index-bits = <1>;
170       riscv,group-index-shift = <24>;             170       riscv,group-index-shift = <24>;
171     };                                            171     };
172 ...                                               172 ...
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php