summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2011-11-21 08:50:41 +0000
committerlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2011-11-21 08:50:41 +0000
commit4659816a419a5c0231ba1cfb4467b6e414bb0edf (patch)
treecc89c36648046a35653f7af55a4c8672f675f640
parentfa97cbf4ef6f4fd2dc0312c09b6b5003780facb8 (diff)
downloadedk2-platforms-4659816a419a5c0231ba1cfb4467b6e414bb0edf.tar.xz
According to PI errata 0000654 and 000811, we need use 0xFFFE to instead of 0 for EFI_SMBIOS_PROTOCOL.Add() SmbiosHandle parameter to assign a unique handle to the SMBIOS record, and for EFI_SMBIOS_PROTOCOL.GetNext() SmbiosHandle parameter to get the first matched SMBIOS handle or indicate no more SMBIOS record.
Signed-off-by: lzeng14 Reviewed-by: li-elvin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12746 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c
index b39ea23a8f..053e7a4984 100644
--- a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c
+++ b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c
@@ -264,7 +264,7 @@ GetAvailableSmbiosHandle (
Private = SMBIOS_INSTANCE_FROM_THIS (This);
Head = &Private->AllocatedHandleListHead;
- for (AvailableHandle = 1; AvailableHandle < MaxSmbiosHandle; AvailableHandle++) {
+ for (AvailableHandle = 0; AvailableHandle < MaxSmbiosHandle; AvailableHandle++) {
if (!CheckSmbiosHandleExistance(Head, AvailableHandle)) {
*Handle = AvailableHandle;
return EFI_SUCCESS;
@@ -281,8 +281,8 @@ GetAvailableSmbiosHandle (
@param This The EFI_SMBIOS_PROTOCOL instance.
@param ProducerHandle The handle of the controller or driver associated with the SMBIOS information. NULL
means no handle.
- @param SmbiosHandle On entry, if non-zero, the handle of the SMBIOS record. If zero, then a unique handle
- will be assigned to the SMBIOS record. If the SMBIOS handle is already in use
+ @param SmbiosHandle On entry, the handle of the SMBIOS record to add. If FFFEh, then a unique handle
+ will be assigned to the SMBIOS record. If the SMBIOS handle is already in use,
EFI_ALREADY_STARTED is returned and the SMBIOS record is not updated.
@param Record The data for the fixed portion of the SMBIOS record. The format of the record is
determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted area is defined
@@ -325,14 +325,14 @@ SmbiosAdd (
// Check whether SmbiosHandle is already in use
//
Head = &Private->AllocatedHandleListHead;
- if (*SmbiosHandle != 0 && CheckSmbiosHandleExistance(Head, *SmbiosHandle)) {
+ if (*SmbiosHandle != SMBIOS_HANDLE_PI_RESERVED && CheckSmbiosHandleExistance(Head, *SmbiosHandle)) {
return EFI_ALREADY_STARTED;
}
//
- // when SmbiosHandle is zero, an available handle will be assigned
+ // when SmbiosHandle is 0xFFFE, an available handle will be assigned
//
- if (*SmbiosHandle == 0) {
+ if (*SmbiosHandle == SMBIOS_HANDLE_PI_RESERVED) {
Status = GetAvailableSmbiosHandle(This, SmbiosHandle);
if (EFI_ERROR(Status)) {
return Status;
@@ -434,7 +434,7 @@ SmbiosAdd (
@retval EFI_SUCCESS SmbiosHandle had its StringNumber String updated.
@retval EFI_INVALID_PARAMETER SmbiosHandle does not exist.
- @retval EFI_UNSUPPORTED String was not added since it's longer than 64 significant characters.
+ @retval EFI_UNSUPPORTED String was not added because it is longer than the SMBIOS Table supports.
@retval EFI_NOT_FOUND The StringNumber.is not valid for this SMBIOS record.
**/
@@ -711,8 +711,8 @@ SmbiosRemove (
@param This The EFI_SMBIOS_PROTOCOL instance.
@param SmbiosHandle On entry, points to the previous handle of the SMBIOS record. On exit, points to the
- next SMBIOS record handle. If it is zero on entry, then the first SMBIOS record
- handle will be returned. If it returns zero on exit, then there are no more SMBIOS records.
+ next SMBIOS record handle. If it is FFFEh on entry, then the first SMBIOS record
+ handle will be returned. If it returns FFFEh on exit, then there are no more SMBIOS records.
@param Type On entry it means return the next SMBIOS record of type Type. If a NULL is passed in
this functionally it ignored. Type is not modified by the GetNext() function.
@param Record On exit, points to the SMBIOS Record consisting of the formatted area followed by
@@ -753,9 +753,9 @@ SmbiosGetNext (
SmbiosTableHeader = (EFI_SMBIOS_TABLE_HEADER*)(SmbiosEntry->RecordHeader + 1);
//
- // If SmbiosHandle is zero, the first matched SMBIOS record handle will be returned
+ // If SmbiosHandle is 0xFFFE, the first matched SMBIOS record handle will be returned
//
- if (*SmbiosHandle == 0) {
+ if (*SmbiosHandle == SMBIOS_HANDLE_PI_RESERVED) {
if ((Type != NULL) && (*Type != SmbiosTableHeader->Type)) {
continue;
}
@@ -791,7 +791,7 @@ SmbiosGetNext (
}
}
- *SmbiosHandle = 0;
+ *SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;
return EFI_NOT_FOUND;
}