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. 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. -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

