On Wed, May 27, 2020 at 22:33:54 +0800, Ming Huang wrote: > The dsdt need be updated before boot to OS, so change the updating > to ready to boot event and can remove the needless dependence. > > Signed-off-by: Ming Huang <huangmin...@huawei.com>
Reviewed-by: Leif Lindholm <l...@nuviainc.com> > --- > Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c | 56 > +++++++++++++++++++- > Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf | 4 +- > 2 files changed, 56 insertions(+), 4 deletions(-) > > diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c > b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c > index b888cb1..c45a0bb 100644 > --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c > +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c > @@ -1,7 +1,7 @@ > /** @file > > Copyright (c) 2014, Applied Micro Curcuit Corporation. All rights > reserved.<BR> > - Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR> > + Copyright (c) 2015 - 2020, Hisilicon Limited. All rights reserved.<BR> > Copyright (c) 2015, Linaro Limited. All rights reserved.<BR> > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -23,6 +23,38 @@ > #include <IndustryStandard/AcpiAml.h> > #include "EthMac.h" > > +EFI_EVENT mUpdateAcpiDsdtTableEvent; > + > +VOID > +EFIAPI > +UpdateAcpiDsdt ( > + IN EFI_EVENT Event, > + IN VOID *Context > + ) > +{ > + EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol; > + EFI_STATUS Status; > + > + Status = gBS->LocateProtocol ( > + &gEfiAcpiTableProtocolGuid, > + NULL, > + (VOID**)&AcpiTableProtocol > + ); > + > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Unable to locate ACPI table protocol\n")); > + return; > + } > + > + Status = EthMacInit (); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " UpdateAcpiDsdtTable Failed, Status = %r\n", > Status)); > + } > + > + gBS->CloseEvent (Event); > + return; > +} > + > EFI_STATUS > EFIAPI > AcpiPlatformEntryPoint ( > @@ -30,5 +62,25 @@ AcpiPlatformEntryPoint ( > IN EFI_SYSTEM_TABLE *SystemTable > ) > { > - return EthMacInit(); > + EFI_STATUS Status; > + > + // > + // Register notify function > + // > + Status = gBS->CreateEventEx ( > + EVT_NOTIFY_SIGNAL, > + TPL_CALLBACK, > + UpdateAcpiDsdt, > + NULL, > + &gEfiEventReadyToBootGuid, > + &mUpdateAcpiDsdtTableEvent > + ); > + > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Create ReadyToBoot event for UpdateAcpiDsdt > failed.\n")); > + } else { > + DEBUG ((DEBUG_INFO, "Create ReadyToBoot event for UpdateAcpiDsdt > success.\n")); > + } > + > + return Status; > } > diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf > b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf > index 53da731..866ff75 100644 > --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf > +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf > @@ -1,7 +1,7 @@ > ## @file > # > # Copyright (c) 2014, Applied Micro Curcuit Corp. All rights reserved.<BR> > -# Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR> > +# Copyright (c) 2015 - 2020, Hisilicon Limited. All rights reserved.<BR> > # Copyright (c) 2015, Linaro Limited. All rights reserved.<BR> > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -62,5 +62,5 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision > > [Depex] > - gEfiAcpiTableProtocolGuid AND gEfiAcpiSdtProtocolGuid AND > gHisiBoardNicProtocolGuid AND gHisiInstalledAcpiProtocolGuid > + TRUE > > -- > 2.8.1 > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#60889): https://edk2.groups.io/g/devel/message/60889 Mute This Topic: https://groups.io/mt/74501287/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-