From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by mx.groups.io with SMTP id smtpd.web11.8556.1663239256060608685 for ; Thu, 15 Sep 2022 03:54:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=RHr081to; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: quicinc.com, ip: 205.220.180.131, mailfrom: quic_llindhol@quicinc.com) Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28FANcI0021066; Thu, 15 Sep 2022 10:54:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to; s=qcppdkim1; bh=aKSM5jKw1VaVlaCPoOd/Ehbu+OfhHm/1iY1n9LsC46w=; b=RHr081tordVvWwFhTlACQh16u/vDyPXw8ctOuzH+oBlaRfx0JX4IwKjFbzrhkGGvn2hf +DMNgik/qgHF1YGYJy0/6YbX5rHxWU+WXU54ahr8usZ9y+Xj8Gjbf1zbibIEeD9L4QuU u0p4v6ji6b/FqdFT8eIfao8N+fhzS/Rgv3JHHY0OTLpibn63u4a4gEnRjqIBqxLdLu9d vq2QPVq+xLNBvjGL+UZrk7x3b0jjE+zJuTj+hOW8pubJaeSeUI9gazp/RBt5r6xs4AWH Q7BPFdqZ+kJfFqVeZYs2FrTbLY/ZU2o88pLeEYeeIzFK5NrUSVH4Y50szHzi5gqu00jm rg== Received: from nasanppmta02.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3jjy06mq4h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Sep 2022 10:54:11 +0000 Received: from nasanex01c.na.qualcomm.com (corens_vlan604_snip.qualcomm.com [10.53.140.1]) by NASANPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 28FAsAAT024381 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Sep 2022 10:54:10 GMT Received: from qc-i7.hemma.eciton.net (10.80.80.8) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Thu, 15 Sep 2022 03:54:08 -0700 Date: Thu, 15 Sep 2022 11:54:05 +0100 From: "Leif Lindholm" To: Nhi Pham CC: , , , , , Minh Nguyen , Rebecca Cran , Ard Biesheuvel Subject: Re: [PATCH v3 6/6] ArmPkg/SmbiosMiscDxe: Get SMBIOS information from OemMiscLib Message-ID: References: <20220913061947.735951-1-nhi@os.amperecomputing.com> <20220913061947.735951-7-nhi@os.amperecomputing.com> MIME-Version: 1.0 In-Reply-To: <20220913061947.735951-7-nhi@os.amperecomputing.com> X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01c.na.qualcomm.com (10.45.79.139) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: 8T9GZpaEeIh2rexZJfuWEJctiGskVz7H X-Proofpoint-ORIG-GUID: 8T9GZpaEeIh2rexZJfuWEJctiGskVz7H X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-15_06,2022-09-14_04,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 spamscore=0 mlxlogscore=904 clxscore=1011 suspectscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2208220000 definitions=main-2209150060 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline On Tue, Sep 13, 2022 at 13:19:47 +0700, Nhi Pham wrote: > From: Minh Nguyen > > In some scenarios, the information of Bios Version, Bios Release > and Embedded Controller Firmware Release are fetched during UEFI > booting. This patch supports updating those fields dynamically > when the PCDs are empty. > > Signed-off-by: Nhi Pham > Reviewed-by: Rebecca Cran > Reviewed-by: Sami Mujawar > Acked-by: Ard Biesheuvel > --- > ArmPkg/Include/Library/OemMiscLib.h | 21 +++++++++++++ > ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c | 28 +++++++++++++++++ > ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c | 32 +++++++++++++------- > 3 files changed, 70 insertions(+), 11 deletions(-) > > diff --git a/ArmPkg/Include/Library/OemMiscLib.h b/ArmPkg/Include/Library/OemMiscLib.h > index 1936619d9b5b..541274999e5c 100644 > --- a/ArmPkg/Include/Library/OemMiscLib.h > +++ b/ArmPkg/Include/Library/OemMiscLib.h > @@ -37,6 +37,7 @@ typedef struct { > } OEM_MISC_PROCESSOR_DATA; > > typedef enum { > + BiosVersionType00, > ProductNameType01, > SerialNumType01, > UuidType01, > @@ -247,4 +248,24 @@ OemGetSystemUuid ( > OUT GUID *SystemUuid > ); > > +/** Fetches the BIOS release. > + > + @return The BIOS release. > +**/ > +UINT16 > +EFIAPI > +OemGetBiosRelease ( > + VOID > + ); > + > +/** Fetches the embedded controller firmware release. > + > + @return The embedded controller firmware release. > +**/ > +UINT16 > +EFIAPI > +OemGetEmbeddedControllerFirmwareRelease ( > + VOID > + ); > + > #endif // OEM_MISC_LIB_H_ > diff --git a/ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c b/ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c > index 32f6d55c1a9a..788ccab9e8c1 100644 > --- a/ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c > +++ b/ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c > @@ -254,3 +254,31 @@ OemGetSystemUuid ( > ASSERT (FALSE); > CopyGuid (SystemUuid, &gZeroGuid); > } > + > +/** Fetches the BIOS release. > + > + @return The BIOS release. > +**/ > +UINT16 > +EFIAPI > +OemGetBiosRelease ( > + VOID > + ) > +{ > + ASSERT (FALSE); > + return 0xFFFF; This is a change in behaviour. The pre-existing behaviour would be preserved by returning the value of PcdGet16 (PcdSystemBiosRelease), which defaults to 0xFFFF. > +} > + > +/** Fetches the embedded controller firmware release. > + > + @return The embedded controller firmware release. > +**/ > +UINT16 > +EFIAPI > +OemGetEmbeddedControllerFirmwareRelease ( > + VOID > + ) > +{ > + ASSERT (FALSE); > + return 0xFFFF; Same as above, but PcdEmbeddedControllerFirmwareRelease. No other comments on this set. (Feel free to see that as Acked-by: Leif Lindholm for 1-5/6, but you already have the tags you need for those.) / Leif > +} > diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c > index b49c4b754cab..e9106a8a2fec 100644 > --- a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c > +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c > @@ -1,5 +1,6 @@ > /** @file > > + Copyright (c) 2022, Ampere Computing LLC. All rights reserved.
> Copyright (c) 2021, NUVIA Inc. All rights reserved.
> Copyright (c) 2009, Intel Corporation. All rights reserved.
> Copyright (c) 2015, Hisilicon Limited. All rights reserved.
> @@ -13,6 +14,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -191,11 +193,11 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor) { > TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION); > HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL); > } else { > - Version = (CHAR16 *)PcdGetPtr (PcdFirmwareVersionString); > - if (StrLen (Version) > 0) { > - TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION); > - HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL); > - } > + OemUpdateSmbiosInfo ( > + mSmbiosMiscHiiHandle, > + STRING_TOKEN (STR_MISC_BIOS_VERSION), > + BiosVersionType00 > + ); > } > > Char16String = GetBiosReleaseDate (); > @@ -251,13 +253,21 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor) { > } > } > > - SmbiosRecord->SystemBiosMajorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) >> 8); > - SmbiosRecord->SystemBiosMinorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) & 0xFF); > + if (PcdGet16 (PcdSystemBiosRelease) != 0xFFFF) { > + SmbiosRecord->SystemBiosMajorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) >> 8); > + SmbiosRecord->SystemBiosMinorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) & 0xFF); > + } else { > + SmbiosRecord->SystemBiosMajorRelease = (UINT8)(OemGetBiosRelease () >> 8); > + SmbiosRecord->SystemBiosMinorRelease = (UINT8)(OemGetBiosRelease () & 0xFF); > + } > > - SmbiosRecord->EmbeddedControllerFirmwareMajorRelease = (UINT16) > - (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) >> 8); > - SmbiosRecord->EmbeddedControllerFirmwareMinorRelease = (UINT16) > - (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) & 0xFF); > + if (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) != 0xFFFF) { > + SmbiosRecord->EmbeddedControllerFirmwareMajorRelease = (UINT16)(PcdGet16 (PcdEmbeddedControllerFirmwareRelease) >> 8); > + SmbiosRecord->EmbeddedControllerFirmwareMinorRelease = (UINT16)(PcdGet16 (PcdEmbeddedControllerFirmwareRelease) & 0xFF); > + } else { > + SmbiosRecord->EmbeddedControllerFirmwareMajorRelease = (UINT16)(OemGetEmbeddedControllerFirmwareRelease () >> 8); > + SmbiosRecord->EmbeddedControllerFirmwareMinorRelease = (UINT16)(OemGetEmbeddedControllerFirmwareRelease () & 0xFF); > + } > > OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1); > UnicodeStrToAsciiStrS (Vendor, OptionalStrStart, VendorStrLen + 1); > -- > 2.25.1 >