<?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中的主题 [ LINUX, PCIe device write not seen, probably cache related ]</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/LINUX-PCIe-device-write-not-seen-probably-cache-related/m-p/286674#M33867</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am new in this community, please let me introduce the context.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are developing PCIe based devices that have been tested with INTEL root&lt;/P&gt;&lt;P&gt;complex so far, where they are fully operational. We are evaluating ARM platforms,&lt;/P&gt;&lt;P&gt;esp. the IMX6 SOLO cpu. We are using a Q7 board from CONGATECH. We are&lt;/P&gt;&lt;P&gt;using LINUX_3_0_35 as provided by FREESCALE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The basic tests (PCIe word based read/write from the LINUX host) work, but we&lt;/P&gt;&lt;P&gt;have problems when the device writes in the host memory. You can see it as a&lt;/P&gt;&lt;P&gt;simplified DMA operation, where only one 32 bit word is written at a particular&lt;/P&gt;&lt;P&gt;physical address. I checked using a PCIe analyzer that the write operation is&lt;/P&gt;&lt;P&gt;performed (TLP sent). Thus, everything works fine from the device point of view.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But the host does not always 'sees' the write operation. Worst, the write operation&lt;/P&gt;&lt;P&gt;seems buffered somewhere in the path. I can give more details, but what I strongly&lt;/P&gt;&lt;P&gt;suspect is that the host reads a value from the cache (L1 or L2) instead of the DDR.&lt;/P&gt;&lt;P&gt;I read and tried a lot of things (using volatile wherever appropriate, GCC __clear_cache&lt;/P&gt;&lt;P&gt;different flush operation in kernel mode ...), but it does not solve the 'problem'. Could&lt;/P&gt;&lt;P&gt;someone help me?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Nov 2013 09:20:00 GMT</pubDate>
    <dc:creator>fabien_le_mente</dc:creator>
    <dc:date>2013-11-19T09:20:00Z</dc:date>
    <item>
      <title>[ LINUX, PCIe device write not seen, probably cache related ]</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/LINUX-PCIe-device-write-not-seen-probably-cache-related/m-p/286674#M33867</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am new in this community, please let me introduce the context.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are developing PCIe based devices that have been tested with INTEL root&lt;/P&gt;&lt;P&gt;complex so far, where they are fully operational. We are evaluating ARM platforms,&lt;/P&gt;&lt;P&gt;esp. the IMX6 SOLO cpu. We are using a Q7 board from CONGATECH. We are&lt;/P&gt;&lt;P&gt;using LINUX_3_0_35 as provided by FREESCALE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The basic tests (PCIe word based read/write from the LINUX host) work, but we&lt;/P&gt;&lt;P&gt;have problems when the device writes in the host memory. You can see it as a&lt;/P&gt;&lt;P&gt;simplified DMA operation, where only one 32 bit word is written at a particular&lt;/P&gt;&lt;P&gt;physical address. I checked using a PCIe analyzer that the write operation is&lt;/P&gt;&lt;P&gt;performed (TLP sent). Thus, everything works fine from the device point of view.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But the host does not always 'sees' the write operation. Worst, the write operation&lt;/P&gt;&lt;P&gt;seems buffered somewhere in the path. I can give more details, but what I strongly&lt;/P&gt;&lt;P&gt;suspect is that the host reads a value from the cache (L1 or L2) instead of the DDR.&lt;/P&gt;&lt;P&gt;I read and tried a lot of things (using volatile wherever appropriate, GCC __clear_cache&lt;/P&gt;&lt;P&gt;different flush operation in kernel mode ...), but it does not solve the 'problem'. Could&lt;/P&gt;&lt;P&gt;someone help me?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Nov 2013 09:20:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/LINUX-PCIe-device-write-not-seen-probably-cache-related/m-p/286674#M33867</guid>
      <dc:creator>fabien_le_mente</dc:creator>
      <dc:date>2013-11-19T09:20:00Z</dc:date>
    </item>
    <item>
      <title>Re: [ LINUX, PCIe device write not seen, probably cache related ]</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/LINUX-PCIe-device-write-not-seen-probably-cache-related/m-p/286675#M33868</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Did you get the ack dllp after the mem write tlp is issued.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;BR /&gt;Richard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Dec 2013 02:42:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/LINUX-PCIe-device-write-not-seen-probably-cache-related/m-p/286675#M33868</guid>
      <dc:creator>richard_zhu</dc:creator>
      <dc:date>2013-12-06T02:42:41Z</dc:date>
    </item>
  </channel>
</rss>

