]> git.proxmox.com Git - mirror_edk2.git/commit - IntelFsp2Pkg/FspSecCore/SecMain.c
IntelFsp2Pkg: PeiService pointer not reset to 0 in SecMain
authorChasel Chiu <chasel.chiu@intel.com>
Thu, 25 Jul 2019 14:22:29 +0000 (22:22 +0800)
committerChasel Chiu <chasel.chiu@intel.com>
Fri, 26 Jul 2019 01:47:27 +0000 (09:47 +0800)
commit520a1e60de4341f55c59cf4680d6d0242a7f929f
tree96c957ff4004e028e3ca609c2c559b797a54f324
parent0dd8d7d556df46c503254d37b22b2b34f6ad12f6
IntelFsp2Pkg: PeiService pointer not reset to 0 in SecMain

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2018

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 reset to 0
in SecMain.

Solution is to align FSP SEC_IDT_TABLE structure to UefiCpuPkg
to have UINT64 as PeiService field and reset it to 0.

Test: Verified on internal platform and booting successfully
      with FSP API mode.

Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
IntelFsp2Pkg/FspSecCore/SecMain.c
IntelFsp2Pkg/FspSecCore/SecMain.h