Laszlo:
  Thanks for your test and finding. I notice this difference between asm and 
nasm output file. I read IA32 manual to try understanding 66 and 67 prefix 
operand. I wrongly think 66 has the same functionality to 66 67. So, I think 
they are same. I will go through all patches to make sure there is no other 67 
missing. 

ASM dump:
  00000032: 66 67 EA 00 00 00  jmp         _RendezvousFunnelProc
            00
NASM dump:
    00000032: 66 EA 00 00 00 00  jmp         _RendezvousFunnelProc

Thanks
Liming
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Tuesday, June 21, 2016 9:21 AM
> To: Laszlo Ersek <ler...@redhat.com>; Justen, Jordan L
> <jordan.l.jus...@intel.com>; Gao, Liming <liming....@intel.com>; Kinney,
> Michael D <michael.d.kin...@intel.com>
> Cc: edk2-de...@ml01.01.org
> Subject: RE: [edk2] [Patch 000/351] Convert EDK II core packages to NASM
> for IA32/X64
> 
> Liming,
> 
> Where these 2 files missed in your binary compare of output?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Laszlo Ersek
> > Sent: Monday, June 20, 2016 5:59 PM
> > To: Justen, Jordan L <jordan.l.jus...@intel.com>; Gao, Liming
> <liming....@intel.com>
> > Cc: edk2-de...@ml01.01.org
> > Subject: Re: [edk2] [Patch 000/351] Convert EDK II core packages to NASM
> for IA32/X64
> >
> > On 06/21/16 02:31, Jordan Justen wrote:
> > > On 2016-06-20 16:28:04, Laszlo Ersek wrote:
> > >> 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.)
> > >>
> > >
> > > Since we didn't compare the .S output, I guess this means that the .S
> > > and .asm were producing different results. This must mean that a
> > > visual studio based build would not have worked with SMM_REQUIRE
> > > previously.
> >
> > The 0x67 address-size prefixes that were missing from the NASM-
> generated
> > machine code, and that I had to fix up in the manually converted NASM
> > source, are open-coded in *both* .S and .asm.
> >
> > When I found these errors, I was really surprised, because a binary
> > comparison against the machine code built from the original, unconverted
> > source should have found them. Therefore I assumed that the binary
> > comparison that you guys did didn't cover these specific files.
> >
> > If that's not the case, then there is only one possible explanation:
> > from the same NASM source code, my nasm (nasm-2.10.07-7.el7.x86_64)
> > generates different machine code from yours.
> >
> > Thanks
> > Laszlo
> >
> > > Another reason to move to one set of source code for these functions.
> > >
> > > -Jordan
> > >
> > >> * 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
> >
> > _______________________________________________
> > 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