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

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt

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/powerpc/fsl/msi-pic.txt (Version linux-6.12-rc7) and /Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt (Version linux-4.9.337)


  1 * Freescale MSI interrupt controller                1 * Freescale MSI interrupt controller
  2                                                     2 
  3 Required properties:                                3 Required properties:
  4 - compatible : compatible list, may contain on      4 - compatible : compatible list, may contain one or two entries
  5   The first is "fsl,CHIP-msi", where CHIP is t      5   The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
  6   etc.) and the second is "fsl,mpic-msi" or "f      6   etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or
  7   "fsl,mpic-msi-v4.3" depending on the parent       7   "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic
  8   version is 4.3, the number of MSI registers       8   version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is
  9   provided to access these 16 registers, and c      9   provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3"
 10   should be used. The first entry is optional;     10   should be used. The first entry is optional; the second entry is
 11   required.                                        11   required.
 12                                                    12 
 13 - reg : It may contain one or two regions. The     13 - reg : It may contain one or two regions. The first region should contain
 14   the address and the length of the shared mes     14   the address and the length of the shared message interrupt register set.
 15   The second region should contain the address     15   The second region should contain the address of aliased MSIIR or MSIIR1
 16   register for platforms that have such an ali     16   register for platforms that have such an alias, if using MSIIR1, the second
 17   region must be added because different MSI g     17   region must be added because different MSI group has different MSIIR1 offset.
 18                                                    18 
 19 - interrupts : each one of the interrupts here     19 - interrupts : each one of the interrupts here is one entry per 32 MSIs,
 20   and routed to the host interrupt controller.     20   and routed to the host interrupt controller. the interrupts should
 21   be set as edge sensitive.  If msi-available-     21   be set as edge sensitive.  If msi-available-ranges is present, only
 22   the interrupts that correspond to available      22   the interrupts that correspond to available ranges shall be present.
 23                                                    23 
                                                   >>  24 - interrupt-parent: the phandle for the interrupt controller
                                                   >>  25   that services interrupts for this device. for 83xx cpu, the interrupts
                                                   >>  26   are routed to IPIC, and for 85xx/86xx cpu the interrupts are routed
                                                   >>  27   to MPIC.
                                                   >>  28 
 24 Optional properties:                               29 Optional properties:
 25 - msi-available-ranges: use <start count> styl     30 - msi-available-ranges: use <start count> style section to define which
 26   msi interrupt can be used in the 256 msi int     31   msi interrupt can be used in the 256 msi interrupts. This property is
 27   optional, without this, all the MSI interrup     32   optional, without this, all the MSI interrupts can be used.
 28   Each available range must begin and end on a     33   Each available range must begin and end on a multiple of 32 (i.e.
 29   no splitting an individual MSI register or t     34   no splitting an individual MSI register or the associated PIC interrupt).
 30   MPIC v4.3 does not support this property bec     35   MPIC v4.3 does not support this property because the 32 interrupts of an
 31   individual register are not continuous when      36   individual register are not continuous when using MSIIR1.
 32                                                    37 
 33 - msi-address-64: 64-bit PCI address of the MS     38 - msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register
 34   is used for MSI messaging.  The address of M     39   is used for MSI messaging.  The address of MSIIR in PCI address space is
 35   the MSI message address.                         40   the MSI message address.
 36                                                    41 
 37   This property may be used in virtualized env     42   This property may be used in virtualized environments where the hypervisor
 38   has created an alternate mapping for the MSI     43   has created an alternate mapping for the MSIR block.  See below for an
 39   explanation.                                     44   explanation.
 40                                                    45 
 41                                                    46 
 42 Example:                                           47 Example:
 43         msi@41600 {                                48         msi@41600 {
 44                 compatible = "fsl,mpc8610-msi"     49                 compatible = "fsl,mpc8610-msi", "fsl,mpic-msi";
 45                 reg = <0x41600 0x80>;              50                 reg = <0x41600 0x80>;
 46                 msi-available-ranges = <0 0x10     51                 msi-available-ranges = <0 0x100>;
 47                 interrupts = <                     52                 interrupts = <
 48                         0xe0 0                     53                         0xe0 0
 49                         0xe1 0                     54                         0xe1 0
 50                         0xe2 0                     55                         0xe2 0
 51                         0xe3 0                     56                         0xe3 0
 52                         0xe4 0                     57                         0xe4 0
 53                         0xe5 0                     58                         0xe5 0
 54                         0xe6 0                     59                         0xe6 0
 55                         0xe7 0>;                   60                         0xe7 0>;
 56                 interrupt-parent = <&mpic>;        61                 interrupt-parent = <&mpic>;
 57         };                                         62         };
 58                                                    63 
 59         msi@41600 {                                64         msi@41600 {
 60                 compatible = "fsl,mpic-msi-v4.     65                 compatible = "fsl,mpic-msi-v4.3";
 61                 reg = <0x41600 0x200 0x44148 4     66                 reg = <0x41600 0x200 0x44148 4>;
 62                 interrupts = <                     67                 interrupts = <
 63                         0xe0 0 0 0                 68                         0xe0 0 0 0
 64                         0xe1 0 0 0                 69                         0xe1 0 0 0
 65                         0xe2 0 0 0                 70                         0xe2 0 0 0
 66                         0xe3 0 0 0                 71                         0xe3 0 0 0
 67                         0xe4 0 0 0                 72                         0xe4 0 0 0
 68                         0xe5 0 0 0                 73                         0xe5 0 0 0
 69                         0xe6 0 0 0                 74                         0xe6 0 0 0
 70                         0xe7 0 0 0                 75                         0xe7 0 0 0
 71                         0x100 0 0 0                76                         0x100 0 0 0
 72                         0x101 0 0 0                77                         0x101 0 0 0
 73                         0x102 0 0 0                78                         0x102 0 0 0
 74                         0x103 0 0 0                79                         0x103 0 0 0
 75                         0x104 0 0 0                80                         0x104 0 0 0
 76                         0x105 0 0 0                81                         0x105 0 0 0
 77                         0x106 0 0 0                82                         0x106 0 0 0
 78                         0x107 0 0 0>;              83                         0x107 0 0 0>;
 79         };                                         84         };
 80                                                    85 
 81 The Freescale hypervisor and msi-address-64        86 The Freescale hypervisor and msi-address-64
 82 -------------------------------------------        87 -------------------------------------------
 83 Normally, PCI devices have access to all of CC     88 Normally, PCI devices have access to all of CCSR via an ATMU mapping.  The
 84 Freescale MSI driver calculates the address of     89 Freescale MSI driver calculates the address of MSIIR (in the MSI register
 85 block) and sets that address as the MSI messag     90 block) and sets that address as the MSI message address.
 86                                                    91 
 87 In a virtualized environment, the hypervisor m     92 In a virtualized environment, the hypervisor may need to create an IOMMU
 88 mapping for MSIIR.  The Freescale ePAPR hyperv     93 mapping for MSIIR.  The Freescale ePAPR hypervisor has this requirement
 89 because of hardware limitations of the Periphe     94 because of hardware limitations of the Peripheral Access Management Unit
 90 (PAMU), which is currently the only IOMMU that     95 (PAMU), which is currently the only IOMMU that the hypervisor supports.
 91 The ATMU is programmed with the guest physical     96 The ATMU is programmed with the guest physical address, and the PAMU
 92 intercepts transactions and reroutes them to t     97 intercepts transactions and reroutes them to the true physical address.
 93                                                    98 
 94 In the PAMU, each PCI controller is given only     99 In the PAMU, each PCI controller is given only one primary window.  The
 95 PAMU restricts DMA operations so that they can    100 PAMU restricts DMA operations so that they can only occur within a window.
 96 Because PCI devices must be able to DMA to mem    101 Because PCI devices must be able to DMA to memory, the primary window must
 97 be used to cover all of the guest's memory spa    102 be used to cover all of the guest's memory space.
 98                                                   103 
 99 PAMU primary windows can be divided into 256 s    104 PAMU primary windows can be divided into 256 subwindows, and each
100 subwindow can have its own address mapping ("g    105 subwindow can have its own address mapping ("guest physical" to "true
101 physical").  However, each subwindow has to ha    106 physical").  However, each subwindow has to have the same alignment, which
102 means they cannot be located at just any addre    107 means they cannot be located at just any address.  Because of these
103 restrictions, it is usually impossible to crea    108 restrictions, it is usually impossible to create a 4KB subwindow that
104 covers MSIIR where it's normally located.         109 covers MSIIR where it's normally located.
105                                                   110 
106 Therefore, the hypervisor has to create a subw    111 Therefore, the hypervisor has to create a subwindow inside the same
107 primary window used for memory, but mapped to     112 primary window used for memory, but mapped to the MSIR block (where MSIIR
108 lives).  The first subwindow after the end of     113 lives).  The first subwindow after the end of guest memory is used for
109 this.  The address specified in the msi-addres    114 this.  The address specified in the msi-address-64 property is the PCI
110 address of MSIIR.  The hypervisor configures t    115 address of MSIIR.  The hypervisor configures the PAMU to map that address to
111 the true physical address of MSIIR.               116 the true physical address of MSIIR.
                                                      

~ [ 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