<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LayerscapeのトピックLS1043A handle MSI interrupt with msi-controller</title>
    <link>https://community.nxp.com/t5/Layerscape/LS1043A-handle-MSI-interrupt-with-msi-controller/m-p/1575897#M11566</link>
    <description>&lt;P&gt;Hi forum,&lt;/P&gt;&lt;P&gt;There is an LS1043A and a fpga on my setup. I can communicate between ls1043 and fpga over pcie. LS1043A is root complex and fpga is end-point at my setup.&lt;/P&gt;&lt;P&gt;lspci output on my ls1043a :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;0000:01:00.0 Memory controller: Xilinx Corporation Device 7011
Subsystem: Xilinx Corporation Device 0007
Flags: bus master, fast devsel, latency 0
Memory at 4040000000 (32-bit, non-prefetchable) [size=64K]
Memory at 4040010000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [60] Express Endpoint, MSI 00
Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;lspci on my fpga output :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;00:00.0 Memory controller: Xilinx Corporation Device 7011
        Subsystem: Xilinx Corporation Device 0007
        Flags: bus master, fast devsel, latency 0
        Memory at &amp;lt;ignored&amp;gt; (32-bit, non-prefetchable)
        Memory at &amp;lt;ignored&amp;gt; (32-bit, non-prefetchable)
        Capabilities: [40] Power Management version 3
        Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [60] Express Endpoint, MSI 00
        Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00
        Capabilities: [128] Vendor Specific Information: ID=0001 Rev=0 Len=038 &amp;lt;?&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can communicate between ls1043a and fpga bidirectional with devmem on&amp;nbsp;0x4040000000 address.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;LS1043a :  $devmem 0x4040000000 32  , output : 0x0000000
LS1043A:  $devmem 0x4040000000 32 0xDEAD
LS1043a :  $devmem 0x4040000000 32 , output : 0xDEAD
FPGA : $devmem 0x40000000 32 , output : 0xDEAD&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to send MSI interrupt from ls1043a to fpga and also vice-versa. I know that there is an driver to handle msi interrupt on ls1043 as "&lt;SPAN class=""&gt;irq-ls-scfg-msi.c". &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;My devicetree related with msi :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;		msi1: msi-controller1@1571000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1571000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 116 0x4&amp;gt;;
		};

		msi2: msi-controller2@1572000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1572000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 126 0x4&amp;gt;;
		};

		msi3: msi-controller3@1573000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1573000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 160 0x4&amp;gt;;
		};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And also I added printk to "&lt;SPAN class=""&gt;irq-ls-scfg-msi.c" driver to check if probe and setup_irq methods calling and working. So driver is probed and setup all msi interrupts.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;My "irq-ls-scfg-msi.c" driver's debug outputs are on dmesg :&amp;nbsp; (all output's last string function name and last number is file number index)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# dmesg | grep MSI
[    2.242754] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 51, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.254258] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.261211] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 52, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.272709] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.279663] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 53, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.291156] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.298102] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 54, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.309588] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.316542] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406
[    2.322712] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 55, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.334200] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.341147] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 56, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.352632] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.359578] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 57, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.371063] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.378008] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 58, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.389493] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.396445] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406
[    2.402607] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 59, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.414095] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.421042] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 60, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.432529] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.439475] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 61, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.450959] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.457905] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 62, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.469391] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.476337] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I cannot find msi interrupts on linux userspace.&amp;nbsp; /proc/interrupt's output is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  1:          0          0          0          0     GICv2  25 Level     vgic
  3:      18291      29847      30490      47937     GICv2  30 Level     arch_timer
  4:          0          0          0          0     GICv2  27 Level     kvm guest vtimer
  6:          0          0          0          0     GICv2 138 Level     arm-pmu
  7:          0          0          0          0     GICv2 139 Level     arm-pmu
  8:          0          0          0          0     GICv2 127 Level     arm-pmu
  9:          0          0          0          0     GICv2 129 Level     arm-pmu
 11:          5          0          0          0     GICv2 131 Level     1550000.spi
 12:       2007          0          0          0     GICv2  94 Level     mmc0
 13:          0          0          0          0     GICv2 176 Level     [EDAC] MC err
 15:          0          0          0          0     GICv2  77 Level     bman-err, qman-err, fman-err
 16:          0          0          0          0     GICv2 205 Level     BMan portal 0
 17:          0          0          0          0     GICv2 207 Level     BMan portal 1
 18:          0          0          0          0     GICv2 209 Level     BMan portal 2
 19:          0          0          0          0     GICv2 211 Level     BMan portal 3
 26:          0          0          0          0     GICv2 204 Level     QMan portal 0
 27:          0          0          0          0     GICv2 206 Level     QMan portal 1
 28:          0          0          0          0     GICv2 208 Level     QMan portal 2
 29:          0          0          0          0     GICv2 210 Level     QMan portal 3
 36:          0          0          0          0     GICv2  96 Level     2100000.spi
 37:        224          0          0          0     GICv2  88 Level     2180000.i2c
 38:          0          0          0          0     GICv2  91 Level     21b0000.i2c
 39:       5243          0          0          0     GICv2  86 Level     ttyS1
 45:          0          0          0          0     GICv2 115 Level     2ad0000.wdog
 47:          0          0          0          0     GICv2  92 Level     xhci-hcd:usb1
 48:          7          0          0          0     GICv2  93 Level     dwc3-otg, xhci-hcd:usb5
 49:         52          0          0          0     GICv2  95 Level     xhci-hcd:usb3
 50:          0          0          0          0     GICv2 101 Level     ahci-qoriq[3200000.sata]
 69:          0          0          0          0     GICv2 185 Level     qDMA error
 70:          0          0          0          0     GICv2  71 Level     qDMA queue
 74:          0          0          0          0     GICv2  76 Level     fman, ptp_qoriq
 75:          0          0          0          0     GICv2 163 Edge
 76:          0          0          0          0     GICv2 164 Edge
 77:          0          0          0          0     GICv2 165 Edge
 78:          0          0          0          0     GICv2 174 Edge
IPI0:      8139       9691       8545       5158       Rescheduling interrupts
IPI1:        50        258        198         72       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:         0         13        119          0       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
Err:          0&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also ls of /proc/irq is :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# ls /proc/irq/
1   12  15  17  19  26  28  3   37  39  45  48  5   6   7   74  76  78  9
11  13  16  18  2   27  29  36  38  4   47  49  50  69  70  75  77  8   default_smp_affinity&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So how can I receive MSI interrupt which sent from fpga and how can I send a MSI interrupt to FPGA?&lt;/P&gt;&lt;P&gt;I cannot anything about MSI interrupt on linux. Frankly I want to bind to msi-interrupt from c application. Also I want to check if MSI interrupt come from fpga with command line (ex. cat /proc/interrupts)&lt;/P&gt;&lt;P&gt;Also if I have to write a driver, how can I do, do you have an example? What kind of driver I have to write?&lt;/P&gt;</description>
    <pubDate>Sat, 31 Dec 2022 12:06:22 GMT</pubDate>
    <dc:creator>draven</dc:creator>
    <dc:date>2022-12-31T12:06:22Z</dc:date>
    <item>
      <title>LS1043A handle MSI interrupt with msi-controller</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1043A-handle-MSI-interrupt-with-msi-controller/m-p/1575897#M11566</link>
      <description>&lt;P&gt;Hi forum,&lt;/P&gt;&lt;P&gt;There is an LS1043A and a fpga on my setup. I can communicate between ls1043 and fpga over pcie. LS1043A is root complex and fpga is end-point at my setup.&lt;/P&gt;&lt;P&gt;lspci output on my ls1043a :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;0000:01:00.0 Memory controller: Xilinx Corporation Device 7011
Subsystem: Xilinx Corporation Device 0007
Flags: bus master, fast devsel, latency 0
Memory at 4040000000 (32-bit, non-prefetchable) [size=64K]
Memory at 4040010000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [60] Express Endpoint, MSI 00
Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;lspci on my fpga output :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;00:00.0 Memory controller: Xilinx Corporation Device 7011
        Subsystem: Xilinx Corporation Device 0007
        Flags: bus master, fast devsel, latency 0
        Memory at &amp;lt;ignored&amp;gt; (32-bit, non-prefetchable)
        Memory at &amp;lt;ignored&amp;gt; (32-bit, non-prefetchable)
        Capabilities: [40] Power Management version 3
        Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [60] Express Endpoint, MSI 00
        Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00
        Capabilities: [128] Vendor Specific Information: ID=0001 Rev=0 Len=038 &amp;lt;?&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can communicate between ls1043a and fpga bidirectional with devmem on&amp;nbsp;0x4040000000 address.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;LS1043a :  $devmem 0x4040000000 32  , output : 0x0000000
LS1043A:  $devmem 0x4040000000 32 0xDEAD
LS1043a :  $devmem 0x4040000000 32 , output : 0xDEAD
FPGA : $devmem 0x40000000 32 , output : 0xDEAD&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to send MSI interrupt from ls1043a to fpga and also vice-versa. I know that there is an driver to handle msi interrupt on ls1043 as "&lt;SPAN class=""&gt;irq-ls-scfg-msi.c". &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;My devicetree related with msi :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;		msi1: msi-controller1@1571000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1571000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 116 0x4&amp;gt;;
		};

		msi2: msi-controller2@1572000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1572000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 126 0x4&amp;gt;;
		};

		msi3: msi-controller3@1573000 {
			compatible = "fsl,ls1043a-msi";
			reg = &amp;lt;0x0 0x1573000 0x0 0x8&amp;gt;;
			msi-controller;
			interrupts = &amp;lt;0 160 0x4&amp;gt;;
		};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And also I added printk to "&lt;SPAN class=""&gt;irq-ls-scfg-msi.c" driver to check if probe and setup_irq methods calling and working. So driver is probed and setup all msi interrupts.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;My "irq-ls-scfg-msi.c" driver's debug outputs are on dmesg :&amp;nbsp; (all output's last string function name and last number is file number index)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# dmesg | grep MSI
[    2.242754] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 51, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.254258] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.261211] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 52, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.272709] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.279663] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 53, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.291156] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.298102] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 54, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.309588] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.316542] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406
[    2.322712] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 55, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.334200] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.341147] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 56, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.352632] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.359578] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 57, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.371063] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.378008] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 58, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.389493] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.396445] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406
[    2.402607] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 59, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.414095] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.421042] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 60, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.432529] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.439475] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 61, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.450959] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.457905] 003: MSI DEBUG: msir-&amp;gt;gic_irq : 62, msi_data-&amp;gt;msir_num = 4, msi_data-&amp;gt;irqs_num = 128, ls_scfg_msi_setup_hwirq 271
[    2.469391] 003: MSI DEBUG: setup irq success ls_scfg_msi_setup_hwirq 286
[    2.476337] 003: MSI DEBUG: probe success ls_scfg_msi_probe 406&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I cannot find msi interrupts on linux userspace.&amp;nbsp; /proc/interrupt's output is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  1:          0          0          0          0     GICv2  25 Level     vgic
  3:      18291      29847      30490      47937     GICv2  30 Level     arch_timer
  4:          0          0          0          0     GICv2  27 Level     kvm guest vtimer
  6:          0          0          0          0     GICv2 138 Level     arm-pmu
  7:          0          0          0          0     GICv2 139 Level     arm-pmu
  8:          0          0          0          0     GICv2 127 Level     arm-pmu
  9:          0          0          0          0     GICv2 129 Level     arm-pmu
 11:          5          0          0          0     GICv2 131 Level     1550000.spi
 12:       2007          0          0          0     GICv2  94 Level     mmc0
 13:          0          0          0          0     GICv2 176 Level     [EDAC] MC err
 15:          0          0          0          0     GICv2  77 Level     bman-err, qman-err, fman-err
 16:          0          0          0          0     GICv2 205 Level     BMan portal 0
 17:          0          0          0          0     GICv2 207 Level     BMan portal 1
 18:          0          0          0          0     GICv2 209 Level     BMan portal 2
 19:          0          0          0          0     GICv2 211 Level     BMan portal 3
 26:          0          0          0          0     GICv2 204 Level     QMan portal 0
 27:          0          0          0          0     GICv2 206 Level     QMan portal 1
 28:          0          0          0          0     GICv2 208 Level     QMan portal 2
 29:          0          0          0          0     GICv2 210 Level     QMan portal 3
 36:          0          0          0          0     GICv2  96 Level     2100000.spi
 37:        224          0          0          0     GICv2  88 Level     2180000.i2c
 38:          0          0          0          0     GICv2  91 Level     21b0000.i2c
 39:       5243          0          0          0     GICv2  86 Level     ttyS1
 45:          0          0          0          0     GICv2 115 Level     2ad0000.wdog
 47:          0          0          0          0     GICv2  92 Level     xhci-hcd:usb1
 48:          7          0          0          0     GICv2  93 Level     dwc3-otg, xhci-hcd:usb5
 49:         52          0          0          0     GICv2  95 Level     xhci-hcd:usb3
 50:          0          0          0          0     GICv2 101 Level     ahci-qoriq[3200000.sata]
 69:          0          0          0          0     GICv2 185 Level     qDMA error
 70:          0          0          0          0     GICv2  71 Level     qDMA queue
 74:          0          0          0          0     GICv2  76 Level     fman, ptp_qoriq
 75:          0          0          0          0     GICv2 163 Edge
 76:          0          0          0          0     GICv2 164 Edge
 77:          0          0          0          0     GICv2 165 Edge
 78:          0          0          0          0     GICv2 174 Edge
IPI0:      8139       9691       8545       5158       Rescheduling interrupts
IPI1:        50        258        198         72       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:         0         13        119          0       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
Err:          0&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also ls of /proc/irq is :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@tqmls1043a-mbls10xxa:~# ls /proc/irq/
1   12  15  17  19  26  28  3   37  39  45  48  5   6   7   74  76  78  9
11  13  16  18  2   27  29  36  38  4   47  49  50  69  70  75  77  8   default_smp_affinity&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So how can I receive MSI interrupt which sent from fpga and how can I send a MSI interrupt to FPGA?&lt;/P&gt;&lt;P&gt;I cannot anything about MSI interrupt on linux. Frankly I want to bind to msi-interrupt from c application. Also I want to check if MSI interrupt come from fpga with command line (ex. cat /proc/interrupts)&lt;/P&gt;&lt;P&gt;Also if I have to write a driver, how can I do, do you have an example? What kind of driver I have to write?&lt;/P&gt;</description>
      <pubDate>Sat, 31 Dec 2022 12:06:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1043A-handle-MSI-interrupt-with-msi-controller/m-p/1575897#M11566</guid>
      <dc:creator>draven</dc:creator>
      <dc:date>2022-12-31T12:06:22Z</dc:date>
    </item>
  </channel>
</rss>

