From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by mx.groups.io with SMTP id smtpd.web10.5954.1608601245630701512 for ; Mon, 21 Dec 2020 17:40:46 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=permanent DNS error (domain: byosoft.com.cn, ip: 58.240.74.242, mailfrom: gaoliming@byosoft.com.cn) Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Tue, 22 Dec 2020 09:40:42 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: "'Tan, Ming'" , "'Bi, Dandan'" Cc: References: <1651B662B221A676.25767@groups.io> <002d01d6d7fa$5b6945f0$123bd1d0$@byosoft.com.cn> In-Reply-To: Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2XSBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1N0YXR1c0NvZGVIYW5kbGVyOiBGaXggYSBidWcgYWJvdXQgbG9nIGxvc3Q=?= Date: Tue, 22 Dec 2020 09:40:43 +0800 Message-ID: <004101d6d803$76997bc0$63cc7340$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJ+6q81xCqv6aFLvNI947P4xHo5BQJxBH7kAkD1dKQC9hoSWah08BNg Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn Ming: Just need to declare extern mRscHandlerProtocol in StatusCodeHandlerRunt= imeDxe.h. It has been located in module entry point. So, I think it is simp= le.=20 Thanks Liming > -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- > =E5=8F=91=E4=BB=B6=E4=BA=BA: Tan, Ming > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9=B412=E6=9C=8822=E6=97= =A5 8:56 > =E6=94=B6=E4=BB=B6=E4=BA=BA: gaoliming@byosoft.com.cn; Bi, Dandan > =E6=8A=84=E9=80=81: devel@edk2.groups.io > =E4=B8=BB=E9=A2=98: RE: [edk2-devel] [PATCH v6] > MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost >=20 > Liming: > If remove the UnregisterSerialBootTimeHandlers(), then in > SerialStatusCodeWorker.c, need use an external variable > mRscHandlerProtocol which is defined in StatusCodeHandlerRuntimeDxe.c, o= r > call gBS->LocateProtocol to get it again. > Compare with export add an external variable, add an external function > seems better. >=20 > BR/Tan Ming. >=20 > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of gaoliming > Sent: Tuesday, December 22, 2020 8:36 AM > To: devel@edk2.groups.io; Tan, Ming ; Bi, Dandan > > Subject: =E5=9B=9E=E5=A4=8D: [edk2-devel] [PATCH v6] > MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost >=20 > Ming: > I have no concern for the updated patch. >=20 > I just think we can simplify the code logic and remove the function > UnregisterSerialBootTimeHandlers(). Unregister logic can be moved to > SerialStatusCodeReportWorker(). >=20 > You can choose your preferred implementation. Reviewed-by: Liming Gao > >=20 > Thanks > Liming > > -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- > > =E5=8F=91=E4=BB=B6=E4=BA=BA: bounce+27952+69302+4905953+8761045@groups= .io > > =E4=BB=A3=E8=A1=A8 Tan,= Ming > > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9=B412=E6=9C=8821=E6=97= = =A5 15:18 > > =E6=94=B6=E4=BB=B6=E4=BA=BA: Bi, Dandan ; Liming = Gao > > > > =E6=8A=84=E9=80=81: devel@edk2.groups.io > > =E4=B8=BB=E9=A2=98: Re: [edk2-devel] [PATCH v6] > > MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost > > > > Liming: > > I already submit a new patch for it, is there any new concern for it= ? > > > > Thank you. > > Tan Ming. > > > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of Tan, > > Ming > > Sent: Friday, December 18, 2020 12:51 PM > > To: devel@edk2.groups.io > > Cc: Bi, Dandan ; Liming Gao > > > > Subject: [edk2-devel] [PATCH v6] > > MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3126 > > > > 1. If use PeiDxeDebugLibReportStatusCode as DebugLib, then some logs > > after > > ExitBootService() will be lost. > > 2. The root cause: > > 2.1 The original code will register an unregister function of > > gEfiEventExitBootServicesGuid, this unregister function will call > > EFI_RSC_HANDLER_PROTOCOL->Unregister and does not support log > through > > serial port. > > 2.2 And some other drivers also register call back funtions of > > gEfiEventExitBootServicesGuid. > > 2.3 Then after the unregister function is called, other call back > functions can't > > out log if them use RSC as DebugLib. > > 3. The DxeMain will report status code > EFI_SW_BS_PC_EXIT_BOOT_SERVICES > > after notify all the call back functions of gEfiEventExitBootServicesG= uid. > > 4. Solution: the StatusCodeHandlerRuntimeDxe.c will not register an > > unregister function of gEfiEventExitBootServicesGuid, but unregister > > it > after > > receive the status code of EFI_SW_BS_PC_EXIT_BOOT_SERVICES. > > > > Cc: Dandan Bi > > Cc: Liming Gao > > Signed-off-by: Ming Tan > > --- > > V6: Change the funcname of UnregisterBootTimeHandlers to > > UnregisterSerialBootTimeHandlers. > > V5: Fix an unused var bug and compile error using GCC. > > V4: Fix a spell bug in code comment, change 'a' to 'an' before > 'unregister'. > > V3: Fix a spell bug in commit message, change 'a' to 'an' before > 'unregister'. > > V2: Add the REF link in commit message. > > > > .../RuntimeDxe/SerialStatusCodeWorker.c | 10 ++++++++++ > > .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.c | 19 > > ++----------------- .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.h | > > ++11 > > +++++++++++ > > 3 files changed, 23 insertions(+), 17 deletions(-) > > > > diff --git > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/SerialStatusCo > > deWorker.c > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/SerialStatusCo > > deWorker.c > > index 0b98e7ec63..348f55edba 100644 > > --- > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/SerialStatusCo > > deWorker.c > > +++ > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/SerialStatusCo > > +++ deWorker.c > > @@ -151,6 +151,16 @@ SerialStatusCodeReportWorker ( > > // SerialPortWrite ((UINT8 *) Buffer, CharCount); + //+ // If > register > > an unregister function of gEfiEventExitBootServicesGuid,+ // then > > some > log > > called in ExitBootServices() will be lost,+ // so unregister the > > handler > after > > receive the value of exit boot service.+ //+ if ((CodeType & > > EFI_STATUS_CODE_TYPE_MASK) =3D=3D EFI_PROGRESS_CODE &&+ > Value > > =3D=3D (EFI_SOFTWARE_EFI_BOOT_SERVICE | > > EFI_SW_BS_PC_EXIT_BOOT_SERVICES)) {+ > > UnregisterSerialBootTimeHandlers();+ }+ return EFI_SUCCESS; } diff > --git > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.c > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.c > > index a8c0fe5b71..d50335af8a 100644 > > --- > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.c > > +++ > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > nd > > +++ lerRuntimeDxe.c > > @@ -10,23 +10,17 @@ > > #include "StatusCodeHandlerRuntimeDxe.h" EFI_EVENT > > mVirtualAddressChangeEvent =3D NULL;-static EFI_EVENT > > mExitBootServicesEvent =3D NULL; EFI_RSC_HANDLER_PROTOCOL > > *mRscHandlerProtocol =3D NULL; /** Unregister status code > > callback functions only available at boot time from report status co= de > > router when exiting boot services. - @param Event Event > > whose notification function is being invoked.- @param Context > > Pointer to the notification function's context, which is- always zero > > in current implementation.- **/ VOID > > EFIAPI-UnregisterBootTimeHandlers (- IN EFI_EVENT Event,- > IN > > VOID *Context+UnregisterSerialBootTimeHandlers (+ > > VOID ) { if (PcdGetBool (PcdStatusCodeUseSerial)) {@@ -178,15 > +172,6 > > @@ StatusCodeHandlerRuntimeDxeEntry ( > > mRscHandlerProtocol->Register > (RtMemoryStatusCodeReportWorker, > > TPL_HIGH_LEVEL); } - Status =3D gBS->CreateEventEx (- > > EVT_NOTIFY_SIGNAL,- TPL_NOTIFY,- > > UnregisterBootTimeHandlers,- NULL,- > > &gEfiEventExitBootServicesGuid,- > > &mExitBootServicesEvent- );- Status =3D > > gBS->CreateEventEx ( EVT_NOTIFY_SIGNAL, > > TPL_NOTIFY,diff --git > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.h > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.h > > index fd4689c2d7..a2cf2ae0b7 100644 > > --- > > > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > ndlerRuntimeDxe.h > > +++ > > > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHa > > nd > > +++ lerRuntimeDxe.h > > @@ -118,4 +118,15 @@ RtMemoryStatusCodeReportWorker ( > > IN EFI_STATUS_CODE_DATA *Data OPTIONAL ); > > +/**+ Unregister status code callback functions only available at > > +boot > time > > from+ report status code router when exiting boot > > services.++**/+VOID+EFIAPI+UnregisterSerialBootTimeHandlers (+ > > VOID+ );+ #endif-- > > 2.24.0.windows.2 > > > > > > > > -=3D-=3D-=3D-=3D-=3D-=3D > > Groups.io Links: You receive all messages sent to this group. > > View/Reply Online (#69173): > > https://edk2.groups.io/g/devel/message/69173 > > Mute This Topic: https://groups.io/mt/79055338/2557430 > > Group Owner: devel+owner@edk2.groups.io > > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ming.tan@intel.com] > > -=3D-=3D-=3D-=3D-=3D-=3D > > > > > > > > > > > > >=20 >=20 >=20 >=20 >=20 >=20 >=20