<?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>topic I am also interested about in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998943#M29345</link>
    <description>I am also interested about the crystal beach DMA device.
 I noticed that there is a 8-channel DMA device call crystal beach DMA and it is labeled as PCI device number 4( this doesn't matter).
My questions is :
1. What is this device used for? Normally, NICs, HDDs all have there independent bus mastering DMA engine. so what is this DMA engine intended for?
2. Can it be used to transfer data between memory locations? Can it address 32 bit address or 64 bit address?

Thank you in advance.</description>
    <pubDate>Thu, 21 Aug 2014 09:56:14 GMT</pubDate>
    <dc:creator>Fuwen_Z_</dc:creator>
    <dc:date>2014-08-21T09:56:14Z</dc:date>
    <item>
      <title>IOAT DMA / Crystal Beach 3 Specifications</title>
      <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998941#M29343</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;

&lt;P&gt;I am looking for specifications for the Crystal Beach DMA controller. So far I only found the register specifications in the Xeon Processor Data sheet.&lt;/P&gt;

&lt;P&gt;I've got a Ivy Bridge machine:&amp;nbsp;Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz running on an Intel Corporation C600/X79 series chipset.&lt;/P&gt;

&lt;P&gt;We want to build a DMA driver for our research operating system (non Linux/Windows/solaris/bsd based). So I am basically looking for a specification to the following device i.e. how to setup the descriptor chains etc.&lt;/P&gt;

&lt;PRE dir="ltr" id="CA-fe3df82443eb54de841d78a1e398832e7b18ceb2"&gt;Intel Corporation Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0 (rev 04)&lt;/PRE&gt;

&lt;P dir="ltr"&gt;Thanks,&amp;nbsp;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Reto&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 13 Jul 2014 11:40:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998941#M29343</guid>
      <dc:creator>Reto_A_</dc:creator>
      <dc:date>2014-07-13T11:40:51Z</dc:date>
    </item>
    <item>
      <title>I found some information for</title>
      <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998942#M29344</link>
      <description>&lt;P&gt;I found some information for you:&lt;BR /&gt;
	1) Linux* driver: &lt;A href="http://www.intel.com/support/network/adapter/pro100/sb/CS-023725.htm"&gt;http://www.intel.com/support/network/adapter/pro100/sb/CS-023725.htm&lt;/A&gt;&lt;BR /&gt;
	2) Chipset specification: &lt;A href="http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/c600-series-chipset-datasheet.pdf"&gt;http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/c600-series-chipset-datasheet.pdf&lt;/A&gt;&lt;BR /&gt;
	Hope that it helps, -Thai&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2014 00:27:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998942#M29344</guid>
      <dc:creator>Quoc-Thai_L_Intel</dc:creator>
      <dc:date>2014-07-21T00:27:50Z</dc:date>
    </item>
    <item>
      <title>I am also interested about</title>
      <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998943#M29345</link>
      <description>I am also interested about the crystal beach DMA device.
 I noticed that there is a 8-channel DMA device call crystal beach DMA and it is labeled as PCI device number 4( this doesn't matter).
My questions is :
1. What is this device used for? Normally, NICs, HDDs all have there independent bus mastering DMA engine. so what is this DMA engine intended for?
2. Can it be used to transfer data between memory locations? Can it address 32 bit address or 64 bit address?

Thank you in advance.</description>
      <pubDate>Thu, 21 Aug 2014 09:56:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998943#M29345</guid>
      <dc:creator>Fuwen_Z_</dc:creator>
      <dc:date>2014-08-21T09:56:14Z</dc:date>
    </item>
    <item>
      <title>Quote:Fuwen Z. wrote:</title>
      <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998944#M29346</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Fuwen Z. wrote:&lt;BR /&gt;&lt;BR /&gt;
	1. What is this device used for? Normally, NICs, HDDs all have there independent bus mastering DMA engine. so what is this DMA engine intended for?&lt;BR /&gt;
	&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;I have recently implemented a basic driver for our research operating system. However it's state is not complete and a bit more information would be useful.&lt;/P&gt;

&lt;P&gt;What I have experienced so far, this device can be used for Memory-Memory transfers i.e. offloading the CPU memcpy. It also supports system memory to MMIO but not the other way round (which I cannot understand why)&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Fuwen Z. wrote:&lt;BR /&gt;&lt;BR /&gt;
	2. Can it be used to transfer data between memory locations? Can it address 32 bit address or 64 bit address&lt;BR /&gt;
	&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;Yes, you can do various kind of transfers like xor, memcpy etc...&amp;nbsp; The addresses used are 64 bit.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I haven't got any good documentation about this. The Xeon Processor specification describes the registers. If you want to have a look at the functionality I recommend the linux driver for now. (included in the recent Linux Kernel)&lt;/P&gt;</description>
      <pubDate>Thu, 21 Aug 2014 10:17:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998944#M29346</guid>
      <dc:creator>Reto_A_</dc:creator>
      <dc:date>2014-08-21T10:17:48Z</dc:date>
    </item>
    <item>
      <title>Sample code to exercise the</title>
      <link>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998945#M29347</link>
      <description>&lt;P&gt;Sample code to exercise the ioat engine is in the last place you'd look, the driver. There's a self-test routine which is a&lt;BR /&gt;
	perfect example of synchronous IO.&amp;nbsp;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/ioat/dma.c#n819&lt;/P&gt;

&lt;P&gt;Just use dma_request_channel to get a chan like so&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;PRE class="brush:cpp;"&gt;{
    dma_cap_mask_t   mask;
    struct dma_chan     *mychan;

    dma_cap_zero(mask);
    dma_cap_set(DMA_MEMCPY, mask);
    printk(KERN_INFO "requesting dma channel\n");

    mychan = dma_request_channel(mask, NULL, NULL);

    if (!mychan) {
        info("no channel available\n");
        goto out;
    }

    printk(KERN_INFO "got channel %d!\n", mychan-&amp;gt;chan_id);
    
    //do dma

    dma_release_channel(mychan);

}&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;I hope this helps, I spent a lot of time in the dark on this :). DMA from iomem doesn't work for me, crashes the ioat driver.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Nov 2014 15:04:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/IOAT-DMA-Crystal-Beach-3-Specifications/m-p/998945#M29347</guid>
      <dc:creator>Peter_P_2</dc:creator>
      <dc:date>2014-11-13T15:04:04Z</dc:date>
    </item>
  </channel>
</rss>

