<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <div class="moz-cite-prefix">
      <div class="moz-cite-prefix">I've never tried protecting the stack
        like this, so I'm not sure exactly what you're running in to. 
        The documentation says the base address is specified a bit
        differently for expand-down descriptors.  It needs to point to
        the page below the stack (lower addresses.)  The descriptors for
        the other segments would still need to cover the entire address
        space (limit 0xFFFF, page-granular, expand-up.)  And you'd need
        to use a different segment selector (and hence a different GDT
        entry) for the stack segment (ss register) than for the regular
        data segments.  Most of the early PEI code I've seen uses the
        same selector for ds, ef, fs, gs, and ss.<br>
      </div>
      <div class="moz-cite-prefix"><br>
        <div>Hope that helps.  This is mostly theoretical.  I don't
          actually have a lot of experience with x86 segment
          programming.</div>
        <div><br>
        </div>
        <div>Brian J. Johnson<br>
          <hr id="rwhMsgHdrDivider" style="border:0;border-top:1px solid
            #B5C4DF;padding:0;margin:10px 0 5px 0;width:100%;">
          <div style="font-family:sans-serif !important; color:#000000
            !important; font-size:11pt !important;"><b>From:</b> Tiger
            Liu(BJ-RD) [<a class="moz-txt-link-freetext" href="mailto:TigerLiu@zhaoxin.com">mailto:TigerLiu@zhaoxin.com</a>]</div>
          <div style="font-family:sans-serif !important; color:#000000
            !important; font-size:11pt !important;"><b>Sent:</b>
            Wednesday, September 21, 2022, 10:32 PM</div>
          <div style="font-family:sans-serif !important; color:#000000
            !important; font-size:11pt !important;"><b>To:</b>
            <a class="moz-txt-link-abbreviated" href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a> <a class="moz-txt-link-rfc2396E" href="mailto:devel@edk2.groups.io"><devel@edk2.groups.io></a>, Ni, Ray
            <a class="moz-txt-link-rfc2396E" href="mailto:ray.ni@intel.com"><ray.ni@intel.com></a>, <a class="moz-txt-link-abbreviated" href="mailto:brian.johnson@hpe.com">brian.johnson@hpe.com</a>
            <a class="moz-txt-link-rfc2396E" href="mailto:brian.johnson@hpe.com"><brian.johnson@hpe.com></a></div>
          <div style="font-family:sans-serif !important; color:#000000
            !important; font-size:11pt !important;"><b>Subject:</b>
            [edk2-devel] How to guard CAR's stack overflow</div>
          <br>
        </div>
      </div>
    </div>
    <blockquote type="cite" cite="mid:b0586aa0ddff42d9a79ac99b409fd815@zhaoxin.com" style="border:none !important; margin-left:0px !important;
      margin-right:0px !important; margin-top:0px !important;
      padding-left:0px !important; padding-right:0px !important">
      
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
      <style>@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:等线;
        panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:"\@等线";
        panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:等线;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:宋体;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-indent:21.0pt;
        font-size:10.5pt;
        font-family:等线;}p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:宋体;}span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}span.EmailStyle21
        {mso-style-type:personal;
        font-family:等线;
        color:#1F497D;}span.EmailStyle22
        {mso-style-type:personal;
        font-family:等线;
        color:#1F497D;}span.EmailStyle23
        {mso-style-type:personal;
        font-family:等线;
        color:#1F497D;}span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:等线;
        color:#1F497D;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0cm;}ul
        {margin-bottom:0cm;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US">Hi, Johnson:<o:p></o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US">Thanks for your reply!<o:p></o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US">I tried and found it
            seemed causing some other problems.<o:p></o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US">It hang in eary pei
            stage.<o:p></o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="color:#1F497D" lang="EN-US">It seems below code could
            also cause an exception if using expand-down mode in CAR
            phase’s stack established.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">mov
            eax, ss:[ebx]  
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"> mov
            eax, [ebp]<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"> 
            mov eax, [esp]<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">Thanks<o:p></o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0cm 0cm 0cm">
            <p class="MsoNormal" style="text-align:left" align="left"><b><span style="font-size:11.0pt">发件人<span lang="EN-US">:</span></span></b><span style="font-size:11.0pt" lang="EN-US"> Brian J. Johnson
                <<a href="mailto:brian.johnson@hpe.com" moz-do-not-send="true" class="moz-txt-link-freetext">brian.johnson@hpe.com</a>
                <br>
              </span><b><span style="font-size:11.0pt">发送时间<span lang="EN-US">:</span></span></b><span style="font-size:11.0pt" lang="EN-US"> 2022</span><span style="font-size:11.0pt">年<span lang="EN-US">9</span>月<span lang="EN-US">20</span>日<span lang="EN-US"> 7:10<br>
                </span><b>收件人<span lang="EN-US">:</span></b><span lang="EN-US"> <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true" class="moz-txt-link-freetext">                    devel@edk2.groups.io</a>; <a href="mailto:ray.ni@intel.com" moz-do-not-send="true" class="moz-txt-link-freetext">ray.ni@intel.com</a>;
                  Tiger Liu(BJ-RD) <<a href="mailto:TigerLiu@zhaoxin.com" moz-do-not-send="true" class="moz-txt-link-freetext">TigerLiu@zhaoxin.com</a><br>
                </span><b>抄送<span lang="EN-US">:</span></b><span lang="EN-US"> Fan, Jeff <<a href="mailto:fanjianfeng@byosoft.com.cn" moz-do-not-send="true" class="moz-txt-link-freetext">fanjianfeng@byosoft.com.cn</a><br>
                </span><b>主题<span lang="EN-US">:</span></b><span lang="EN-US"> Re: [edk2-devel] How to guard CAR's
                  stack overflow<o:p></o:p></span></span></p>
          </div>
        </div>
        <p class="MsoNormal" style="text-align:left" align="left"><span lang="EN-US"><o:p> </o:p></span></p>
        <div>
          <div id="rwhMsgHeader">
            <p class="MsoNormal" style="text-align:left" align="left"><span lang="EN-US">You could also try modifying the Ia32
                segment descriptors to
                <span style="background:yellow;mso-highlight:yellow">mark
                  the stack segment as an "expand down" type with a
                  limit set just below the low end of the stack area</span>. 
                That should generate a stack-fault exception if the
                stack overflows, and wouldn't require building page
                tables.  <span style="background:aqua;mso-highlight:aqua">See
                  sections 5.1 - 5.3 of the Intel SDM, volume 3.</span></span><span style="font-size:12.0pt" lang="EN-US"><o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span lang="EN-US">Brian J. Johnson<o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
            <div style="margin-top:7.5pt;margin-bottom:3.75pt">
              <div class="MsoNormal" style="text-align:center" align="center"><span lang="EN-US">
                  <hr width="100%" size="3" align="center">
                </span></div>
            </div>
            <div>
              <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Ni,
                  Ray [<a href="mailto:ray.ni@intel.com" moz-do-not-send="true">mailto:ray.ni@intel.com</a>]<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><b><span lang="EN-US">Sent:</span></b><span lang="EN-US">
                  Wednesday, September 14, 2022, 10:25 PM<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><b><span lang="EN-US">To:</span></b><span lang="EN-US"> <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true" class="moz-txt-link-freetext">                    devel@edk2.groups.io</a> <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true"><devel@edk2.groups.io></a>,
                  <a href="mailto:tigerliu@zhaoxin.com" moz-do-not-send="true" class="moz-txt-link-freetext">tigerliu@zhaoxin.com</a>
                  <a href="mailto:tigerliu@zhaoxin.com" moz-do-not-send="true">                    <tigerliu@zhaoxin.com></a><o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><b><span lang="EN-US">Cc:</span></b><span lang="EN-US"> Fan,
                  Jeff <a href="mailto:fanjianfeng@byosoft.com.cn" moz-do-not-send="true">                    <fanjianfeng@byosoft.com.cn></a><o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><b><span lang="EN-US">Subject:</span></b><span lang="EN-US">
                  [edk2-devel] How to guard CAR's stack overflow<o:p></o:p></span></p>
            </div>
            <p class="MsoNormal" style="mso-margin-top-alt:7.5pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm"><span lang="EN-US"><o:p> </o:p></span></p>
          </div>
        </div>
        <blockquote style="border:none !important; margin-left:0px
          !important; margin-right:0px !important; margin-top:0px
          !important; padding-left:0px !important; padding-right:0px
          !important">
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">It’s doable.</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">You need to enable paging and mark the very
              low 4K area of the stack as not-present.</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">You could use the
              UefiCpuPkg/Library/CpuPageTableLib to help you create the
              1:1 page table with the specific<br>
              4K area as not-present (if you are using x86 processors).</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">Thanks,</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">Ray</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
          <div>
            <div style="border:none;border-top:solid #E1E1E1
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class="MsoNormal" style="text-align:left" align="left"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">
                  <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true" class="moz-txt-link-freetext">devel@edk2.groups.io</a>
                  <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true">                    <devel@edk2.groups.io></a> <b>On Behalf Of </b>Tiger
                  Liu(BJ-RD)<br>
                  <b>Sent:</b> Thursday, September 15, 2022 8:50 AM<br>
                  <b>To:</b> <a href="mailto:devel@edk2.groups.io" moz-do-not-send="true" class="moz-txt-link-freetext">devel@edk2.groups.io</a><br>
                  <b>Subject:</b> [edk2-devel] How to guard CAR's stack
                  overflow</span><span lang="EN-US"><o:p></o:p></span></p>
            </div>
          </div>
          <p class="MsoNormal" style="text-align:left" align="left"><span lang="EN-US"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">Hi, Experts:<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">Usually, we use Cache
              As Ram to setup stack and heap for C language running
              environment before permanent memory has been initialized.<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">So, is there a method
              to guard this phase</span>’<span lang="EN-US">s stack
              overflow?<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">Note:<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">I find udk has
              introduced a method to guard stack overflow after memory
              has been initialized and discovered.<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US">Thanks<o:p></o:p></span></p>
          <p class="MsoNormal" style="margin-bottom:12.0pt;text-align:left" align="left"><span style="font-size:12.0pt;font-family:宋体" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
          <div>
            <p class="MsoNormal" style="text-align:left;line-height:10.0pt" align="left"><span style="font-size:10.0pt;font-family:宋体;color:#595959">保密声明:</span><span lang="EN-US"><o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="text-align:left;line-height:10.0pt" align="left"><span style="font-size:10.0pt;font-family:宋体;color:#595959">本邮件含有保密或专有信息,仅供指定收件人使用。严禁对本邮件或其内容做任何未经授权的查阅、使用、复制或转发。</span><span lang="EN-US"><o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="text-align:left;line-height:10.0pt" align="left"><i><span style="font-size:10.0pt" lang="EN-US">CONFIDENTIAL
                  NOTE:
                </span></i><span lang="EN-US"><o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="text-align:left;line-height:10.0pt" align="left"><i><span style="font-size:10.0pt" lang="EN-US">This email
                  contains confidential or legally privileged
                  information and is for the sole use of its intended
                  recipient. Any unauthorized review, use, copying or
                  forwarding of this email or the content of this email
                  is strictly prohibited.</span></i><span lang="EN-US"><o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="text-align:left" align="left"><span style="font-size:12.0pt;font-family:宋体;color:white" lang="EN-US">_._,_._,_<o:p></o:p></span></p>
          </div>
          <div class="MsoNormal" style="text-align:center" align="center"><span style="font-size:12.0pt;font-family:宋体" lang="EN-US">
              <hr width="100%" size="3" align="center">
            </span></div>
          <p class="MsoNormal" style="text-align:left" align="left"><span style="font-size:12.0pt;font-family:宋体" lang="EN-US">Groups.io
              Links:
              <o:p></o:p></span></p>
          <p><span lang="EN-US">You receive all messages sent to this
              group. <o:p></o:p></span></p>
          <p><span lang="EN-US"><a href="https://edk2.groups.io/g/devel/message/93797" target="_blank" moz-do-not-send="true">View/Reply Online                (#93797)</a> | |
              <a href="https://groups.io/mt/93691088/1761811" target="_blank" moz-do-not-send="true">Mute This Topic</a>
              |
              <a href="https://edk2.groups.io/g/devel/post" moz-do-not-send="true">New Topic</a><br>
              <a href="https://edk2.groups.io/g/devel/editsub/1761811" moz-do-not-send="true">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io" moz-do-not-send="true">                Contact Group Owner</a> | <a href="https://edk2.groups.io/g/devel/unsub" moz-do-not-send="true">Unsubscribe</a> [<a href="mailto:brian.johnson@hpe.com" moz-do-not-send="true" class="moz-txt-link-freetext">brian.johnson@hpe.com</a>]<o:p></o:p></span></p>
          <div>
            <p class="MsoNormal" style="text-align:left" align="left"><span style="font-size:12.0pt;font-family:宋体;color:white" lang="EN-US">_<o:p></o:p></span></p>
          </div>
        </blockquote>
        <p class="MsoNormal" style="text-align:left" align="left"><span style="font-size:12.0pt;font-family:宋体" lang="EN-US"><o:p> </o:p></span></p>
      </div>
      <br>
      <br>
      <div style="font-size:10pt; line-height:10pt; font-family:
        '宋体';color:#595959;">保密声明:</div>
      <div style="font-size:10pt; line-height:10pt; font-family:
        '宋体';color:#595959;">本邮件含有保密或专有信息,仅供指定收件人使用。严禁对本邮件或其内容做任何未经授权的查阅、使用、复制或转发。</div>
      <div style="font-size:10pt; line-height:10pt; font-family: 'Times
        New Roman';color:#595959;">
        <i>CONFIDENTIAL NOTE: </i></div>
      <div style="font-size:10pt; line-height:10pt; font-family: 'Times
        New Roman';color:#595959;">
        <i>This email contains confidential or legally privileged
          information and is for the sole use of its intended recipient.
          Any unauthorized review, use, copying or forwarding of this
          email or the content of this email is strictly prohibited.</i></div>
    </blockquote>
    <div class="moz-signature" signature-switch-id="84333aeb-5735-4b50-bbd8-46184f1ade9a"><br>
    </div>
  </body>
</html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/94142">View/Reply Online (#94142)</a> |    |  <a target="_blank" href="https://groups.io/mt/93691088/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>