On 06/20/16 10:07, Gao, Liming wrote:
> Laszlo:
>   New changes:
> 
> 1.       Yes. nasm is listed first in BUILDRULEORDER so nasm source file will 
> be used.
> 
> 3.       The files in MdePkg are auto converted. Most of the files in other 
> packages manually are updated. They are updated based on the auto converted 
> version.

As I suspected, the manual conversion of the mode switches / mixed mode
code turned out to be a bit risky. I ran the following tests with OVMF
(all VMs used 4 or 8 VCPUs):

Fedora guest:

* Ia32 build with SMM_REQUIRE: S3 resume is broken. I'll follow up with
  a patch for this. (It can be squashed into your corresponding patch,
  but some credit in the commit message would be nice :) -- it wasn't
  easy to find and fix this issue.)

* Ia32 build without SMM_REQUIRE: S3 works fine.

* Ia32X64 build with SMM_REQUIRE: S3 resume is broken. It has the same
  error as the Ia32 build, but in two places. I'll follow up with
  another patch for this.

* Ia32X64 build without SMM_REQUIRE: S3 works fine.

* X64 build with SMM_REQUIRE: in this case, S3Resume2Pei doesn't
  support S3, so I disabled it on the QEMU command line, and tested
  only cold-boot. It works fine.

* X64 build without SMM_REQUIRE: S3 works fine.

For the rest of the patches in the series: it seems they are fine (my
testing doesn't seem to have turned up any more errors), but I don't
think I'll figure out what patches exactly (from the 351 :)) I should
respond to with my Tested-by.

Instead, I collected a list of object files that got built for my most
common tests. I'm attaching that list. For those patches that modify
files *only* on this list, if you guys are willing to track them down
(maybe with a script?), I'm okay to add my T-b, I guess.

After applying my two fixup patches mentioned above, I did some more
tests with the Ia32X64 + SMM_REQUIRE build:

- Tested key enrollment and SB enablement with the
  "EnrollDefaultKeys.efi" app. (This used to trigger an SMM stack
  overflow earlier, until we fixed it in 509f8425b75d^..0d0c245dfb14.)
  It works fine.

- Tested an S3 cycle with a Windows 8.1 guest. It's a PASS.

Thanks
Laszlo

>  Verification
> 
> 1.       I compile .asm and .nasm source, and use VS dumpbin tool to dump the 
> obj file to compare the disassembly code.
> 
>   Yes. I give the example here for window users. Most linux user doesn't need 
> to configure NASM_PREFIX, because nasm is in system PATH.
> 
> Thanks
> Liming
> From: Laszlo Ersek [mailto:ler...@redhat.com]
> Sent: Saturday, June 18, 2016 5:51 AM
> To: Gao, Liming <liming....@intel.com>; edk2-de...@ml01.01.org
> Cc: Justen, Jordan L <jordan.l.jus...@intel.com>
> Subject: Re: [edk2] [Patch 000/351] Convert EDK II core packages to NASM for 
> IA32/X64
> 
> On 06/16/16 03:46, Liming Gao wrote:
>> These patches are available in https://github.com/lgao4/edk2.git nasm-v1.
>> The nasm-v1 branch sha1 is 42bec457c575b6cb7c9fc1730cbea263ffce7b1c
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Liming Gao
>> Signed-off-by: Jordan Justen
>>
>> These patches base on previous patches in
>> http://thread.gmane.org/gmane.comp.bios.tianocore.devel/10977.
>> New changes in these patches includes:
>> 1. Keep ASM, GAS and NASM all. User can configure BUILDRULEORDER to specify
>> which one will be used.
> 
> The current catch-all rule seems to be
> 
> Conf/tools_def.template:*_*_*_*_BUILDRULEORDER = nasm asm Asm ASM S s
> 
> I guess that should continue working for me, right?
> 
>> 2. Add NASM in new modules from UefiCpuPkg, IntelFsp2Pkg and 
>> IntelFsp2WrapperPkg.
>> 3. Use 16bit and 32bit assembly code to replace hard code db.
> 
> This last step looks pretty error prone -- was this automated, or
> converted manually?
> 
>> The done test includes:
>> 1. Verify the output obj file from ASM and NASM to make sure the output obj
>> have the same disassembly code.
> 
> OTOH, binary comparison should make it pretty safe.
> 
>> 2. Verify OvmfIa32X64 boot to Shell on VS2015x86.
>> 3. Verify OVMF X64 when booting to arch linux, and with S3 suspend/resume.
>>
>> These patches convert these package to use NASM for IA32 & X64
>> * MdePkg
>> * MdeModulePkg
>> * IntelFrameworkModulePkg
>> * UefiCpuPkg
>> * SourceLevelDebugPkg
>> * PcAtChipsetPkg
>> * IntelFsp2Pkg
>> * IntelFsp2WrapperPkg
>>
>> Package maintainers: Could you help review and verify your package? If you 
>> find
>> any issues, please let us know.
> 
> I'm adding this to my TODO list. Hopefully I can play a little with this
> next week.
> 
> Just to make sure, the above BUILDRULEORDER should ensure that the new
> NASM files will be utilized in my build, right?
> 
>> Notes: these patches will cause NASM compiler to be required for all IA32 
>> and X64
>> toolchains with the default tool configuration.
>> NASM compiler can be downloaded from http://www.nasm.us/
>> After download it, please configure NASM_PREFIX env to point to its 
>> directory.
>> For example, I place nasm.exe in C:\nasm directory, then set 
>> NASM_PREFIX=C:\nasm\
> 
> (I think this advice is Windows-specific; for me the "nasm" binary is
> simply on PATH -- /usr/bin/nasm.)
> 
> Thanks!
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to