Laszlo and Jordan, I agree. Thanks for the feedback.
The SOURCE_DEBUG_ENABLE issue is a completely separate issue and I will regenerate a patch for that issue that is not related to SMM work. It only got into the mix of changes because I was using SOURCE_DEBUG_ENABLE to debug some SMM issues. Mike >-----Original Message----- >From: Laszlo Ersek [mailto:[email protected]] >Sent: Tuesday, October 13, 2015 11:56 AM >To: Justen, Jordan L; Kinney, Michael D; [email protected] >Subject: Re: [edk2] [PATCH 2/3] OvmfPkg: Fix VS20xx and DebugAgent ASSERT() > >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

