<?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のトピックRe: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2147077#M239865</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/245833"&gt;@PBouchand&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing very well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is this just happening when Cortex A55 is in suspend?&lt;/P&gt;
&lt;P&gt;Could you please share steps to replicate it by my side?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;</description>
    <pubDate>Tue, 05 Aug 2025 21:03:47 GMT</pubDate>
    <dc:creator>Manuel_Salas</dc:creator>
    <dc:date>2025-08-05T21:03:47Z</dc:date>
    <item>
      <title>RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2143537#M239697</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm encountering an issue with the RPMsg-Lite communication between the Cortex-M33 and the Cortex-A55 on the i.MX93.&lt;/P&gt;&lt;P&gt;When the A55 enters suspend mode, any call to rpmsg_lite_alloc_tx_buffer() on the M33 side either blocks indefinitely or results in a hard fault, depending on the exact circumstances. The function rpmsg_lite_is_link_up() continues to return true, which prevents detecting this state cleanly.&lt;/P&gt;&lt;P&gt;The underlying issue appears to be that vq-&amp;gt;vq_ring.avail remains mapped, but accessing vq-&amp;gt;vq_ring.avail-&amp;gt;idx triggers a fault or a hang. There seems to be no safe mechanism to detect that the A55 has suspended and that communication is no longer reliable.&lt;/P&gt;&lt;P&gt;This makes it difficult to ensure robustness on the M33 side. Ideally, we would like rpmsg_lite_alloc_tx_buffer() to either return an error or timeout safely without crashing or blocking indefinitely when the A55 is suspended.&lt;/P&gt;&lt;P&gt;Do you have any recommendation or workaround to safely handle this case, or is there an update planned to address this situation?&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Patrice&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Jul 2025 12:09:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2143537#M239697</guid>
      <dc:creator>PBouchand</dc:creator>
      <dc:date>2025-07-30T12:09:34Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2147077#M239865</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/245833"&gt;@PBouchand&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing very well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is this just happening when Cortex A55 is in suspend?&lt;/P&gt;
&lt;P&gt;Could you please share steps to replicate it by my side?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;</description>
      <pubDate>Tue, 05 Aug 2025 21:03:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2147077#M239865</guid>
      <dc:creator>Manuel_Salas</dc:creator>
      <dc:date>2025-08-05T21:03:47Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2157548#M240296</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Yes, it always happens when the A55 is in suspend mode. It’s really easy to reproduce:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Use an M33 firmware that regularly sends messages to the A55 (which it can receive via /dev/ttyRPMSG ttyRPMSG30) or triggered by a key press on its debug console.&lt;/LI&gt;&lt;LI&gt;Put the A55 into suspend mode using echo mem &amp;gt; /sys/power/state.&lt;/LI&gt;&lt;LI&gt;As soon as the M33 tries to send a message after the suspend mode, it gets stuck at rpmsg_lite_alloc_tx_buffer, and the issue seems to be related to access to vq-&amp;gt;vq_ring.avail-&amp;gt;idx triggers.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I also have a related question: Is it possible on the A55 Linux side to know whether the M33 is in sleep mode?&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 25 Aug 2025 12:08:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2157548#M240296</guid>
      <dc:creator>PBouchand</dc:creator>
      <dc:date>2025-08-25T12:08:38Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2161161#M240423</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Can someone shed some light on this topic?&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Sep 2025 05:35:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2161161#M240423</guid>
      <dc:creator>PBouchand</dc:creator>
      <dc:date>2025-09-01T05:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2163200#M240509</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can try to change&amp;nbsp;vdev0vring and&amp;nbsp;vdevbuffer to SSRAM instead of DRAM.&lt;/P&gt;
&lt;P&gt;As you can see on reference manual, DRAM is clock gated on deep sleep mode:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_0-1756950683418.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/355448i1E9C2F3B1458A6E1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_0-1756950683418.png" alt="Manuel_Salas_0-1756950683418.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the &lt;A href="https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8ulp-evk.dts" target="_self"&gt;device tree of i.mx8ulp&lt;/A&gt; you can see those are configured in DRAM:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_1-1756950780006.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/355449iEAB58D231FAD79E3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_1-1756950780006.png" alt="Manuel_Salas_1-1756950780006.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_2-1756950795515.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/355450iB09FD2D703D446DA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_2-1756950795515.png" alt="Manuel_Salas_2-1756950795515.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Sep 2025 01:53:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2163200#M240509</guid>
      <dc:creator>Manuel_Salas</dc:creator>
      <dc:date>2025-09-04T01:53:51Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2163385#M240514</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Indeed, I’m using the Variscite DTS which defines:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;vdev0vring0: vdev0vring0@87ee0000 {
reg = &amp;lt;0 0x87ee0000 0 0x8000&amp;gt;;
no-map;
};

vdev0vring1: vdev0vring1@87ee8000 {
reg = &amp;lt;0 0x87ee8000 0 0x8000&amp;gt;;
no-map;
};

vdev1vring0: vdev1vring0@87ef0000 {
reg = &amp;lt;0 0x87ef0000 0 0x8000&amp;gt;;
no-map;
};

vdev1vring1: vdev1vring1@87ef8000 {
reg = &amp;lt;0 0x87ef8000 0 0x8000&amp;gt;;
no-map;
};
&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I haven’t tried it yet, but your solution really looks promising!&lt;/P&gt;&lt;P&gt;Thank you very much.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Sep 2025 06:36:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2163385#M240514</guid>
      <dc:creator>PBouchand</dc:creator>
      <dc:date>2025-09-04T06:36:13Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2164453#M240550</link>
      <description>&lt;P&gt;Hello!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for the clarification. But actually, the address used in the Variscite Device Tree is also for DRAM:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_0-1757083435077.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/355775i530CCF8657022491/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_0-1757083435077.png" alt="Manuel_Salas_0-1757083435077.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can try with SRAM.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;</description>
      <pubDate>Fri, 05 Sep 2025 14:44:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2164453#M240550</guid>
      <dc:creator>Manuel_Salas</dc:creator>
      <dc:date>2025-09-05T14:44:25Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2165044#M240581</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I tried to set up the vdev vrings as you suggested:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;reserved-memory {
#address-cells = &amp;lt;2&amp;gt;;
#size-cells = &amp;lt;2&amp;gt;;
ranges;

ethosu_mem: ethosu_region@88000000 {
compatible = "shared-dma-pool";
reusable;
reg = &amp;lt;0x0 0x88000000 0x0 0x8000000&amp;gt;;
};

vdev0vring0: vdev0vring0@aff00000 {
reg = &amp;lt;0 0xaff00000 0 0x8000&amp;gt;;
no-map;
};

vdev0vring1: vdev0vring1@aff08000 {
reg = &amp;lt;0 0xaff08000 0 0x8000&amp;gt;;
no-map;
};

vdev1vring0: vdev1vring0@aff10000 {
reg = &amp;lt;0 0xaff10000 0 0x8000&amp;gt;;
no-map;
};

vdev1vring1: vdev1vring1@aff18000 {
reg = &amp;lt;0 0xaff18000 0 0x8000&amp;gt;;
no-map;
};

rsc_table: rsc-table@2021e000 {
reg = &amp;lt;0 0x2021e000 0 0x1000&amp;gt;;
no-map;
};

vdevbuffer: vdevbuffer@87f00000 {
compatible = "shared-dma-pool";
reg = &amp;lt;0 0x87f00000 0 0x100000&amp;gt;;
no-map;
};

ele_reserved: ele-reserved@87de0000 {
compatible = "shared-dma-pool";
reg = &amp;lt;0 0x87de0000 0 0x100000&amp;gt;;
no-map;
};
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With the following in the M33 code:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;#define VDEV0_VRING_BASE (0xAFF00000U)
#define VDEV1_VRING_BASE (0xAFF10000U)&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;The communication works fine when the A55 is not in suspend, but the M33 always crashes on rpmsg_lite_alloc_tx_buffer when the A55 is in suspend mode.&lt;/P&gt;&lt;P&gt;Have you tested this on your side? Is this supposed to work?&lt;/P&gt;&lt;P&gt;Thanks for your time and help.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Sep 2025 09:03:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2165044#M240581</guid>
      <dc:creator>PBouchand</dc:creator>
      <dc:date>2025-09-08T09:03:43Z</dc:date>
    </item>
    <item>
      <title>Re: RPMsg-Lite rpmsg_lite_alloc_tx_buffer Blocks or Faults When A55 is Suspended</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2166852#M240653</link>
      <description>&lt;P&gt;Hello.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As I said before, that address is not SRAM. You can use the Shared SRAM:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_0-1757525283207.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/356345iBF9E7292AB7993A4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_0-1757525283207.png" alt="Manuel_Salas_0-1757525283207.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please take as reference the&amp;nbsp;sai_low_power_audio example inside the SDK.&lt;/P&gt;
&lt;P&gt;There you can see the linker file pointing to the SRAM:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manuel_Salas_1-1757525435387.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/356346i4E0A665D47E692E8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Manuel_Salas_1-1757525435387.png" alt="Manuel_Salas_1-1757525435387.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Sep 2025 17:30:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RPMsg-Lite-rpmsg-lite-alloc-tx-buffer-Blocks-or-Faults-When-A55/m-p/2166852#M240653</guid>
      <dc:creator>Manuel_Salas</dc:creator>
      <dc:date>2025-09-10T17:30:53Z</dc:date>
    </item>
  </channel>
</rss>

