Reviewed-by: jiewen....@intel.com
> -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Ni, > Ruiyu > Sent: Monday, March 19, 2018 1:54 PM > To: Wu, Hao A <hao.a...@intel.com>; edk2-devel@lists.01.org > Cc: Dong, Eric <eric.d...@intel.com>; Yao, Jiewen <jiewen....@intel.com>; > Laszlo Ersek <ler...@redhat.com>; Zeng, Star <star.z...@intel.com> > Subject: Re: [edk2] [PATCH] UefiCpuPkg/MpInitLib: Disable interrupt at > ExitBootServices AP Mwait > > On 3/19/2018 1:31 PM, Hao Wu wrote: > > Within function ApWakeupFunction(): > > > > When source level debugger is enabled, AP interrupts will be enabled by > > EnableDebugAgent(). Then the AP function will be execeuted by: > > > > Procedure (Parameter); > > > > After the AP function returns, AP interrupts will be disabled when the > > APs are placed in loop mode (both HltLoop and MwaiLoop). > > > > However, at ExitBootServices, ApWakeupFunction() is called with > > 'Procedure' equals to RelocateApLoop(). > > > > (ExitBootServices callback registered within InitMpGlobalData()) > > > > RelocateApLoop() never retuns, so it has to disable the AP interrupts by > > itself. However, we find that interrupts are only disabled for the > > HltLoop case, but not for the MwaitLoop case (within file MpFuncs.nasm). > > > > This commit adds the missing disabling of AP interrupts for MwaitLoop. > > > > Also, for X64, this commit will disable the interrupts before switching to > > 32-bit mode. > > > > Cc: Laszlo Ersek <ler...@redhat.com> > > Cc: Jeff Fan <vanjeff_...@hotmail.com> > > Cc: Ruiyu Ni <ruiyu...@intel.com> > > Cc: Jiewen Yao <jiewen....@intel.com> > > Cc: Jian J Wang <jian.j.w...@intel.com> > > Cc: Star Zeng <star.z...@intel.com> > > Cc: Eric Dong <eric.d...@intel.com> > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Hao Wu <hao.a...@intel.com> > > --- > > UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm | 3 ++- > > UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm | 4 +++- > > 2 files changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > > index bd79be0f5e..59e88d3f8f 100644 > > --- a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > > +++ b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > > @@ -1,5 +1,5 @@ > > > > ;------------------------------------------------------------------------------ > > ; > > -; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR> > > +; Copyright (c) 2015 - 2018, 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 > > ; which accompanies this distribution. The full text of the license may > > be > found at > > @@ -239,6 +239,7 @@ AsmRelocateApLoopStart: > > cmp cl, 1 ; Check mwait-monitor support > > jnz HltLoop > > MwaitLoop: > > + cli > > mov eax, esp > > xor ecx, ecx > > xor edx, edx > > diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > > index 7595988884..76f8c078ab 100644 > > --- a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > > +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > > @@ -1,5 +1,5 @@ > > > > ;------------------------------------------------------------------------------ > > ; > > -; Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR> > > +; Copyright (c) 2015 - 2018, 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 > > ; which accompanies this distribution. The full text of the license may > > be > found at > > @@ -253,6 +253,7 @@ RendezvousFunnelProcEnd: > > global ASM_PFX(AsmRelocateApLoop) > > ASM_PFX(AsmRelocateApLoop): > > AsmRelocateApLoopStart: > > + cli ; Disable interrupt before switching to > 32-bit mode > > mov rax, [rsp + 40] ; CountTofinish > > lock dec dword [rax] ; (*CountTofinish)-- > > mov rsp, r9 > > @@ -288,6 +289,7 @@ PmEntry: > > jnz HltLoop > > mov ebx, edx ; Save C-State to ebx > > MwaitLoop: > > + cli > > mov eax, esp ; Set Monitor Address > > xor ecx, ecx ; ecx = 0 > > xor edx, edx ; edx = 0 > > > Reviewed-by: Ruiyu Ni <ruiyu...@intel.com> > > -- > Thanks, > Ray > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel