<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Helvetica Neue Light";
        panose-1:2 0 4 3 0 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:62922036;
        mso-list-template-ids:-20395004;}
@list l1
        {mso-list-id:1083995310;
        mso-list-template-ids:297816706;}
@list l1:level1
        {mso-level-start-at:4;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2
        {mso-list-id:1165197170;
        mso-list-template-ids:230053488;}
@list l2:level1
        {mso-level-start-at:6;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3
        {mso-list-id:1268584696;
        mso-list-template-ids:1463614722;}
@list l3:level1
        {mso-level-start-at:5;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l4
        {mso-list-id:1732773566;
        mso-list-template-ids:-2006271034;}
@list l4:level1
        {mso-level-start-at:2;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5
        {mso-list-id:2054965017;
        mso-list-template-ids:-1302050570;}
@list l5:level1
        {mso-level-start-at:3;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style>
</head>
<body lang="EN-IN" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">Hi Anatoly/DPDK-Developers<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">I am working on DPDK 19.11.5 Legacy Memory design and have a query about how to boot up in Legacy memory mode.</span><span style="font-size:11.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoNormal" style="color:black;mso-list:l0 level1 lfo1"><span lang="EN-US" style="font-size:11.0pt;background:yellow;mso-fareast-language:EN-GB"><br>
Linux kernel boots up with huge pages (‘N’) and free huge pages (‘N’) initially </span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<ol style="margin-top:0cm" start="2" type="1">
<li class="MsoNormal" style="color:black;mso-list:l4 level1 lfo2"><span lang="EN-US" style="font-size:11.0pt;mso-fareast-language:EN-GB">We calculate huge pages we need for data path (Driver need buffers for all queues) by sorting the memory fragments 2MB huge
 pages fragments and find <span style="background:yellow">we need ‘X’ pages , so we go to kernel and set SYSFS attribute nr_hugepages (/proc/sys/vm/nr_hugepages) to X pages</span>.   We also store the sorted physical memory fragments as POOL_0, POOL_1, POOL_2….etc.
 (Just for pool count purpose enough for all ports and queues to initialize)</span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">For example, if host has memory pattern huge pages like this for total 500 we get in step 1 kernel reservation.
</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB">250, 90, 80, 70 , 10 -> Sum is 500 (N pages)</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB">We need only 350 pages (350 based on no of ports, queues dpdk application needs)</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB">So we need 250, 90, 10.</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB">So total 3 pools POOL_0 -> 250 pages, POOL_1 -> 90, POOL_2 -> 10 pages</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<ol style="margin-top:0cm" start="3" type="1">
<li class="MsoNormal" style="color:black;mso-list:l5 level1 lfo3"><span lang="EN-US" style="font-size:11.0pt;mso-fareast-language:EN-GB">We boot up DPDK by RTE_EAL_INIT </span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<ol style="margin-top:0cm" start="4" type="1">
<li class="MsoNormal" style="color:black;mso-list:l1 level1 lfo4"><span lang="EN-US" style="font-size:11.0pt;mso-fareast-language:EN-GB">Then we go to DPDK Memory segment list walkthrough and for each FBARRAY , we find the used pages by DPDK and unmap the remaining
 pages by below code (Idea is to free the huge pages taken by DPDK process virtual memory) -> <span style="background:yellow">Free_HP will be 0 then, as X pages are used by DPDK and all unnecessary pages are freed in this step)</span></span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">Sample Code of 4 :</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">              </span><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">rte_memseg_list_walk_thread_unsafe(dpdk_find_and_free_unused,
 NULL); ->DPDK_FIND_AND_FREE_UNUSED is called for each Memory segment list (FBARRAY pointer is derived from MSL like below)</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">              dpdk_find_and_free_unused(const struct rte_memseg_list *msl,</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                                          void *arg UNUSED)</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">               {</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                      Int ms_idx;</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                       arr = (struct rte_fbarray *) &msl->memseg_arr;</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                        /*</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                         * use size of 2 instead of 1 to find the next free slot but </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                        * not hole.</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                        */</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                     ms_idx = rte_fbarray_find_next_n_free(arr, 0, 2); </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                     if (ms_idx >= 0) {</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                         addr = RTE_PTR_ADD(msl->base_va, ms_idx * msl->page_sz);</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                            munmap(addr, RTE_PTR_DIFF(RTE_PTR_ADD(msl->base_va, msl->len), addr));</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                      }</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">               }</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<ol style="margin-top:0cm" start="5" type="1">
<li class="MsoNormal" style="color:black;mso-list:l3 level1 lfo5"><span style="font-size:11.0pt;mso-fareast-language:EN-GB">With NR_PAGES As ‘X’ and FREE_PAGES as 0, we create MBUF pools using RTE API and we face crash (We take care ‘X” pages has multi pools
 based on memory fragmentation given to the primary process, so pool by pool we have confidence that DPDK should find physical memory segment contiguous and allocate successfully)</span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                    struct rte_mempool *pool;</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                   pool = rte_pktmbuf_pool_create(name, num_mbufs,</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                                   RTE_MIN(num_mbufs/4, MBUF_CACHE_SIZE),</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                                   MBUF_PRIV_SIZE,</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                                   frame_len + RTE_PKTMBUF_HEADROOM,</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                                   rte_socket_id()</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">         </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<ol style="margin-top:0cm" start="6" type="1">
<li class="MsoNormal" style="color:black;mso-list:l2 level1 lfo6"><span style="font-size:11.0pt;mso-fareast-language:EN-GB">Sometimes randomly we face a crash during pool create in Step 5 for each POOL stored in Step 2 process for all ports and queues initialize
 later on</span><span style="font-size:10.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">     </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">               DPDK EAL core comes with BT like this</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">                 </span><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">#<span style="background:yellow">6  sigcrash
 (signo=11, info=0x7fff1c1867f0, ctx=0x7fff1c1866c0)</span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #7 <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    <span style="background:yellow">#8  malloc_elem_can_hold () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow;mso-fareast-language:EN-GB">    #9  find_suitable_element () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow;mso-fareast-language:EN-GB">    #10  malloc_heap_alloc () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #11  rte_malloc_socket () from ./usr/lib64/dpdk-19/librte_eal.so.20.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #12  rte_mempool_create_empty () from ./usr/lib64/dpdk-19/librte_mempool.so.20.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #13  rte_pktmbuf_pool_create_by_ops () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #14  rte_pktmbuf_pool_create () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;mso-fareast-language:EN-GB">    #15  dpdk_create_mbuf_pool (mem_chunk_tbl=0x555d556de8e0 , num_mbufs=46080, frame_len=2048, name=0x7fff1c1873c0 "DPDK_POOL_0")
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">                We see find suitable element does not able to find a suitable element in DPDK memory segment lists it searches for HEAP ALLOC and returns NULL and NULL
 dereference crashes  boot up process</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;background:yellow;mso-fareast-language:EN-GB">Please let me know any comments on boot up process for 1-6 and any reason behind the crash ?</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">We are suspecting Step 4 where FBARRAY unused pages freeing at last should free the least contiguous memory segments right ? (munmap after finding 2 free pages , entire
 length we unmap in step 4 to free virtual memory)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">Please let me know thoughts on <span style="background:yellow">FBARRAY design, is it expected to map the most contiguous…..least contiguous in a virtual address space
 right ?</span></span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">So our most contiguous segments in Step 2 is safe even after Step 3, Step 4 we believe. Please correct my understanding if anything wrong.</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB"> </span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">Thanks</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;mso-fareast-language:EN-GB">Umakiran</span><span style="font-size:10.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
</div>
</body>
</html>