<?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>LayerscapeのトピックRe: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from</title>
    <link>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2400614#M16811</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;H3 class="_9k2iva0 p8i6j0c _1ibi0s314 heading3 _9k2iva1"&gt;Root Cause — BL31 Memory Collision&lt;/H3&gt;
&lt;P class="p8i6j01 paragraph"&gt;The LS1046A boot flow is:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="p8i6j0e hljs _12n1b832"&gt;Boot ROM → BL2 (DDR Init) → BL31 (stays resident in DRAM) → U-Boot → Linux
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;STRONG&gt;BL31 remains permanently resident in DRAM&lt;/STRONG&gt; and handles all SMC calls (PSCI: &lt;CODE class="p8i6j0f"&gt;psci_get_version&lt;/CODE&gt;, CPU on/off, etc.). Its typical placement is near &lt;STRONG&gt;top-of-RAM minus ~10 MiB&lt;/STRONG&gt;, with a size of up to &lt;STRONG&gt;2 MiB&lt;/STRONG&gt;.&lt;/P&gt;
&lt;DIV class="tk0j8o1 _1ibi0s31a _1ibi0s3en"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;When Linux boots with the full 4 GB DDR map, it allocates pages that physically overlap BL31's region. The first PSCI SMC call (&lt;CODE class="p8i6j0f"&gt;psci_get_version&lt;/CODE&gt;) jumps into now-corrupted memory and the system hangs — with no panic, no exception, just silence.&lt;/P&gt;
&lt;P class="p8i6j01 paragraph"&gt;Your &lt;CODE class="p8i6j0f"&gt;bdinfo&lt;/CODE&gt; output confirms the exact pattern — DDR Bank 1 ends at &lt;CODE class="p8i6j0f"&gt;0x8FFFFFFFF&lt;/CODE&gt;, and BL31 is at approximately &lt;CODE class="p8i6j0f"&gt;RAM_END - 10 MiB = 0x8FF600000&lt;/CODE&gt;:&lt;/P&gt;
&lt;DIV class="_1ibi0s34s _1ibi0s342 _1ibi0s3en" data-ui-element="chat-assistant-markdown-table"&gt;
&lt;DIV class="_1p3yljh0 _5zr0qv3 _1ibi0s3db _1ibi0s3eg"&gt;
&lt;DIV class="_1p3yljh3"&gt;
&lt;TABLE class="_1p3yljh2 _1p3yljh1"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;DDR Bank&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;Start&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;End&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;Notes&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;Bank 0&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x80000000&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0xFBDFFFFF&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;~1982 MiB — &lt;STRONG&gt;your working &lt;CODE class="p8i6j0f"&gt;mem=&lt;/CODE&gt; limit&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;Bank 1&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x880000000&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x8FFFFFFFF&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;2 GB high bank — BL31 lives here&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;The &lt;CODE class="p8i6j0f"&gt;mem=1982M&lt;/CODE&gt; workaround keeps Linux within Bank 0, never touching Bank 1 where BL31 resides — which is precisely why it works.&lt;/P&gt;
&lt;HR /&gt;
&lt;H3 class="_9k2iva0 p8i6j0c _1ibi0s314 heading3 _9k2iva1"&gt;Fix — Reserve BL31 Memory in the Device Tree&lt;/H3&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;STRONG&gt;The correct permanent fix is to add a &lt;CODE class="p8i6j0f"&gt;reserved-memory&lt;/CODE&gt; node to your DTS&lt;/STRONG&gt; marking BL31's region as off-limits to the Linux memory allocator.&lt;/P&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 1: Find where BL31 is loaded&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;Check your ATF build configuration (&lt;CODE class="p8i6j0f"&gt;plat/nxp/soc-ls1046a/.../platform_def.h&lt;/CODE&gt;) for &lt;CODE class="p8i6j0f"&gt;BL31_BASE&lt;/CODE&gt; and &lt;CODE class="p8i6j0f"&gt;BL31_SIZE&lt;/CODE&gt;. For LSDK/lf-6.x with the FRWY BSP, the typical placement is:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="p8i6j0e hljs language-makefile _12n1b832"&gt;BL31_BASE = 0x8FF80000   (top of high DDR bank minus ~512 KB to 2 MB)
BL31_SIZE = max 2 MiB
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;You can confirm at runtime by checking U-Boot output or the ATF build log for &lt;CODE class="p8i6j0f"&gt;BL31: v2.x... Entry point address = ...&lt;/CODE&gt;.&lt;/P&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 2: Add the reserved-memory node to your DTS&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;In your board DTS file (based on &lt;CODE class="p8i6j0f"&gt;fsl-ls1046a-frwy-sdk.dts&lt;/CODE&gt;), add:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="markdown-code-dts p8i6j0e hljs language-dts _12n1b832"&gt;/ {
    reserved-memory {
        &lt;SPAN class="hljs-meta"&gt;#address-cells = &lt;SPAN class="hljs-string"&gt;&amp;lt;2&amp;gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;
        &lt;SPAN class="hljs-meta"&gt;#size-cells = &lt;SPAN class="hljs-string"&gt;&amp;lt;2&amp;gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;
        ranges;

        &lt;SPAN class="hljs-comment"&gt;/* Reserve BL31 runtime region — adjust addresses to match your ATF build */&lt;/SPAN&gt;
        bl31_reserved: bl31@&lt;SPAN class="hljs-number"&gt;8&lt;/SPAN&gt;ff600000 {
            reg = &amp;lt;&lt;SPAN class="hljs-number"&gt;0x8&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0xff600000&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0x0&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0x00200000&lt;/SPAN&gt;&amp;gt;; &lt;SPAN class="hljs-comment"&gt;/* 2 MiB at RAM_END - 10 MiB */&lt;/SPAN&gt;
            no-map;
        };
    };
};
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;dts&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BLOCKQUOTE class="p8i6j03"&gt;
&lt;P class="p8i6j01 paragraph"&gt;Adjust &lt;CODE class="p8i6j0f"&gt;0x8ff600000&lt;/CODE&gt; and size &lt;CODE class="p8i6j0f"&gt;0x200000&lt;/CODE&gt; to match your actual BL31 load address from the ATF build.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 3: Rebuild and test with full memory&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;After adding the reservation, rebuild the DTB and boot &lt;STRONG&gt;without&lt;/STRONG&gt; the &lt;CODE class="p8i6j0f"&gt;mem=&lt;/CODE&gt; workaround. The kernel will skip that region, BL31 remains intact, and PSCI will function correctly.&lt;/P&gt;
&lt;HR /&gt;
&lt;DIV class="tk0j8o1 _1ibi0s31a _1ibi0s3en"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;HR /&gt;</description>
    <pubDate>Thu, 30 Jul 2026 18:23:41 GMT</pubDate>
    <dc:creator>Bio_TICFSL</dc:creator>
    <dc:date>2026-07-30T18:23:41Z</dc:date>
    <item>
      <title>LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from DT.</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2400525#M16810</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I am working on a custom board based on the LS1046A and I am experiencing a boot issue with a Debian image generated using FlexBuild.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;As a first step, I built the default LS1046AFRWY BSP without making any modifications and tested it on my custom board. During kernel boot, the system always hangs after printing:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;psci: probing for conduit method from DT.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;There is no kernel panic or exception; the system simply stops at this point.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I found the following NXP forum thread describing a very similar issue:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;A href="https://community.nxp.com/t5/Layerscape/LS1043A-RDB-Linux-Hangs-At-PSCI/td-p/750075" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://community.nxp.com/t5/Layerscape/LS1043A-RDB-Linux-Hangs-At-PSCI/td-p/750075&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;As a temporary workaround, I can boot Linux manually from U-Boot using the following commands. However, the kernel only boots successfully when I limit the available memory to 1982 MB using the "mem=" boot argument. If I increase this value, the kernel hangs again (sometimes at different points during boot).&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;mmc dev 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;part uuid mmc 0:3 partuuidr&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;load mmc 0:1 0x81000000 Image&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;load mmc 0:1 0x90000000 fsl-ls1046a-frwy-sdk.dtb&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=${partuuidr} rw rootwait mem=1982M"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;booti 0x81000000 - 0x90000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Test environment:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;SoC: LS1046A&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;DDR: IS43/46QR16512A (4 GB DDR4)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Boot media: SD Card&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;BSP: FlexBuild (LSDK 25.12)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;To rule out a FlexBuild-specific issue, I also built a completely new BSP using Yocto (YP 6.0 / lf-6.18.20) and tested it on the same hardware.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;The result is exactly the same. The kernel again hangs after printing:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;psci: probing for conduit method from DT.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;The relevant part of the &lt;/SPAN&gt;&lt;SPAN&gt;bdinfo&lt;/SPAN&gt;&lt;SPAN&gt; output is shown below:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;DRAM bank 0&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;Start: 0x80000000&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Size : 0x7be00000&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;DRAM bank 1&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;Start: 0x880000000&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Size : 0x80000000&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;LMB memory regions:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;memory&lt;SPAN class=""&gt;[0]&lt;/SPAN&gt; : 0x80000000 - 0xfbdfffff&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;memory&lt;SPAN class=""&gt;[1]&lt;/SPAN&gt; : 0x880000000 - 0x8ffffffff&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;reserved&lt;SPAN class=""&gt;[0]&lt;/SPAN&gt; : 0xfac154c0 - 0xfbdfffff&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;reserved&lt;SPAN class=""&gt;[1]&lt;/SPAN&gt; : 0x8ffff5000 - 0x8ffffffff&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Has anyone encountered a similar issue or have any suggestions on what I should investigate next?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Any advice would be greatly appreciated.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2026 12:29:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2400525#M16810</guid>
      <dc:creator>muslum11</dc:creator>
      <dc:date>2026-07-30T12:29:36Z</dc:date>
    </item>
    <item>
      <title>Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2400614#M16811</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;H3 class="_9k2iva0 p8i6j0c _1ibi0s314 heading3 _9k2iva1"&gt;Root Cause — BL31 Memory Collision&lt;/H3&gt;
&lt;P class="p8i6j01 paragraph"&gt;The LS1046A boot flow is:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="p8i6j0e hljs _12n1b832"&gt;Boot ROM → BL2 (DDR Init) → BL31 (stays resident in DRAM) → U-Boot → Linux
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;STRONG&gt;BL31 remains permanently resident in DRAM&lt;/STRONG&gt; and handles all SMC calls (PSCI: &lt;CODE class="p8i6j0f"&gt;psci_get_version&lt;/CODE&gt;, CPU on/off, etc.). Its typical placement is near &lt;STRONG&gt;top-of-RAM minus ~10 MiB&lt;/STRONG&gt;, with a size of up to &lt;STRONG&gt;2 MiB&lt;/STRONG&gt;.&lt;/P&gt;
&lt;DIV class="tk0j8o1 _1ibi0s31a _1ibi0s3en"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;When Linux boots with the full 4 GB DDR map, it allocates pages that physically overlap BL31's region. The first PSCI SMC call (&lt;CODE class="p8i6j0f"&gt;psci_get_version&lt;/CODE&gt;) jumps into now-corrupted memory and the system hangs — with no panic, no exception, just silence.&lt;/P&gt;
&lt;P class="p8i6j01 paragraph"&gt;Your &lt;CODE class="p8i6j0f"&gt;bdinfo&lt;/CODE&gt; output confirms the exact pattern — DDR Bank 1 ends at &lt;CODE class="p8i6j0f"&gt;0x8FFFFFFFF&lt;/CODE&gt;, and BL31 is at approximately &lt;CODE class="p8i6j0f"&gt;RAM_END - 10 MiB = 0x8FF600000&lt;/CODE&gt;:&lt;/P&gt;
&lt;DIV class="_1ibi0s34s _1ibi0s342 _1ibi0s3en" data-ui-element="chat-assistant-markdown-table"&gt;
&lt;DIV class="_1p3yljh0 _5zr0qv3 _1ibi0s3db _1ibi0s3eg"&gt;
&lt;DIV class="_1p3yljh3"&gt;
&lt;TABLE class="_1p3yljh2 _1p3yljh1"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;DDR Bank&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;Start&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;End&lt;/TH&gt;
&lt;TH class="_1p3yljh5 _1p3yljh4" style="text-align: initial;"&gt;Notes&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;Bank 0&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x80000000&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0xFBDFFFFF&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;~1982 MiB — &lt;STRONG&gt;your working &lt;CODE class="p8i6j0f"&gt;mem=&lt;/CODE&gt; limit&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;Bank 1&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x880000000&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;&lt;CODE class="p8i6j0f"&gt;0x8FFFFFFFF&lt;/CODE&gt;&lt;/TD&gt;
&lt;TD class="_1p3yljh6 _1p3yljh4" style="text-align: initial;"&gt;2 GB high bank — BL31 lives here&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;The &lt;CODE class="p8i6j0f"&gt;mem=1982M&lt;/CODE&gt; workaround keeps Linux within Bank 0, never touching Bank 1 where BL31 resides — which is precisely why it works.&lt;/P&gt;
&lt;HR /&gt;
&lt;H3 class="_9k2iva0 p8i6j0c _1ibi0s314 heading3 _9k2iva1"&gt;Fix — Reserve BL31 Memory in the Device Tree&lt;/H3&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;STRONG&gt;The correct permanent fix is to add a &lt;CODE class="p8i6j0f"&gt;reserved-memory&lt;/CODE&gt; node to your DTS&lt;/STRONG&gt; marking BL31's region as off-limits to the Linux memory allocator.&lt;/P&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 1: Find where BL31 is loaded&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;Check your ATF build configuration (&lt;CODE class="p8i6j0f"&gt;plat/nxp/soc-ls1046a/.../platform_def.h&lt;/CODE&gt;) for &lt;CODE class="p8i6j0f"&gt;BL31_BASE&lt;/CODE&gt; and &lt;CODE class="p8i6j0f"&gt;BL31_SIZE&lt;/CODE&gt;. For LSDK/lf-6.x with the FRWY BSP, the typical placement is:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="p8i6j0e hljs language-makefile _12n1b832"&gt;BL31_BASE = 0x8FF80000   (top of high DDR bank minus ~512 KB to 2 MB)
BL31_SIZE = max 2 MiB
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="p8i6j01 paragraph"&gt;You can confirm at runtime by checking U-Boot output or the ATF build log for &lt;CODE class="p8i6j0f"&gt;BL31: v2.x... Entry point address = ...&lt;/CODE&gt;.&lt;/P&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 2: Add the reserved-memory node to your DTS&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;In your board DTS file (based on &lt;CODE class="p8i6j0f"&gt;fsl-ls1046a-frwy-sdk.dts&lt;/CODE&gt;), add:&lt;/P&gt;
&lt;DIV class="l8rrz21 _1ibi0s3en" data-ui-element="code-block-container"&gt;
&lt;PRE&gt;&lt;CODE class="markdown-code-dts p8i6j0e hljs language-dts _12n1b832"&gt;/ {
    reserved-memory {
        &lt;SPAN class="hljs-meta"&gt;#address-cells = &lt;SPAN class="hljs-string"&gt;&amp;lt;2&amp;gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;
        &lt;SPAN class="hljs-meta"&gt;#size-cells = &lt;SPAN class="hljs-string"&gt;&amp;lt;2&amp;gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;
        ranges;

        &lt;SPAN class="hljs-comment"&gt;/* Reserve BL31 runtime region — adjust addresses to match your ATF build */&lt;/SPAN&gt;
        bl31_reserved: bl31@&lt;SPAN class="hljs-number"&gt;8&lt;/SPAN&gt;ff600000 {
            reg = &amp;lt;&lt;SPAN class="hljs-number"&gt;0x8&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0xff600000&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0x0&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0x00200000&lt;/SPAN&gt;&amp;gt;; &lt;SPAN class="hljs-comment"&gt;/* 2 MiB at RAM_END - 10 MiB */&lt;/SPAN&gt;
            no-map;
        };
    };
};
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="l8rrz23 _1ibi0s3dp _1ibi0s332 _1ibi0s3eo _1ibi0s3bm _1ibi0s3ce"&gt;
&lt;DIV class="l8rrz25 _1ibi0s3eb"&gt;dts&lt;/DIV&gt;
&lt;DIV class="lqznwq0" style="mask-image: url('/images/copy.svg'); vertical-align: text-bottom; height: 14px; min-width: 14px; width: 14px;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BLOCKQUOTE class="p8i6j03"&gt;
&lt;P class="p8i6j01 paragraph"&gt;Adjust &lt;CODE class="p8i6j0f"&gt;0x8ff600000&lt;/CODE&gt; and size &lt;CODE class="p8i6j0f"&gt;0x200000&lt;/CODE&gt; to match your actual BL31 load address from the ATF build.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4 class="_9k2iva0 p8i6j0c _1ibi0s314 heading4 _9k2iva1"&gt;Step 3: Rebuild and test with full memory&lt;/H4&gt;
&lt;P class="p8i6j01 paragraph"&gt;After adding the reservation, rebuild the DTB and boot &lt;STRONG&gt;without&lt;/STRONG&gt; the &lt;CODE class="p8i6j0f"&gt;mem=&lt;/CODE&gt; workaround. The kernel will skip that region, BL31 remains intact, and PSCI will function correctly.&lt;/P&gt;
&lt;HR /&gt;
&lt;DIV class="tk0j8o1 _1ibi0s31a _1ibi0s3en"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;HR /&gt;</description>
      <pubDate>Thu, 30 Jul 2026 18:23:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2400614#M16811</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2026-07-30T18:23:41Z</dc:date>
    </item>
    <item>
      <title>Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2402073#M16821</link>
      <description>Hello,&lt;BR /&gt;&lt;BR /&gt;I tried the suggested solution, but unfortunately it did not resolve the issue.&lt;BR /&gt;&lt;BR /&gt;First, I verified the BL31 address from the TF-A (ATF) build:&lt;BR /&gt;&lt;BR /&gt;- BL31_BASE = 0xFBE00000&lt;BR /&gt;- BL31_SIZE = 0x200000 (2 MiB)&lt;BR /&gt;&lt;BR /&gt;Next, I added a "reserved-memory" node to the Device Tree to reserve the BL31 runtime region and rebuilt the DTB.&lt;BR /&gt;&lt;BR /&gt;After that, I booted the system again without the "mem=1982M" boot parameter. However, the system still hangs at the same point.</description>
      <pubDate>Wed, 05 Aug 2026 09:02:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1046A-Custom-Board-image-built-with-FlexBuild-hangs-at-psci/m-p/2402073#M16821</guid>
      <dc:creator>muslum11</dc:creator>
      <dc:date>2026-08-05T09:02:52Z</dc:date>
    </item>
  </channel>
</rss>

