On 10/13/15 20:47, Jordan Justen wrote:
> On 2015-10-13 10:49:23, Michael Kinney wrote:
>> Fix build breaks when building with VS20xx.  The
>> loop that fills the BaseExtractGuidedSectionLib
>> handler table with zeros must use a volatile variable
>> to prevent the optimizing compiler from adding a call
>> to a compiler intrinsic.
>>
>> Also, update initialization of SEC phase to initialze
>> the state of the Local APIC Timer hardware before the
>> DebugAgentLib is initialized that depends on the Local
>> APIC Timer hardware being in an initialized state.
>> An ASSERT() was recently added to Local APIC libs
>> to verifiy that the Local APIC is initialized before
>> use and if SOURCE_DEBUG_ENABLE is set, this ASSERT()
>> was being triggered.
> 
> Sounds like 2 separate changes.

I agree. What's more, the APIC change seems orthogonal to the SMM work,
hence I think either the blurb (= 0/3) subject should be changed (from
"SMM patch issues"), or the LAPIC timer init should not only be in a
separate patch, but even in a separate posting (i.e., outside of this
series).

> 
> Actually, for the 'Table' issue, I think you should just reply to
> Laszlo's "OvmfPkg: Sec: force reinit of BaseExtractGuidedSectionLib
> handler table" and ask him to use ZeroMem instead of the loop.

There's a comment about that in the code. The zeroing happens (must
happen) before any library constructors are invoked. Therefore no
library functions can be called.

Thanks!
Laszlo

> 
> -Jordan
> 
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Michael Kinney <[email protected]>
>> ---
>>  OvmfPkg/Sec/SecMain.c   | 11 ++++++++---
>>  OvmfPkg/Sec/SecMain.inf |  3 ++-
>>  2 files changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/OvmfPkg/Sec/SecMain.c b/OvmfPkg/Sec/SecMain.c
>> index 26a54d0..5ad62a5 100644
>> --- a/OvmfPkg/Sec/SecMain.c
>> +++ b/OvmfPkg/Sec/SecMain.c
>> @@ -1,7 +1,7 @@
>>  /** @file
>>    Main SEC phase code.  Transitions to PEI.
>>  
>> -  Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
>> +  Copyright (c) 2008 - 2015, 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
>> @@ -28,6 +28,7 @@
>>  #include <Library/PeCoffGetEntryPointLib.h>
>>  #include <Library/PeCoffExtraActionLib.h>
>>  #include <Library/ExtractGuidedSectionLib.h>
>> +#include <Library/LocalApicLib.h>
>>  
>>  #include <Ppi/TemporaryRamSupport.h>
>>  
>> @@ -717,6 +718,7 @@ SecCoreStartupWithStack (
>>    SEC_IDT_TABLE               IdtTableInStack;
>>    IA32_DESCRIPTOR             IdtDescriptor;
>>    UINT32                      Index;
>> +  volatile UINT8              *Table;
>>
>>    //
>>    // This code may be running on the S3 resume boot path, where RAM has been
>> @@ -731,8 +733,6 @@ SecCoreStartupWithStack (
>>    // invocations are preprocessed to constants.)
>>    //
>>    if (FeaturePcdGet (PcdSmmSmramRequire)) {
>> -    UINT8 *Table;
>> -
>>      Table = (UINT8*)(UINTN)FixedPcdGet64 
>> (PcdGuidedExtractHandlerTableAddress);
>>
>>      for (Index = 0;
>>           Index < FixedPcdGet32 (PcdGuidedExtractHandlerTableSize);
>> @@ -815,6 +815,11 @@ SecCoreStartupWithStack (
>>    //
>>    IoWrite8 (0x21, 0xff);
>>    IoWrite8 (0xA1, 0xff);
>> +
>> +  //
>> +  // Initialize Local APIC Timer hardware before initializing the Debug 
>> Agent and the debug timer is enabled
>> +  //
>> +  InitializeApicTimer (0, MAX_UINT32, TRUE, 5);
>>    
>>    //
>>    // Initialize Debug Agent to support source level debug in SEC/PEI phases 
>> before memory ready.
>> diff --git a/OvmfPkg/Sec/SecMain.inf b/OvmfPkg/Sec/SecMain.inf
>> index 2215dd9..711b595 100644
>> --- a/OvmfPkg/Sec/SecMain.inf
>> +++ b/OvmfPkg/Sec/SecMain.inf
>> @@ -1,7 +1,7 @@
>>  ## @file
>>  #  SEC Driver
>>  #
>> -#  Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
>> +#  Copyright (c) 2008 - 2015, 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
>> @@ -55,6 +55,7 @@
>>    PeCoffGetEntryPointLib
>>    PeCoffExtraActionLib
>>    ExtractGuidedSectionLib
>> +  LocalApicLib
>>  
>>  [Ppis]
>>    gEfiTemporaryRamSupportPpiGuid                # PPI ALWAYS_PRODUCED
>> -- 
>> 1.9.5.msysgit.1
>>
>> _______________________________________________
>> edk2-devel mailing list
>> [email protected]
>> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to