<?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>i.MX ProcessorsのトピックPCIe read error on iMX8</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/PCIe-read-error-on-iMX8/m-p/1432557#M188514</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;We’re doing DMA transfer using a custom PCIe device on iMX8M-EVK. When the PCIe device tries to read host memory, a ‘Unsupported Request’ status is obtained for the completion. This error is observed on linux kernel versions 5.4 and 5.10. We haven’t seen this issue on linux 4.19 kernel.&lt;/P&gt;&lt;P&gt;The inbound address that we are seeing on TLP packet is 0x59F77180.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="imx8_m2_failed_boot_block_3.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/174538i77919313F5D1C108/image-size/large?v=v2&amp;amp;px=999" role="button" title="imx8_m2_failed_boot_block_3.png" alt="imx8_m2_failed_boot_block_3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;We need to verify whether the inbound window register is configured correctly on iMX8. For this we map the PCIe base address (0x33800000) and dump the register offset given the ‘PCIe Memory Map’ section of iMX8 reference manual. I’m pasting the register dump here.&lt;/P&gt;&lt;P&gt;[PCIe register dump from offset 0x0 ]&lt;/P&gt;&lt;P&gt;root@imx8mq-evk:~/flemin/phymem# ./phymem-test -a 0x0&lt;/P&gt;&lt;P&gt;0x00000000 : 0xabcd16c3 0x00100406 0x06040001 0x00010000&lt;/P&gt;&lt;P&gt;0x00000010 : 0x20000000 0x00000000 0x00000000 0x000000f0&lt;/P&gt;&lt;P&gt;0x00000020 : 0x20302010 0x0000fff0 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000030 : 0x00000000 0x00000040 0x00000000 0x000201f3&lt;/P&gt;&lt;P&gt;0x00000040 : 0xdbc35001 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000050 : 0x01017005 0x443ba4f8 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000060 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000070 : 0x00420010 0x00008000 0x00102010 0x0071cc12&lt;/P&gt;&lt;P&gt;0x00000080 : 0x30120000 0x00000000 0x004003c0 0x00000008&lt;/P&gt;&lt;P&gt;0x00000090 : 0x00000000 0x0000041f 0x00000000 0x00000006&lt;/P&gt;&lt;P&gt;0x000000a0 : 0x00000002 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000b0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000c0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000d0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000e0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000f0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000100 : 0x14820001 0x00000000 0x00400000 0x00462030&lt;/P&gt;&lt;P&gt;0x00000110 : 0x00000001 0x0000e000 0x000000a0 0x00000000&lt;/P&gt;&lt;P&gt;0x00000120 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000130 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000140 : 0x00000000 0x00000000 0x0001001e 0x00280a1b&lt;/P&gt;&lt;P&gt;0x00000150 : 0x00000a00 0x00000028 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We are seeing the expected values in the offsets from 0x0 to 0xB44. According to the iMX8 reference manual, the iATU and DMA register offsets starts from the offset 0x80000000 to 0x80080320. (This offset looks strange. We are adding the offset with PCIe base address for obtaining th physical address of iATU registers)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;[PCIe register dump of offset from 0x80000000]&lt;/P&gt;&lt;P&gt;root@imx8mq-evk:~/flemin/phymem# ./phymem-test -a 0x80000000&lt;/P&gt;&lt;P&gt;0x80000000 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000010 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000020 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000030 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000040 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000050 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000060 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000070 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000080 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000090 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000a0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000b0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000c0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000d0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000e0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000f0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000100 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000110 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000200 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000210 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000300 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000310 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000400 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000410 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000500 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000510 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000600 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000610 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000700 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000710 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;As seen above, all the iATU registers in PCIe register map is read as 0xffffffff. Are we reading the correct offset? &lt;SPAN&gt;Does the &lt;/SPAN&gt;&lt;SPAN&gt;0x80000000 &lt;/SPAN&gt;&lt;SPAN&gt;offset from PCIe base address gives correct physical address of inbound window registers?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How I can verify if the PCIe inbound window registers are configured correctly? &lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 23 Mar 2022 10:57:08 GMT</pubDate>
    <dc:creator>fleminjose</dc:creator>
    <dc:date>2022-03-23T10:57:08Z</dc:date>
    <item>
      <title>PCIe read error on iMX8</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/PCIe-read-error-on-iMX8/m-p/1432557#M188514</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;We’re doing DMA transfer using a custom PCIe device on iMX8M-EVK. When the PCIe device tries to read host memory, a ‘Unsupported Request’ status is obtained for the completion. This error is observed on linux kernel versions 5.4 and 5.10. We haven’t seen this issue on linux 4.19 kernel.&lt;/P&gt;&lt;P&gt;The inbound address that we are seeing on TLP packet is 0x59F77180.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="imx8_m2_failed_boot_block_3.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/174538i77919313F5D1C108/image-size/large?v=v2&amp;amp;px=999" role="button" title="imx8_m2_failed_boot_block_3.png" alt="imx8_m2_failed_boot_block_3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;We need to verify whether the inbound window register is configured correctly on iMX8. For this we map the PCIe base address (0x33800000) and dump the register offset given the ‘PCIe Memory Map’ section of iMX8 reference manual. I’m pasting the register dump here.&lt;/P&gt;&lt;P&gt;[PCIe register dump from offset 0x0 ]&lt;/P&gt;&lt;P&gt;root@imx8mq-evk:~/flemin/phymem# ./phymem-test -a 0x0&lt;/P&gt;&lt;P&gt;0x00000000 : 0xabcd16c3 0x00100406 0x06040001 0x00010000&lt;/P&gt;&lt;P&gt;0x00000010 : 0x20000000 0x00000000 0x00000000 0x000000f0&lt;/P&gt;&lt;P&gt;0x00000020 : 0x20302010 0x0000fff0 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000030 : 0x00000000 0x00000040 0x00000000 0x000201f3&lt;/P&gt;&lt;P&gt;0x00000040 : 0xdbc35001 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000050 : 0x01017005 0x443ba4f8 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000060 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000070 : 0x00420010 0x00008000 0x00102010 0x0071cc12&lt;/P&gt;&lt;P&gt;0x00000080 : 0x30120000 0x00000000 0x004003c0 0x00000008&lt;/P&gt;&lt;P&gt;0x00000090 : 0x00000000 0x0000041f 0x00000000 0x00000006&lt;/P&gt;&lt;P&gt;0x000000a0 : 0x00000002 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000b0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000c0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000d0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000e0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x000000f0 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000100 : 0x14820001 0x00000000 0x00400000 0x00462030&lt;/P&gt;&lt;P&gt;0x00000110 : 0x00000001 0x0000e000 0x000000a0 0x00000000&lt;/P&gt;&lt;P&gt;0x00000120 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000130 : 0x00000000 0x00000000 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;0x00000140 : 0x00000000 0x00000000 0x0001001e 0x00280a1b&lt;/P&gt;&lt;P&gt;0x00000150 : 0x00000a00 0x00000028 0x00000000 0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We are seeing the expected values in the offsets from 0x0 to 0xB44. According to the iMX8 reference manual, the iATU and DMA register offsets starts from the offset 0x80000000 to 0x80080320. (This offset looks strange. We are adding the offset with PCIe base address for obtaining th physical address of iATU registers)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;[PCIe register dump of offset from 0x80000000]&lt;/P&gt;&lt;P&gt;root@imx8mq-evk:~/flemin/phymem# ./phymem-test -a 0x80000000&lt;/P&gt;&lt;P&gt;0x80000000 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000010 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000020 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000030 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000040 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000050 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000060 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000070 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000080 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000090 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000a0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000b0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000c0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000d0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000e0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x800000f0 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000100 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;0x80000110 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000200 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000210 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000300 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000310 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000400 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000410 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000500 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000510 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000600 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000610 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;0x80000700 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;BR /&gt;0x80000710 : 0xffffffff 0xffffffff 0xffffffff 0xffffffff&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;As seen above, all the iATU registers in PCIe register map is read as 0xffffffff. Are we reading the correct offset? &lt;SPAN&gt;Does the &lt;/SPAN&gt;&lt;SPAN&gt;0x80000000 &lt;/SPAN&gt;&lt;SPAN&gt;offset from PCIe base address gives correct physical address of inbound window registers?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How I can verify if the PCIe inbound window registers are configured correctly? &lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 23 Mar 2022 10:57:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/PCIe-read-error-on-iMX8/m-p/1432557#M188514</guid>
      <dc:creator>fleminjose</dc:creator>
      <dc:date>2022-03-23T10:57:08Z</dc:date>
    </item>
  </channel>
</rss>

