On 05/20/14 20:08, Jordan Justen wrote:
> On Tue, May 20, 2014 at 2:01 AM, Laszlo Ersek <ler...@redhat.com> wrote:
>> Three questions:
>>
>> On 05/19/14 23:27, Jordan Justen wrote:
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com>
>>> ---
>>>  OvmfPkg/OvmfPkgIa32.dsc    | 2 ++
>>>  OvmfPkg/OvmfPkgIa32.fdf    | 6 +++---
>>>  OvmfPkg/OvmfPkgIa32X64.dsc | 2 ++
>>>  OvmfPkg/OvmfPkgIa32X64.fdf | 6 +++---
>>>  OvmfPkg/OvmfPkgX64.dsc     | 2 ++
>>>  OvmfPkg/OvmfPkgX64.fdf     | 6 +++---
>>>  6 files changed, 15 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
>>> index f7064b7..1ceb909 100644
>>> --- a/OvmfPkg/OvmfPkgIa32.dsc
>>> +++ b/OvmfPkg/OvmfPkgIa32.dsc
>>> @@ -337,6 +337,8 @@
>>>  #
>>>  
>>> ################################################################################
>>>  [Components]
>>> +  OvmfPkg/ResetVector/ResetVector.inf
>>> +
>>>    #
>>>    # SEC Phase modules
>>>    #
>>> diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
>>> index 76b868d..411e9de 100644
>>> --- a/OvmfPkg/OvmfPkgIa32.fdf
>>> +++ b/OvmfPkg/OvmfPkgIa32.fdf
>>> @@ -1,7 +1,7 @@
>>>  ## @file
>>>  #  Open Virtual Machine Firmware: FDF
>>>  #
>>> -#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
>>> +#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
>>>  #
>>>  #  This program and the accompanying materials
>>>  #  are licensed and made available under the terms and conditions of the 
>>> BSD License
>>> @@ -187,7 +187,7 @@ READ_LOCK_STATUS   = TRUE
>>>  #
>>>  INF  OvmfPkg/Sec/SecMain.inf
>>>
>>> -INF  RuleOverride=RESET_VECTOR 
>>> UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf
>>> +INF  RuleOverride=RESET_VECTOR OvmfPkg/ResetVector/ResetVector.inf
>>>
>>>  
>>> ################################################################################
>>>  [FV.PEIFV]
>>> @@ -503,5 +503,5 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
>>>
>>>  [Rule.Common.SEC.RESET_VECTOR]
>>>    FILE RAW = $(NAMED_GUID) {
>>> -    RAW RAW                |.raw
>>> +    RAW BIN   Align = 16   |.bin
>>>    }
>>
>> Ia32, before the patch:
>> (1) "UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf" said
>>
>> [Binaries.Ia32]
>>   RAW|ResetVector.ia32.raw|*
>>
>> (2) "UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.raw" was prepared
>> with "UefiCpuPkg/ResetVector/Vtf0/Build.py".
>>
>> (3) Which invoked "nasm" on
>> "UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm", and fixed up the
>> output with "UefiCpuPkg/ResetVector/Vtf0/Tools/FixupForRawSection.py".
>>
>> For Ia32, the fixup means padding with a NOP slide at the front, so that
>> the resultant file size is 4, modulo 8.
>>
>> (4) The "UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.raw" file was
>> included with the RESET_VECTOR rule:
>> - output file type RAW: binary data,
>> - NAMED_GUID: uses FILE_GUID from INF/[defines], ie.
>>   EFI_FFS_VOLUME_TOP_FILE_GUID
>> - we have one leaf section pattern, with:
>>   - section type: RAW
>>   - input file type: RAW
>>   - options: none
>>   - extension: .raw -- one leaf section is instantiated for each .raw
>>     file listed in the INF file that is connected to the rule.
>>     "UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf" -->
>>     "UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.raw"
>>
>> After the patch:
>> (1) "OvmfPkg/ResetVector/ResetVector.inf" (from patch 3) says
>>
>> [Sources]
>>   ResetVector.nasmbin
>>
>> (2), (3) for which the build rule (from patch 1) designates
>> "OvmfPkg/ResetVector/ResetVector.bin" as output file.
>>
>> The source is "OvmfPkg/ResetVector/ResetVector.nasmbin", which is
>> identical to "UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm". OK.
>>
>> The output is not fixed up with FixupForRawSection.py.
>>
>> (4) "OvmfPkg/ResetVector/ResetVector.bin" is included with the new
>> RESET_VECTOR rule:
>> - output file type RAW: binary data; unchanged, good.
>> - NAMED_GUID: uses FILE_GUID from INF/[defines], ie.
>>   EFI_FFS_VOLUME_TOP_FILE_GUID; unchanged, good.
>> - we have one leaf section pattern, with:
>>   - section type: RAW
>>   - input file type: BIN -- changed.
>>   - options: Align = 16; changed
>>   - extension: .bin -- one leaf section is instantiated for each .bin
>>     file listed in the INF file that is connected to the rule.
>>     "OvmfPkg/ResetVector/ResetVector.inf" -->
>>     "OvmfPkg/ResetVector/ResetVector.bin"
>>
>> Questions:
>>
>> Q1: Why is the input file type in the leaf section pattern changed from
>> RAW to BIN? The FDF spec doesn't seem to explain the BIN file type. Are
>> we doing this only to match the file suffix ".bin"?
> 
> I think I was matching what I saw another platform do when building
> the VTF during the EDK II build.
> 
> I think RAW could still work.
> 
>> Q2: We seem to replace the NOP slide at the front (which ensures that
>> the file going into the section has size 4 modulo 8), with an Alignment
>> of 16. Why does this work?
> 
> Hmm, I think the 4 modulo 8 was that Fv's want sections to start with
> 8 alignment, and there is a 4 byte section header. Therefore we had to
> pad the file so GenFv could be happy putting it (properly aligned) at
> the end of the FV.
> 
> But, I think all we really needed was to ask for alignment of the
> binary, and GenFv could handle all that for us. Maybe the old way was
> going through more effort than required.
> 
>>> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
>>> index 26d1132..66a4bc3 100644
>>> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
>>> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
>>> @@ -343,6 +343,8 @@
>>>  #
>>>  
>>> ################################################################################
>>>  [Components.IA32]
>>> +  OvmfPkg/ResetVector/ResetVector.inf
>>> +
>>>    #
>>>    # SEC Phase modules
>>>    #
>>> diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
>>> index e037b72..c2ff257 100644
>>> --- a/OvmfPkg/OvmfPkgIa32X64.fdf
>>> +++ b/OvmfPkg/OvmfPkgIa32X64.fdf
>>> @@ -1,7 +1,7 @@
>>>  ## @file
>>>  #  Open Virtual Machine Firmware: FDF
>>>  #
>>> -#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
>>> +#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
>>>  #
>>>  #  This program and the accompanying materials
>>>  #  are licensed and made available under the terms and conditions of the 
>>> BSD License
>>> @@ -187,7 +187,7 @@ READ_LOCK_STATUS   = TRUE
>>>  #
>>>  INF  OvmfPkg/Sec/SecMain.inf
>>>
>>> -INF  RuleOverride=RESET_VECTOR USE = IA32 
>>> UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf
>>> +INF  RuleOverride=RESET_VECTOR OvmfPkg/ResetVector/ResetVector.inf
>>>
>>>  
>>> ################################################################################
>>>  [FV.PEIFV]
>>> @@ -503,5 +503,5 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
>>>
>>>  [Rule.Common.SEC.RESET_VECTOR]
>>>    FILE RAW = $(NAMED_GUID) {
>>> -    RAW RAW                |.raw
>>> +    RAW BIN   Align = 16   |.bin
>>>    }
>>
>> Same questions here, plus another one:
>>
>> Q3: Why is it safe to drop "USE = IA32" in the above?
>>
>> (I don't think it is, but I could be wrong.)
> 
> Yikes, I forgot to test this. (I need to make OvmfPkg/build.sh support
> the IA32+X64 combination, so it is easier to test. :)
> 
> But, I think since the dsc references the .inf in an IA32 area, then I
> think the FDF knows to use IA32.

If you get a good test result, please post it, and then I'll add my R-b.
I'm OK with answers 1 and 2.

Thanks!
Laszlo


------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to