<?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 sometimes sdma firmware load error in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/sometimes-sdma-firmware-load-error/m-p/1480891#M191961</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;Dear All!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;I have a custom board with an IMX6ULL on it.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;If the power is turned on and off repeatedly, the return value of the pm_runtime_get_sync(sdma-&amp;gt;dev) function is -13 and an error occurs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Sometimes the symptoms above occur, but the cause is unknown.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;If you retry after seeing the return value as shown below, the firmware is read normally.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Can I use it like this?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ret&lt;/SPAN&gt;&lt;SPAN&gt; = pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ret &amp;lt; 0) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; dev_err(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"pm_runtime_get_sync err %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, ret)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;If using this way is a problem, is there any other way?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;//---------------------------------------------------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[[ os status and error messages ]]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;uname -a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Linux 5.10.72-lts-5.10.y+ga68e31b &lt;/SPAN&gt;&lt;SPAN&gt;#56 SMP PREEMPT Fri Jun 24 15:18:26 KST 2022 armv7l GNU/Linux&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;// kernel config&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONFIG_IMX_SDMA&lt;/SPAN&gt;&lt;SPAN&gt;=m&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONFIG_DMA_VIRTUAL_CHANNELS&lt;/SPAN&gt;&lt;SPAN&gt;=y&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// driver/dma/imx-sdma.c&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Line 2257&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dev_info(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"firmware found.\n"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!sdma-&amp;gt;fw_data) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; sdma-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;fw_data&lt;/SPAN&gt;&lt;SPAN&gt; = kmalloc(fw-&amp;gt;size, GFP_KERNEL)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; if (!sdma-&amp;gt;fw_data)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto err_firmware&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; memcpy(sdma-&amp;gt;fw_data, fw-&amp;gt;data, fw-&amp;gt;size)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; dev_info(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"memcpy size : %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, fw-&amp;gt;size)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; if (!sdma-&amp;gt;drvdata-&amp;gt;pm_runtime){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;=&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;ret&lt;/SPAN&gt;&lt;SPAN&gt; = pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ret &amp;lt; 0) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;=&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dev_err(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"pm_runtime_get_sync err %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, ret)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// normal boot message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.474954] imx-sdma 20ec000.sdma: firmware found.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.479804] imx-sdma 20ec000.sdma: memcpy size : 2970&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.625768] imx-sdma 20ec000.sdma: loaded firmware 3.6&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// error boot message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.310526] imx-sdma 20ec000.sdma: firmware found.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.350879] imx-sdma 20ec000.sdma: memcpy size : 2970&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.355971] imx-sdma 20ec000.sdma: pm_runtime_get_sync err -13&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Best Regards&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;ds5sjd&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
    <pubDate>Tue, 28 Jun 2022 03:22:00 GMT</pubDate>
    <dc:creator>ds5sjd</dc:creator>
    <dc:date>2022-06-28T03:22:00Z</dc:date>
    <item>
      <title>sometimes sdma firmware load error</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/sometimes-sdma-firmware-load-error/m-p/1480891#M191961</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;Dear All!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;I have a custom board with an IMX6ULL on it.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;If the power is turned on and off repeatedly, the return value of the pm_runtime_get_sync(sdma-&amp;gt;dev) function is -13 and an error occurs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Sometimes the symptoms above occur, but the cause is unknown.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;If you retry after seeing the return value as shown below, the firmware is read normally.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Can I use it like this?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ret&lt;/SPAN&gt;&lt;SPAN&gt; = pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ret &amp;lt; 0) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; dev_err(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"pm_runtime_get_sync err %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, ret)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;If using this way is a problem, is there any other way?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;//---------------------------------------------------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[[ os status and error messages ]]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;uname -a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Linux 5.10.72-lts-5.10.y+ga68e31b &lt;/SPAN&gt;&lt;SPAN&gt;#56 SMP PREEMPT Fri Jun 24 15:18:26 KST 2022 armv7l GNU/Linux&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;// kernel config&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONFIG_IMX_SDMA&lt;/SPAN&gt;&lt;SPAN&gt;=m&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONFIG_DMA_VIRTUAL_CHANNELS&lt;/SPAN&gt;&lt;SPAN&gt;=y&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// driver/dma/imx-sdma.c&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Line 2257&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dev_info(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"firmware found.\n"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!sdma-&amp;gt;fw_data) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; sdma-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;fw_data&lt;/SPAN&gt;&lt;SPAN&gt; = kmalloc(fw-&amp;gt;size, GFP_KERNEL)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; if (!sdma-&amp;gt;fw_data)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto err_firmware&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; memcpy(sdma-&amp;gt;fw_data, fw-&amp;gt;data, fw-&amp;gt;size)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; dev_info(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"memcpy size : %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, fw-&amp;gt;size)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; if (!sdma-&amp;gt;drvdata-&amp;gt;pm_runtime){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;=&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;ret&lt;/SPAN&gt;&lt;SPAN&gt; = pm_runtime_get_sync(sdma-&amp;gt;dev)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ret &amp;lt; 0) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;=&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dev_err(sdma-&amp;gt;dev, &lt;/SPAN&gt;&lt;SPAN&gt;"pm_runtime_get_sync err %d\n"&lt;/SPAN&gt;&lt;SPAN&gt;, ret)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// normal boot message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.474954] imx-sdma 20ec000.sdma: firmware found.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.479804] imx-sdma 20ec000.sdma: memcpy size : 2970&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.625768] imx-sdma 20ec000.sdma: loaded firmware 3.6&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// error boot message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.310526] imx-sdma 20ec000.sdma: firmware found.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.350879] imx-sdma 20ec000.sdma: memcpy size : 2970&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[ &amp;nbsp; 10.355971] imx-sdma 20ec000.sdma: pm_runtime_get_sync err -13&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Best Regards&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;ds5sjd&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Tue, 28 Jun 2022 03:22:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/sometimes-sdma-firmware-load-error/m-p/1480891#M191961</guid>
      <dc:creator>ds5sjd</dc:creator>
      <dc:date>2022-06-28T03:22:00Z</dc:date>
    </item>
  </channel>
</rss>

