From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from huawei.com (huawei.com [45.249.212.35]) by mx.groups.io with SMTP id smtpd.web12.3589.1592359669293670992 for ; Tue, 16 Jun 2020 19:07:50 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: huawei.com, ip: 45.249.212.35, mailfrom: huangming23@huawei.com) Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 6F260C5C85429E407A36; Wed, 17 Jun 2020 10:07:46 +0800 (CST) Received: from [127.0.0.1] (10.78.51.60) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.487.0; Wed, 17 Jun 2020 10:07:39 +0800 Subject: Re: [edk2-devel] [PATCH edk2-platforms v3 3/4] Silicon/Hisilicon/Acpi: Add update sas address feature To: Leif Lindholm , CC: , , , , , , References: <1591709245-44527-1-git-send-email-huangming23@huawei.com> <1591709245-44527-4-git-send-email-huangming23@huawei.com> <20200616142006.GE6739@vanye> From: "Ming Huang" Message-ID: <9564872f-ba0f-22c3-fb4f-d05db39802a3@huawei.com> Date: Wed, 17 Jun 2020 10:07:39 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20200616142006.GE6739@vanye> X-Originating-IP: [10.78.51.60] X-CFilter-Loop: Reflected Content-Type: text/plain; charset="gbk" Content-Transfer-Encoding: quoted-printable =D4=DA 2020/6/16 22:20, Leif Lindholm =D0=B4=B5=C0: > One remaining question, then this set is ready to go in: >=20 > On Tue, Jun 09, 2020 at 21:27:24 +0800, Ming Huang wrote: >> The updating sas address feature is similar with apdating mac address. >> Modify updating dsdt flow for add this feature. >> >> Signed-off-by: Ming Huang >> --- >> Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c | 2 +- >> Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + >> Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c | 292 ++= +++++++++++++----- >> Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h | 2 +- >> 4 files changed, 227 insertions(+), 70 deletions(-) >> >> diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c b= /Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c >> index c45a0bb..9cdf710 100644 >> --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c >> +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c >> @@ -46,7 +46,7 @@ UpdateAcpiDsdt ( >> return; >> } >> >> - Status =3D EthMacInit (); >> + Status =3D UpdateAcpiDsdtTable (); >> if (EFI_ERROR (Status)) { >> DEBUG ((DEBUG_ERROR, " UpdateAcpiDsdtTable Failed, Status =3D %r\n= ", Status)); >> } >> diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.= inf b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf >> index 866ff75..856309a 100644 >> --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf >> +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf >> @@ -46,6 +46,7 @@ >> gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONS= UMED >> gEfiAcpiSdtProtocolGuid # PROTOCOL ALWAYS_CONS= UMED >> gHisiBoardNicProtocolGuid # PROTOCOL ALWAY= S_CONSUMED >> + gHisiSasConfigProtocolGuid >> >> [FeaturePcd] >> gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol >> diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c b/Silic= on/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c >> index cd98506..841c94e 100644 >> --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c >> +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c >> @@ -1,7 +1,7 @@ >> /** @file >> >> Copyright (c) 2014, Applied Micro Curcuit Corporation. All rights re= served.
>> - Copyright (c) 2015, Hisilicon Limited. All rights reserved.
>> + Copyright (c) 2015 - 2020, Hisilicon Limited. All rights reserved. >> Copyright (c) 2015, Linaro Limited. All rights reserved.
>> SPDX-License-Identifier: BSD-2-Clause-Patent >> >> @@ -23,6 +23,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -32,6 +33,7 @@ >> #include >> >> #include >> +#include >> >> // Turn on debug message by enabling below define >> //#define ACPI_DEBUG >> @@ -45,17 +47,27 @@ >> #define EFI_ACPI_MAX_NUM_TABLES 20 >> #define DSDT_SIGNATURE 0x54445344 >> >> -#define D03_ACPI_ETH_ID "HISI00C2" >> - >> #define ACPI_ETH_MAC_KEY "local-mac-address" >> +#define ACPI_ETH_SAS_KEY "sas-addr" >> >> #define PREFIX_VARIABLE_NAME L"MAC" >> #define PREFIX_VARIABLE_NAME_COMPAT L"RGMII_MAC" >> -#define MAC_MAX_LEN 30 >> +#define ADDRESS_MAX_LEN 30 >> + >> +CHAR8 *mHisiAcpiDevId[] =3D {"HISI00C1","HISI00C2","HISI0162"}; >> + >> +typedef enum { >> + DsdtDeviceUnknown, >> + DsdtDeviceLan, >> + DsdtDeviceSas >> +} DSDT_DEVICE_TYPE; >> >> -EFI_STATUS GetEnvMac( >> - IN UINTN MacNextID, >> - IN OUT UINT8 *MacBuffer) >> +STATIC >> +EFI_STATUS >> +GetEnvMac( >> + IN UINTN MacNextID, >> + IN OUT UINT8 *MacBuffer >> + ) >> { >> EFI_MAC_ADDRESS Mac; >> EFI_STATUS Status; >> @@ -89,12 +101,121 @@ EFI_STATUS GetEnvMac( >> return EFI_SUCCESS; >> } >> >> -EFI_STATUS _SearchReplacePackageMACAddress( >> +STATIC >> +EFI_STATUS >> +GetSasAddress ( >> + IN UINT8 Index, >> + IN OUT UINT8 *SasAddrBuffer >> + ) >> +{ >> + EFI_STATUS Status; >> + HISI_SAS_CONFIG_PROTOCOL *HisiSasConf; >> + >> + if (SasAddrBuffer =3D=3D NULL) { >> + return EFI_INVALID_PARAMETER; >> + } >> + >> + Status =3D gBS->LocateProtocol (&gHisiSasConfigProtocolGuid, NULL, (= VOID **)&HisiSasConf); >> + if (EFI_ERROR (Status)) { >> + DEBUG ((DEBUG_ERROR, "Locate Sas Config Protocol failed %r\n", Sta= tus)); >> + SasAddrBuffer[0] =3D 0x50; >> + SasAddrBuffer[1] =3D 0x01; >> + SasAddrBuffer[2] =3D 0x88; >> + SasAddrBuffer[3] =3D 0x20; >> + SasAddrBuffer[4] =3D 0x16; >> + SasAddrBuffer[5] =3D 0x00; >> + SasAddrBuffer[6] =3D 0x00; >> + SasAddrBuffer[7] =3D Index; >=20 > This is still a sompletely random-looking value being stuffed into the > buffer. What is it? This is a random value. Maybe it is more appropriate to stuff zero into th= e buffer here. Thanks, Ming >=20 > / > Leif >=20 >> + return Status; >> + } >> + >> + return HisiSasConf->GetAddr (Index, SasAddrBuffer); >> +} >> + >> +STATIC >> +EFI_STATUS >> +UpdateAddressInOption ( >> + IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, >> + IN EFI_ACPI_HANDLE ChildHandle, >> + IN UINTN DevNextID, >> + IN DSDT_DEVICE_TYPE FoundDev >> + ) >> +{ >> + EFI_STATUS Status; >> + EFI_ACPI_DATA_TYPE DataType; >> + CONST VOID *Buffer; >> + UINTN DataSize; >> + UINTN Count; >> + EFI_ACPI_HANDLE CurrentHandle; >> + UINT8 *AddressBuffer; >> + UINT8 AddressByte; >> + >> + AddressByte =3D 0; >> + AddressBuffer =3D AllocateZeroPool (ADDRESS_MAX_LEN); >> + if (AddressBuffer =3D=3D NULL) { >> + DEBUG ((DEBUG_ERROR, "%a:%d AllocateZeroPool failed\n", __FILE__, = __LINE__)); >> + return EFI_OUT_OF_RESOURCES; >> + } >> + >> + switch (FoundDev) { >> + case DsdtDeviceLan: >> + //Update the MAC >> + Status =3D GetEnvMac (DevNextID, AddressBuffer); >> + AddressByte =3D 6; >> + break; >> + case DsdtDeviceSas: >> + //Update SAS Address. >> + Status =3D GetSasAddress (DevNextID, AddressBuffer); >> + AddressByte =3D 8; >> + break; >> + default: >> + Status =3D EFI_INVALID_PARAMETER; >> + } >> + if (EFI_ERROR (Status)) { >> + FreePool (AddressBuffer); >> + return Status; >> + } >> + >> + for (Count =3D 0; Count < AddressByte; Count++) { >> + Status =3D AcpiTableProtocol->GetOption (CurrentHandle, 1, &DataTy= pe, &Buffer, &DataSize); >> + if (EFI_ERROR (Status)) { >> + break; >> + } >> + >> + if (DataType !=3D EFI_ACPI_DATA_TYPE_UINT) >> + break; >> + >> + // only need one byte. >> + // FIXME: Assume the CPU is little endian >> + Status =3D AcpiTableProtocol->SetOption ( >> + CurrentHandle, >> + 1, >> + AddressBuffer + Count, >> + sizeof(UINT8)); >> + if (EFI_ERROR (Status)) { >> + break; >> + } >> + >> + Status =3D AcpiTableProtocol->GetChild (ChildHandle, &CurrentHandl= e); >> + if (EFI_ERROR (Status) || CurrentHandle =3D=3D NULL) { >> + break; >> + } >> + } >> + >> + FreePool (AddressBuffer); >> + return Status; >> +} >> + >> +STATIC >> +EFI_STATUS >> +UpdateAddressInPackage ( >> IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, >> IN EFI_ACPI_HANDLE ChildHandle, >> IN UINTN Level, >> IN OUT BOOLEAN *Found, >> - IN UINTN MacNextID) >> + IN UINTN DevNextID, >> + IN DSDT_DEVICE_TYPE FoundDev >> + ) >> { >> // ASL template for ethernet driver: >> /* >> @@ -114,15 +235,18 @@ EFI_STATUS _SearchReplacePackageMACAddress( >> CONST UINT8 *Data; >> CONST VOID *Buffer; >> UINTN DataSize; >> - UINTN Count; >> EFI_ACPI_HANDLE CurrentHandle; >> EFI_ACPI_HANDLE NextHandle; >> - UINT8 MACBuffer[MAC_MAX_LEN]; >> + EFI_ACPI_HANDLE Level1Handle; >> >> DBG("In Level:%d\n", Level); >> + Level1Handle =3D NULL; >> Status =3D EFI_SUCCESS; >> for (CurrentHandle =3D NULL; ;) { >> Status =3D AcpiTableProtocol->GetChild(ChildHandle, &CurrentHandle= ); >> + if (Level =3D=3D 1) { >> + Level1Handle =3D CurrentHandle; >> + } >> if (Level !=3D 3 && (EFI_ERROR(Status) || CurrentHandle =3D=3D NUL= L)) >> break; >> >> @@ -143,11 +267,14 @@ EFI_STATUS _SearchReplacePackageMACAddress( >> DataSize, Data[0], DataSize > 1 ? Data[1] : 0); >> >> Data =3D Buffer; >> - if (DataType !=3D EFI_ACPI_DATA_TYPE_STRING >> - || AsciiStrCmp((CHAR8 *) Data, ACPI_ETH_MAC_KEY) !=3D 0) >> + if ((DataType !=3D EFI_ACPI_DATA_TYPE_STRING) || >> + ((AsciiStrCmp ((CHAR8 *) Data, ACPI_ETH_MAC_KEY) !=3D 0) && >> + (AsciiStrCmp ((CHAR8 *) Data, ACPI_ETH_SAS_KEY) !=3D 0))) { >> + ChildHandle =3D Level1Handle; >> continue; >> + } >> >> - DBG("_DSD Key Type %d. Found MAC address key\n", DataType); >> + DBG("_DSD Key Type %d. Found address key\n", DataType); >> >> // >> // We found the node. >> @@ -157,33 +284,7 @@ EFI_STATUS _SearchReplacePackageMACAddress( >> } >> >> if (Level =3D=3D 3 && *Found) { >> - >> - //Update the MAC >> - Status =3D GetEnvMac(MacNextID, MACBuffer); >> - if (EFI_ERROR(Status)) >> - break; >> - >> - for (Count =3D 0; Count < 6; Count++) { >> - Status =3D AcpiTableProtocol->GetOption(CurrentHandle, 1, &Dat= aType, &Buffer, &DataSize); >> - if (EFI_ERROR(Status)) >> - break; >> - >> - Data =3D Buffer; >> - DBG(" _DSD Child Subnode Store Op Code 0x%02X 0x%02X %02X D= ataType 0x%X\n", >> - DataSize, Data[0], DataSize > 1 ? Data[1] : 0, DataType); >> - >> - if (DataType !=3D EFI_ACPI_DATA_TYPE_UINT) >> - break; >> - >> - // only need one byte. >> - // FIXME: Assume the CPU is little endian >> - Status =3D AcpiTableProtocol->SetOption(CurrentHandle, 1, (VOI= D *)&MACBuffer[Count], sizeof(UINT8)); >> - if (EFI_ERROR(Status)) >> - break; >> - Status =3D AcpiTableProtocol->GetChild(ChildHandle, &CurrentHa= ndle); >> - if (EFI_ERROR(Status) || CurrentHandle =3D=3D NULL) >> - break; >> - } >> + Status =3D UpdateAddressInOption (AcpiTableProtocol, ChildHandle= , DevNextID, FoundDev); >> break; >> } >> >> @@ -192,7 +293,13 @@ EFI_STATUS _SearchReplacePackageMACAddress( >> >> //Search next package >> AcpiTableProtocol->Open((VOID *) Buffer, &NextHandle); >> - Status =3D _SearchReplacePackageMACAddress(AcpiTableProtocol, Next= Handle, Level + 1, Found, MacNextID); >> + Status =3D UpdateAddressInPackage ( >> + AcpiTableProtocol, >> + NextHandle, >> + Level + 1, >> + Found, >> + DevNextID, >> + FoundDev); >> AcpiTableProtocol->Close(NextHandle); >> if (!EFI_ERROR(Status)) >> break; >> @@ -201,22 +308,28 @@ EFI_STATUS _SearchReplacePackageMACAddress( >> return Status; >> } >> >> -EFI_STATUS SearchReplacePackageMACAddress( >> +STATIC >> +EFI_STATUS >> +SearchReplacePackageAddress ( >> IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, >> IN EFI_ACPI_HANDLE ChildHandle, >> - IN UINTN MacNextID) >> + IN UINTN DevNextID, >> + IN DSDT_DEVICE_TYPE FoundDev >> + ) >> { >> BOOLEAN Found =3D FALSE; >> UINTN Level =3D 0; >> >> - return _SearchReplacePackageMACAddress(AcpiTableProtocol, ChildHandl= e, Level, &Found, MacNextID); >> + return UpdateAddressInPackage (AcpiTableProtocol, ChildHandle, Level= , >> + &Found, DevNextID, FoundDev); >> } >> >> EFI_STATUS >> -GetEthID ( >> +GetDeviceInfo ( >> EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, >> EFI_ACPI_HANDLE ChildHandle, >> - UINTN *EthID >> + UINTN *DevID, >> + DSDT_DEVICE_TYPE *FoundDev >> ) >> { >> EFI_STATUS Status; >> @@ -225,7 +338,7 @@ GetEthID ( >> CONST VOID *Buffer; >> UINTN DataSize; >> >> - // Get NameString ETHx >> + // Get NameString >> Status =3D AcpiTableProtocol->GetOption (ChildHandle, 1, &DataType, = &Buffer, &DataSize); >> if (EFI_ERROR (Status)) { >> DEBUG ((EFI_D_ERROR, "[%a:%d] Get NameString failed: %r\n", __FUNC= TION__, __LINE__, Status)); >> @@ -236,14 +349,23 @@ GetEthID ( >> DBG("Size %p Data %02x %02x %02x %02x\n", DataSize, Data[0], Data[1]= , Data[2], Data[3]); >> >> Data[4] =3D '\0'; >> - if (DataSize !=3D 4 || >> - AsciiStrnCmp ("ETH", Data, 3) !=3D 0 || >> - Data[3] > '9' || Data[3] < '0') { >> - DEBUG ((EFI_D_ERROR, "[%a:%d] The NameString %a is not ETHn\n", __= FUNCTION__, __LINE__, Data)); >> + if ((DataSize !=3D 4) || >> + (Data[3] > '9' || Data[3] < '0')) { >> + DEBUG ((DEBUG_ERROR, "The NameString %a is not ETHn or SASn\n", Da= ta)); >> + return EFI_INVALID_PARAMETER; >> + } >> + >> + if (AsciiStrnCmp ("ETH", Data, 3) =3D=3D 0) { >> + *FoundDev =3D DsdtDeviceLan; >> + } else if (AsciiStrnCmp ("SAS", Data, 3) =3D=3D 0) { >> + *FoundDev =3D DsdtDeviceSas; >> + } else { >> + DEBUG ((DEBUG_ERROR, "[%a:%d] The NameString %a is not ETHn or SAS= n\n", >> + __FUNCTION__, __LINE__, Data)); >> return EFI_INVALID_PARAMETER; >> } >> >> - *EthID =3D Data[3] - '0'; >> + *DevID =3D Data[3] - '0'; >> return EFI_SUCCESS; >> } >> >> @@ -257,8 +379,10 @@ EFI_STATUS ProcessDSDTDevice ( >> CONST VOID *Buffer; >> UINTN DataSize; >> EFI_ACPI_HANDLE DevHandle; >> - INTN Found =3D 0; >> - UINTN MacNextID; >> + DSDT_DEVICE_TYPE FoundDev =3D DsdtDeviceUnknown; >> + UINTN DevNextID; >> + BOOLEAN HisiAcpiDevNotFound; >> + UINTN Index; >> >> Status =3D AcpiTableProtocol->GetOption(ChildHandle, 0, &DataType, &= Buffer, &DataSize); >> if (EFI_ERROR(Status)) >> @@ -280,7 +404,7 @@ EFI_STATUS ProcessDSDTDevice ( >> break; >> >> // >> - // Search for _HID with Ethernet ID >> + // Search for _HID with Device ID >> // >> Status =3D AcpiTableProtocol->GetOption(DevHandle, 0, &DataType, &= Buffer, &DataSize); >> if (EFI_ERROR(Status)) >> @@ -312,23 +436,34 @@ EFI_STATUS ProcessDSDTDevice ( >> DBG("[%a:%d] - _HID =3D %a\n", __FUNCTION__, __LINE__, Data)= ; >> >> if (EFI_ERROR(Status) || >> - DataType !=3D EFI_ACPI_DATA_TYPE_STRING || >> - (AsciiStrCmp((CHAR8 *) Data, D03_ACPI_ETH_ID) !=3D 0)) { >> - AcpiTableProtocol->Close(ValueHandle); >> - Found =3D 0; >> + DataType !=3D EFI_ACPI_DATA_TYPE_STRING) { >> + AcpiTableProtocol->Close (ValueHandle); >> + FoundDev =3D DsdtDeviceUnknown; >> + continue; >> + } >> + >> + HisiAcpiDevNotFound =3D TRUE; >> + for (Index =3D 0; Index < ARRAY_SIZE (mHisiAcpiDevId); Index= ++) { >> + if (AsciiStrCmp ((CHAR8 *)Data, mHisiAcpiDevId[Index]) =3D= = =3D 0) { >> + HisiAcpiDevNotFound =3D FALSE; >> + break; >> + } >> + } >> + if (HisiAcpiDevNotFound) { >> + AcpiTableProtocol->Close (ValueHandle); >> + FoundDev =3D DsdtDeviceUnknown; >> continue; >> } >> >> - DBG("Found Ethernet device\n"); >> + DBG("Found device\n"); >> AcpiTableProtocol->Close(ValueHandle); >> - Status =3D GetEthID (AcpiTableProtocol, ChildHandle, &MacNex= tID); >> + Status =3D GetDeviceInfo (AcpiTableProtocol, ChildHandle, &D= evNextID, &FoundDev); >> if (EFI_ERROR (Status)) { >> continue; >> } >> - Found =3D 1; >> - } else if (Found =3D=3D 1 && AsciiStrnCmp((CHAR8 *) Data, "_DS= D", 4) =3D=3D 0) { >> + } else if ((FoundDev !=3D DsdtDeviceUnknown) && AsciiStrnCmp((= CHAR8 *) Data, "_DSD", 4) =3D=3D 0) { >> // >> - // Patch MAC address for open source kernel >> + // Patch DSD data >> // >> EFI_ACPI_HANDLE PkgHandle; >> Status =3D AcpiTableProtocol->GetOption(DevHandle, 2, &DataT= ype, &Buffer, &DataSize); >> @@ -351,12 +486,30 @@ EFI_STATUS ProcessDSDTDevice ( >> // >> // Walk the _DSD node >> // >> - if (DataSize =3D=3D 1 && Data[0] =3D=3D AML_PACKAGE_OP) >> - Status =3D SearchReplacePackageMACAddress(AcpiTableProtoco= l, PkgHandle, MacNextID); >> + if (DataSize =3D=3D 1 && Data[0] =3D=3D AML_PACKAGE_OP) { >> + Status =3D SearchReplacePackageAddress (AcpiTableProtocol,= PkgHandle, DevNextID, FoundDev); >> + } >> >> AcpiTableProtocol->Close(PkgHandle); >> + } else if (AsciiStrnCmp ((CHAR8 *) Data, "_ADR", 4) =3D=3D 0) = { >> + Status =3D AcpiTableProtocol->GetOption (DevHandle, 2, &Data= Type, &Buffer, &DataSize); >> + if (EFI_ERROR (Status)) { >> + break; >> + } >> + >> + if (DataType !=3D EFI_ACPI_DATA_TYPE_CHILD) { >> + continue; >> + } >> + >> + Status =3D GetDeviceInfo (AcpiTableProtocol, ChildHandle, &D= evNextID, &FoundDev); >> + >> + if (EFI_ERROR (Status)) { >> + continue; >> + } >> } >> } >> + } else if ((DataSize =3D=3D 2) && (Data[0] =3D=3D AML_EXT_OP) && (= Data[1] =3D=3D AML_EXT_DEVICE_OP)) { >> + ProcessDSDTDevice (AcpiTableProtocol, DevHandle); >> } >> } >> >> @@ -457,7 +610,10 @@ AcpiCheckSum ( >> Buffer[ChecksumOffset] =3D CalculateCheckSum8 (Buffer, Table->Length= ); >> } >> >> -EFI_STATUS EthMacInit(void) >> +EFI_STATUS >> +UpdateAcpiDsdtTable ( >> + VOID >> + ) >> { >> EFI_STATUS Status; >> EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol; >> diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h b/Silic= on/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h >> index 0a3e811..a7e1eed 100644 >> --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h >> +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h >> @@ -10,7 +10,7 @@ >> #ifndef _ETH_MAC_H_ >> #define _ETH_MAC_H_ >> >> -EFI_STATUS EthMacInit(VOID); >> +EFI_STATUS UpdateAcpiDsdtTable (VOID); >> >> #endif >> >> --=20 >> 2.8.1 >> >> >>=20 >> >=20 > . >=20