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.web11.5174.1608597336210246118 for ; Mon, 21 Dec 2020 16:35:37 -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 08:35:31 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: , , "'Bi, Dandan'" References: <1651B662B221A676.25767@groups.io> In-Reply-To: Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2XSBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1N0YXR1c0NvZGVIYW5kbGVyOiBGaXggYSBidWcgYWJvdXQgbG9nIGxvc3Q=?= Date: Tue, 22 Dec 2020 08:35:32 +0800 Message-ID: <002d01d6d7fa$5b6945f0$123bd1d0$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJ+6q81xCqv6aFLvNI947P4xHo5BQJxBH7kqJ6V/gA= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn 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 Thanks Liming > -----=D3=CA=BC=FE=D4=AD=BC=FE----- > =B7=A2=BC=FE=C8=CB: bounce+27952+69302+4905953+8761045@groups.io > =B4=FA=B1=ED Tan, Ming > =B7=A2=CB=CD=CA=B1=BC=E4: 2020=C4=EA12=D4=C221=C8=D5 15:18 > =CA=D5=BC=FE=C8=CB: Bi, Dandan ; Liming Gao > > =B3=AD=CB=CD: devel@edk2.groups.io > =D6=F7=CC=E2: Re: [edk2-devel] [PATCH v6] > MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost >=20 > Liming: > I already submit a new patch for it, is there any new concern for it? >=20 > Thank you. > Tan Ming. >=20 > -----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 >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3126 >=20 > 1. If use PeiDxeDebugLibReportStatusCode as DebugLib, then some logs aft= er > 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 gEfiEventExitBootServicesGui= d. > 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. >=20 > 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. >=20 > .../RuntimeDxe/SerialStatusCodeWorker.c | 10 ++++++++++ > .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.c | 19 > ++----------------- .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.h | 11 > +++++++++++ > 3 files changed, 23 insertions(+), 17 deletions(-) >=20 > 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 handle= r 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 code > 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 >=20 >=20 >=20 > -=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