<div dir="ltr"><div>Hi, </div><div><br></div><div>This is not about UefiPayload. I did not have GCC5 in my environment, so I use a newer GCC to compile. However, in newer gcc (let's say GCC8), it generates floating point instructions in each function and system will crash as you mentioned that we did not handle it in UEFI. </div><div><br></div><div>I uploaded this patch because many people from our group use newer GCC and it will be more convenient if we can disable it with a flag (otherwise, we need to maintain a local patch). I guess the real fix (bigger work) is for EDK2 to support the newer GCC version in its toolchain (create something like *_GCC8_*). </div><div><br></div><div>Back to the question, I think it should be no harm to add these flags to tool_defs.txt if EDK2 did not expect the compiler to generate MMX/SSE instructions in the first place.</div><div><br></div><div><div>--</div><div>Cheng-Chieh</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jul 24, 2021 at 12:46 AM Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">







<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="gmail-m_-632103578045631302WordSection1">
<p class="MsoNormal"><span>Can you provide details on why this flag was needed in the
<span class="gmail-m_-632103578045631302SpellE">UefiPayloadPkg</span> use case?<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>If the newer versions of the GCC compilers are injecting use of MMX/SSE instructions from optimization of C code, then we need
 to unconditionally disable that usage in tools_def.txt.<span> 
</span>The only place MMX/SSE instructions can be used is in NASM files with proper save/restore of the MMX/SSE state.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Here is an example with use of xmm0 that is saved/restored on the stack.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-indent:0.5in"><span><a href="https://github.com/tianocore/edk2/blob/master/MdePkg/Library/BaseMemoryLibSse2/X64/CopyMem.nasm" target="_blank">https://github.com/tianocore/edk2/blob/master/MdePkg/Library/BaseMemoryLibSse2/X64/CopyMem.nasm</a><u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Mike<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span>From:</span></b><span> Cheng-Chieh Huang <<a href="mailto:chengchieh@google.com" target="_blank">chengchieh@google.com</a>>
<br>
<b>Sent:</b> Friday, July 23, 2021 4:17 AM<br>
<b>To:</b> gaoliming <<a href="mailto:gaoliming@byosoft.com.cn" target="_blank">gaoliming@byosoft.com.cn</a>><br>
<b>Cc:</b> <a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com" target="_blank">michael.d.kinney@intel.com</a>><br>
<b>Subject:</b> Re: [edk2-devel] [PATCH v1 5/6] UefiPayloadPkg: Add DISABLE_MMX_SSE to avoid generating floating points operation<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">I got what you mean by "Tools_def.txt doesn’t support build flag" now. I thought the parser does support some sort of if/else condition, but it seems to be not the case. Alternatively, we can do this during the copy (from template to tools_def.txt),
 but everytime we need to recreate tools_def.txt which is not ideal).<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">In that case, I think we should just roll back to only doing this in UefiPayloadPkg.dsc. If other packs want to add these flags, they will need to do it on their own.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, Jul 23, 2021 at 6:29 PM gaoliming <<a href="mailto:gaoliming@byosoft.com.cn" target="_blank">gaoliming@byosoft.com.cn</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:DengXian">How do you add this support in tools_def? Can you give the proposal for it?</span><span><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:DengXian"> </span><span><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:DengXian">Thanks</span><span><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:DengXian">Liming</span><span><u></u><u></u></span></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal">
<b><span lang="ZH-CN" style="font-family:DengXian">发件人</span></b><b><span style="font-family:DengXian">:</span></b><span style="font-family:DengXian"> Cheng-Chieh Huang <<a href="mailto:chengchieh@google.com" target="_blank">chengchieh@google.com</a>>
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2021<span lang="ZH-CN">年</span>7<span lang="ZH-CN">月</span>22<span lang="ZH-CN">日</span> 10:35<br>
<b><span lang="ZH-CN">收件人</span>:</b> gaoliming <<a href="mailto:gaoliming@byosoft.com.cn" target="_blank">gaoliming@byosoft.com.cn</a>><br>
<b><span lang="ZH-CN">抄送</span>:</b> <a href="mailto:devel@edk2.groups.io" target="_blank">
devel@edk2.groups.io</a>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com" target="_blank">michael.d.kinney@intel.com</a>><br>
<b><span lang="ZH-CN">主题</span>:</b> Re: [edk2-devel] [PATCH v1 5/6] UefiPayloadPkg: Add DISABLE_MMX_SSE to avoid generating floating points operation</span><span><u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span>I mean, I will submit a patch to support DISABLE_GCC_MMX_SSE in tools_def. What do you think?<u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span>--<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span>Cheng-Chieh<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span>On Thu, Jul 22, 2021 at 9:28 AM gaoliming <<a href="mailto:gaoliming@byosoft.com.cn" target="_blank">gaoliming@byosoft.com.cn</a>> wrote:<u></u><u></u></span></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:DengXian">Tools_def.txt doesn<span lang="ZH-CN">’</span>t support build flag
</span><span>DISABLE_GCC_MMX_SSE. If this flag is moved into BaseTools\Conf\tools_def.template, -mno-mmx -mno-sse option will be the default GCC options. That means all platforms will apply them.
<u></u><u></u></span></p>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
<p class="MsoNormal"><span>Thanks<u></u><u></u></span></p>
<p class="MsoNormal"><span>Liming<u></u><u></u></span></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal">
<b><span lang="ZH-CN" style="font-family:DengXian">发件人</span></b><b><span style="font-family:DengXian">:</span></b><span style="font-family:DengXian">
<a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a> <<a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a>>
<b><span lang="ZH-CN">代表 </span></b>Cheng-Chieh Huang via <a href="http://groups.io" target="_blank">
groups.io</a><br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2021<span lang="ZH-CN">年</span>7<span lang="ZH-CN">月</span>22<span lang="ZH-CN">日</span> 1:43<br>
<b><span lang="ZH-CN">收件人</span>:</b> Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com" target="_blank">michael.d.kinney@intel.com</a>><br>
<b><span lang="ZH-CN">抄送</span>:</b> <a href="mailto:devel@edk2.groups.io" target="_blank">
devel@edk2.groups.io</a><br>
<b><span lang="ZH-CN">主题</span>:</b> Re: [edk2-devel] [PATCH v1 5/6] UefiPayloadPkg: Add DISABLE_MMX_SSE to avoid generating floating points operation</span><span><u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span>Yes, we can. I will drop this patch for this  uefipayload batch and send another one for support DISABLE_GCC_MMX_SSE in tools_de.txt.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span>--<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"><span>Cheng-Chieh <u></u><u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span>On Thu, Jul 22, 2021, 12:35 AM Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com" target="_blank">michael.d.kinney@intel.com</a>>
 wrote:<u></u><u></u></span></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<p class="MsoNormal" style="margin-bottom:12pt"><span>Are those flags needed for all packages that build with GCC?<br>
<br>
Should this be moved into tools_def.txt?<br>
<br>
Mike<br>
<br>
> -----Original Message-----<br>
> From: <a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a> <<a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a>> On Behalf Of Cheng-Chieh Huang via
<a href="http://groups.io" target="_blank">groups.io</a><br>
> Sent: Wednesday, July 21, 2021 6:23 AM<br>
> To: <a href="mailto:devel@edk2.groups.io" target="_blank">devel@edk2.groups.io</a><br>
> Cc: Cheng-Chieh Huang <<a href="mailto:chengchieh@google.com" target="_blank">chengchieh@google.com</a>><br>
> Subject: [edk2-devel] [PATCH v1 5/6] UefiPayloadPkg: Add DISABLE_MMX_SSE to avoid generating floating points operation<br>
> <br>
> This will allow we compile payload using gcc8<br>
> <br>
> Signed-off-by: Cheng-Chieh Huang <<a href="mailto:chengchieh@google.com" target="_blank">chengchieh@google.com</a>><br>
> ---<br>
>  UefiPayloadPkg/UefiPayloadPkg.dsc | 5 +++++<br>
>  1 file changed, 5 insertions(+)<br>
> <br>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc<br>
> index 8aa5f18cd35c..fa41c5a24af5 100644<br>
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc<br>
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc<br>
> @@ -30,6 +30,8 @@ [Defines]<br>
>    DEFINE PS2_KEYBOARD_ENABLE          = FALSE<br>
>    DEFINE UNIVERSAL_PAYLOAD            = FALSE<br>
> <br>
> +  DEFINE DISABLE_MMX_SSE              = FALSE<br>
> +<br>
>    #<br>
>    # SBL:      UEFI payload for Slim Bootloader<br>
>    # COREBOOT: UEFI payload for coreboot<br>
> @@ -96,6 +98,9 @@ [BuildOptions]<br>
>    *_*_*_CC_FLAGS                 = -D DISABLE_NEW_DEPRECATED_INTERFACES<br>
>  !if $(BOOTLOADER) == "LINUXBOOT"<br>
>    *_*_*_CC_FLAGS                 = -D LINUXBOOT_PAYLOAD<br>
> +!endif<br>
> +!if $(DISABLE_MMX_SSE)<br>
> +  *_*_*_CC_FLAGS                 = -mno-mmx -mno-sse<br>
>  !endif<br>
>    GCC:*_UNIXGCC_*_CC_FLAGS       = -DMDEPKG_NDEBUG<br>
>    GCC:RELEASE_*_*_CC_FLAGS       = -DMDEPKG_NDEBUG<br>
> --<br>
> 2.32.0.402.g57bb445576-goog<br>
> <br>
> <br>
> <br>
> <br>
> <u></u><u></u></span></p>
</blockquote>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span><u></u><u></u></span></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>

</blockquote></div>


 <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/78142">View/Reply Online (#78142)</a> |    |  <a target="_blank" href="https://groups.io/mt/84401664/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>