From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: star.zeng@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Thu, 25 Jul 2019 18:28:19 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jul 2019 18:28:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,308,1559545200"; d="scan'208";a="161149218" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga007.jf.intel.com with ESMTP; 25 Jul 2019 18:28:17 -0700 Received: from shsmsx107.ccr.corp.intel.com (10.239.4.96) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 25 Jul 2019 18:28:17 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.19]) by SHSMSX107.ccr.corp.intel.com ([169.254.9.65]) with mapi id 14.03.0439.000; Fri, 26 Jul 2019 09:28:15 +0800 From: "Zeng, Star" To: "devel@edk2.groups.io" , "Chiu, Chasel" CC: "Desimone, Nathaniel L" , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH] IntelFsp2Pkg: PeiService pointer not reset to 0 in SecMain Thread-Topic: [edk2-devel] [PATCH] IntelFsp2Pkg: PeiService pointer not reset to 0 in SecMain Thread-Index: AQHVQwDKtzqQpurzV0uPufqkpj755KbcHFmg Date: Fri, 26 Jul 2019 01:28:14 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB04831040382ED1@shsmsx102.ccr.corp.intel.com> References: <20190725155059.84-1-chasel.chiu@intel.com> In-Reply-To: <20190725155059.84-1-chasel.chiu@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: star.zeng@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > Chiu, Chasel > Sent: Thursday, July 25, 2019 11:51 PM > To: devel@edk2.groups.io > Cc: Desimone, Nathaniel L ; Zeng, Star > > Subject: [edk2-devel] [PATCH] IntelFsp2Pkg: PeiService pointer not reset= to 0 > in SecMain >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2018 >=20 > Current FSP SEC_IDT_TABLE structure is not natural aligned: > typedef struct _SEC_IDT_TABLE { > EFI_PEI_SERVICES *PeiService; > UINT64 IdtTable[]; > } SEC_IDT_TABLE; > Compiler will insert DWORD padding between 2 elements and > GetPeiServicesTablePointer() in early phase then always returns padding > data from stack, which was not rest to 0 in SecMain. 'rest' -> 'reset' >=20 > Solution is to align FSP SEC_IDT_TABLE structure to UefiCpuPkg to have > UINT64 as PeiService field and rest it to 0. 'rest' to 'reset' Please correct the typo 'rest' to 'reset' in the commit message. After that, Reviewed-by: Star Zeng . Thanks, Star >=20 > Test: Verified on internal platform and booting successfully > with FSP API mode. >=20 > Cc: Nate DeSimone > Cc: Star Zeng > Signed-off-by: Chasel Chiu > --- > IntelFsp2Pkg/FspSecCore/SecMain.c | 2 +- > IntelFsp2Pkg/FspSecCore/SecMain.h | 10 ++++++++-- > 2 files changed, 9 insertions(+), 3 deletions(-) >=20 > diff --git a/IntelFsp2Pkg/FspSecCore/SecMain.c > b/IntelFsp2Pkg/FspSecCore/SecMain.c > index a63d1336e4..7169afc6c7 100644 > --- a/IntelFsp2Pkg/FspSecCore/SecMain.c > +++ b/IntelFsp2Pkg/FspSecCore/SecMain.c > @@ -114,7 +114,7 @@ SecStartup ( > // | | > // | | > // |-------------------|----> TempRamBase > - IdtTableInStack.PeiService =3D NULL; > + IdtTableInStack.PeiService =3D 0; > AsmReadIdtr (&IdtDescriptor); > if (IdtDescriptor.Base =3D=3D 0) { > ExceptionHandler =3D FspGetExceptionHandler(mIdtEntryTemplate); > diff --git a/IntelFsp2Pkg/FspSecCore/SecMain.h > b/IntelFsp2Pkg/FspSecCore/SecMain.h > index 6fb16febab..af7f387960 100644 > --- a/IntelFsp2Pkg/FspSecCore/SecMain.h > +++ b/IntelFsp2Pkg/FspSecCore/SecMain.h > @@ -1,6 +1,6 @@ > /** @file >=20 > - Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved. > + Copyright (c) 2014 - 2019, Intel Corporation. All rights > + reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > **/ > @@ -29,7 +29,13 @@ typedef VOID (*PEI_CORE_ENTRY) ( \ ); >=20 > typedef struct _SEC_IDT_TABLE { > - EFI_PEI_SERVICES *PeiService; > + // > + // Reserved 8 bytes preceding IDT to store EFI_PEI_SERVICES**, since > + IDT base // address should be 8-byte alignment. > + // Note: For IA32, only the 4 bytes immediately preceding IDT is used > + to store // EFI_PEI_SERVICES** // > + UINT64 PeiService; > UINT64 IdtTable[FixedPcdGet8 (PcdFspMaxInterruptSupported)= ]; > } SEC_IDT_TABLE; >=20 > -- > 2.13.3.windows.1 >=20 >=20 >=20