Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Liu, Zhiguang <zhiguang....@intel.com> > Sent: Thursday, August 25, 2022 10:55 AM > To: devel@edk2.groups.io > Cc: Liu, Zhiguang <zhiguang....@intel.com>; Dong, Eric > <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Kumar, Rahul R > <rahul.r.ku...@intel.com> > Subject: [PATCH] UefiCpuPkg/MpInitLib: Fix potential issue when IDT table is > at above 4G > > Currently, when waking up AP, IDT table of AP will be set in 16 bit code, > and assume the IDT table base is 32 bit. However, the IDT table is created > by BSP. Issue will happen if the BSP allocates memory above 4G for BSP's > IDT table. Moreover, even the IDT table location is below 4G, the handler > function inside the IDT table is 64 bit, and it won't take effect until > CPU transfers to 64 bit long mode. There is no benefit to set IDT table in > such an early phase. > To avoid such issue, this patch moves the LIDT instruction into 64 bit > code. > > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > index 1daaa72b1e..cd95b03da8 100644 > --- a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > @@ -64,9 +64,6 @@ BITS 16 > mov si, MP_CPU_EXCHANGE_INFO_FIELD (GdtrProfile) > o32 lgdt [cs:si] > > - mov si, MP_CPU_EXCHANGE_INFO_FIELD (IdtrProfile) > -o32 lidt [cs:si] > - > ; > ; Switch to protected mode > ; > @@ -154,6 +151,11 @@ BITS 64 > > LongModeStart: > mov esi, ebx > + > + ; Set IDT table at the start of 64 bit code > + lea edi, [esi + MP_CPU_EXCHANGE_INFO_FIELD (IdtrProfile)] > + lidt [edi] > + > lea edi, [esi + MP_CPU_EXCHANGE_INFO_FIELD (InitFlag)] > cmp qword [edi], 1 ; ApInitConfig > jnz GetApicId > -- > 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92808): https://edk2.groups.io/g/devel/message/92808 Mute This Topic: https://groups.io/mt/93241591/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-