From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.93]) by mx.groups.io with SMTP id smtpd.web08.4486.1663324426674325793 for ; Fri, 16 Sep 2022 03:33:47 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="no key for verify" header.i=@amperemail.onmicrosoft.com header.s=selector1-amperemail-onmicrosoft-com header.b=7/awfvQn; spf=pass (domain: os.amperecomputing.com, ip: 40.107.92.93, mailfrom: nhi@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GM/m74SiUlF3J05FTfI19sP4kCaERKkzjcS25UY8lZZO4x92mSvanGLs2Y4A9U9nAY6hhsNzovDgz9R1hQAmY5Xg/6J5mpxAXi74ezoFT4ZsEKoQngCxuS7NzkEjEks/86vqM+xBYX2mmxnjByPMFvsk+vr/HSSFQRPVSurhwPrvnPAa+ZEyMtnEK9j46Sg5uGDZiAOtXGn564hOe2CL1//Qhm2IBo/Rw290Qmf+gzInvSGUMePp5vWFj8nA0So4GD1zZfntW5o8H61Wv2QnWBe0zGFpZBgMZ04ycjKvcvNWQJ2b9dOI57i/26AciqKF7AjW0yi3yCeIoL1jQmJ/RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=m+nmxyM9Za/64dQ8R9Y2G8EI6c5A+zeotar9snBJOok=; b=SUqjrI3++UZo2rI/jFaG2lYi4VEDxQy3DuZCrk8dfCJeuMhd8eEbxCheeFGTJK/4ERv4dNNq8LcgEeeY9rTZPCIjSjsGZkmwp2IqY4Cf/GwOaD6bT29xPBC54CY37Fu8ZbnwHtKN5++4yfUUQaWh/pA2Hys1LOGMXF3I10uPsCT1tx2sCw0PhPc5ZWJJW5sU8IE8S7KojAxuu53f4tnmuFOVKoxNMd4X9fdmD0izsExjmJAuucblhIjtHNtEKDiD5QgFetm1xpg2u5jnRMnR1hVlIrGakeqDYRFLt1u31LAWFO/NIHn/fWYktc7iepQsun+vtAaW71JRCRRe287SDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=amperemail.onmicrosoft.com; dkim=pass header.d=amperemail.onmicrosoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amperemail.onmicrosoft.com; s=selector1-amperemail-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m+nmxyM9Za/64dQ8R9Y2G8EI6c5A+zeotar9snBJOok=; b=7/awfvQnJKfGrldLhmA7TUvMsD4/2GuO44Y4vZMYgL4HJCFb3pgZBgQRvUwDGdPf5C2/QpcjH2Z8p7ykoSy780R8lT0YEe3tbx5Uqf1I3JfvXz+8PDZ3vIyilwfeBzaQvkvJ/A7koED0c8wi6556BxLQg0dWGeRKFflR/XBUS2E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amperemail.onmicrosoft.com; Received: from PH0PR01MB7287.prod.exchangelabs.com (2603:10b6:510:10a::21) by BL0PR01MB4883.prod.exchangelabs.com (2603:10b6:208:2f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Fri, 16 Sep 2022 10:33:41 +0000 Received: from PH0PR01MB7287.prod.exchangelabs.com ([fe80::441a:930:ac15:1ce9]) by PH0PR01MB7287.prod.exchangelabs.com ([fe80::441a:930:ac15:1ce9%4]) with mapi id 15.20.5632.017; Fri, 16 Sep 2022 10:33:41 +0000 Message-ID: <6adee559-7ec9-140f-5fde-0b012a1cff7e@amperemail.onmicrosoft.com> Date: Fri, 16 Sep 2022 17:33:32 +0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH v3 6/6] ArmPkg/SmbiosMiscDxe: Get SMBIOS information from OemMiscLib To: Sami Mujawar , Leif Lindholm , Nhi Pham CC: "devel@edk2.groups.io" , "ardb+tianocore@kernel.org" , "quic_rcran@quicinc.com" , "patches@amperecomputing.com" , Minh Nguyen , Rebecca Cran , Ard Biesheuvel , nd References: <20220913061947.735951-1-nhi@os.amperecomputing.com> <20220913061947.735951-7-nhi@os.amperecomputing.com> <402b3f32-ee70-565f-914e-0befd706f2c5@amperemail.onmicrosoft.com> From: "Nhi Pham" In-Reply-To: X-ClientProxiedBy: SG2PR02CA0038.apcprd02.prod.outlook.com (2603:1096:3:18::26) To PH0PR01MB7287.prod.exchangelabs.com (2603:10b6:510:10a::21) Return-Path: nhi@os.amperecomputing.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR01MB7287:EE_|BL0PR01MB4883:EE_ X-MS-Office365-Filtering-Correlation-Id: b3ab360d-317e-472c-24e0-08da97ceec5f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jAxIFT71BXhPCoiVqg8kkKWoLJcdcS6daXFOwZKqbzBRJOwgALPZx2BEah7cJfJe7WCAAJaDWv2acdZTnTJwfNbGH36Idd0VV/f7NfFX2Z4qcl3OaIk9L7PV1a45Q/j5GhH3MBZUJkl2R2zwsa1AFN0AEGwsq4908UmpiSIvriIkdJ5hARLRkZSGtnqS86m0AiS/6jv3M0bKngUnWGVdTS/pMcZ7psfSvGf0EQ6HjXlQpNhQ/aZeKleHhTx2VkH9ZYmMcuZS/zdWsVbmNoIIbB4AQEh27RCEGAqsxyAjyCf8TEasnqmWWY5qV1o0PFNux152YEc6vwGRXWGVHeubY4APS8reeQnl81zaotzNad5wG3CP5H+UcM57tQlzc/f5QVbl6Vu/04QL8Iw1jO+8g1o94oD2CGdQEojxAGnI4+qZynNCJEo+TL06p+gVwauKI0Eho+72C9qK/ha1LiPLYuGX7ZPKCTKmi2YTm5+gbNS33Z2zZMc26tCW5VAFS+fynf8LvrDHhXF8KIg4+Nm5cpw9ocdd+EYphlLyP/XM+8o8+TStYBHyFRLTP7H3TlIZ04FbA50aPtaVCPEcU9SDMyA9pLVhBvbWa5Zu5/rpfx/rHw/ov3kVt8IsHOnDbfYCknoaX9HKeqLPbQQWlw+9uBz0P7JGsFOkQHOQ207whTgSvwG2TSIOHxGRg2DiZeFg0E0uWKvL7lJ4Ch1OjY+W8ovMDOsYjj7u3s0gKhthAhrAZWtymg/VUJyMCW81w/VyGUCPJtJwDQ0Vuz84aeExQlR/uttS0At0MygbP797x6FFHAqyMGwa7akrDeHk2P+5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR01MB7287.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39850400004)(366004)(136003)(376002)(396003)(346002)(451199015)(6506007)(83380400001)(316002)(110136005)(6666004)(2616005)(6512007)(8676002)(478600001)(4326008)(31696002)(66946007)(8936002)(53546011)(42882007)(41300700001)(83170400001)(5660300002)(66476007)(66556008)(52116002)(186003)(54906003)(26005)(31686004)(2906002)(6486002)(38100700002)(38350700002)(43740500002)(44824005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?89OC9WVGn0z3oMxawS7bqR6gTe8accMRzBb1rBJ01a2O4a/j19DPjnJR8Euf?= =?us-ascii?Q?3MZpgLFlCC7WBHdcRMni8eyI3EvJ+Biha02SeHbTzLdOg4LaE/GUOZ3+ET1a?= =?us-ascii?Q?dUExHHxFZPWIJd9zlKd+SFJonylw1oXqQjSrOdwojFxASeEXVEaCO6cp/yeX?= =?us-ascii?Q?8T2Xmwe8y+MEuV2vIJEe+Qc1hT0AAhGlCJC0iqyvV6DgZoaV4BL+YdQSG8Oe?= =?us-ascii?Q?GlCW+6KtmV6g70j8M0xSdbCUoYmq6DYcndov9ukV9OtMYDp1rntoT0YhuJPF?= =?us-ascii?Q?T9JD1/vM2TGReON1toiVJptgijJtv/OmQ7elU8p3azbjL0GcpJMZgY87dIEH?= =?us-ascii?Q?Bv4bxc34bMgafx7ns06jBXLI0IWr5ujdCbzKnY5Rt3o5AcNMHRuJZcbDkUZv?= =?us-ascii?Q?4NNLrTyPyhs78iXGK1snFqJvcGTelCh9BukDsGBDqG7fK8Fu9QoJlIDUf2h3?= =?us-ascii?Q?+4xNj4ZNUOobebgRL9WGj8Pa8LqrjxnUkIPMxDK4AoWR74bMPx2XIQYdj6Bx?= =?us-ascii?Q?Zxxb3J+lKI/q9feY1tzad/Labn6vANbhLPk7jaxonxs7IsLVn0FkpryngwGp?= =?us-ascii?Q?/2VMnc+AAz5o3vTN5cC0hEN9ZfRlDoHd1LpFoVsct0aaIjlkp1WU2aFpvHOa?= =?us-ascii?Q?n2acrYYVGYSMljgaVkndZWwfLYvHXFzUVlYuWanV7EUYB6jYUlgSTsPVcHSu?= =?us-ascii?Q?GoiuHzY3ZeOdInv8n/7LmGDzTgWkovCbvVLs4/ThURCBvX4e49eXJxc3uelX?= =?us-ascii?Q?OkA0ON0+rJKjagv1IWMNZ1cYJpNQxd2eKw9Hj7jNO1FkyhELoMnVP0mnZlO0?= =?us-ascii?Q?hMRqvi1VGQXmRokLiaWGwMnPAVnMfwM0g6lcrRwxC2VrgC9/76VxgI1VpUTc?= =?us-ascii?Q?/OX1U5Mcd1sdTWWLO5kidBHxjO5bjIbeLg184n5fIYljBMius5QIbd0EroA5?= =?us-ascii?Q?3CZA+C73G4rcRK6z/lVyeBOdBJkSZdpgST82RMt5/Eumhgk4HwD0nIr34HJ/?= =?us-ascii?Q?v75uM+gkymE4qSCHzCb/MjNLldo7ZNz5w6h9oZZBGWZjlYGY24IqBOlgvmke?= =?us-ascii?Q?ZdRjry6GMc0rq7IEmF4gDG2hNhY/5ra40zfY3sYy1pVWw5zQ/BjvOcLR1jiS?= =?us-ascii?Q?bfJNvb+bcBS4LQ3MVIBEpnkpnhamChTq/I4Oi6hCRqxGmmevcOYRyWYaL1ru?= =?us-ascii?Q?WvkonM8TTsaVMXihS4pi+V6eUPzocYNfkZbhgav+nJCDnQXT8xKSMmG7a+oB?= =?us-ascii?Q?km1Q2Z2jdUagtyEbkbdXhHljDByMehdWNDXd5ttXQp4eRHKCNWimuweiTj73?= =?us-ascii?Q?xqFPV3eXs+e/eEZ5nMLSoqw4L8jANtjJDraupajSU4QZqm6Qk46vdnTJyFkM?= =?us-ascii?Q?oo1PVVK/xRm9k3igiAkPlUW21GbRunwEIHAENmi6TIxC2pyWtbS9phh7mu0p?= =?us-ascii?Q?JKPCeanQNRobp1X6nWkBys3SUHOOD4GPT8Mi07lERPs+TfB/4wUUhd0eiRyG?= =?us-ascii?Q?pA045Tau0EPA/pQYUOAtrOinmNp5uF3D+yESdtm+gOjira/JR/OY93ng8Uv5?= =?us-ascii?Q?2mkSPejJaMO7yo5OHJZEPY3M3o2UMPWPsS7Ccg82FBL5VEQDj10V/k4fk6UA?= =?us-ascii?Q?EUDo3i9sTlPEvOrX2imhS6o=3D?= X-OriginatorOrg: amperemail.onmicrosoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3ab360d-317e-472c-24e0-08da97ceec5f X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7287.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2022 10:33:41.3405 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Hm05LGqhJfreVj7ErWWPRWhe39AIRWGUQxXp5IOEUvCkXHk1UzccgnXbfi/CNbEszfBx/i+Q52Px8lMRgc+TYd5FOlajkpWjOUtwttuWu7o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR01MB4883 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Sami, On 9/16/2022 2:32 PM, Sami Mujawar wrote: > Hi Nhi, > > Please see my response inline marked [SAMI]. > > Regards, > > Sami Mujawar > > =EF=BB=BFOn 15/09/2022, 19:23, "Nhi Pham" wrote: > > Thanks Leif. I will fix as your suggestion. > > -Nhi > > On 9/15/2022 5:54 PM, Leif Lindholm wrote: > > 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/MiscBiosVendorFunc= tion.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 val= ue > > 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/MiscBio= sVendorFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVe= ndorFunction.c > >> index b49c4b754cab..e9106a8a2fec 100644 > >> --- a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendor= Function.c > >> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendor= Function.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 =3D STRING_TOKEN (STR_MISC_BIOS_VERSION); > >> HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version,= NULL); > >> } else { > >> - Version =3D (CHAR16 *)PcdGetPtr (PcdFirmwareVersionString); > >> - if (StrLen (Version) > 0) { > >> - TokenToUpdate =3D STRING_TOKEN (STR_MISC_BIOS_VERSION); > >> - HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version= , NULL); > >> - } > >> + OemUpdateSmbiosInfo ( > >> + mSmbiosMiscHiiHandle, > >> + STRING_TOKEN (STR_MISC_BIOS_VERSION), > >> + BiosVersionType00 > >> + ); > >> } > >> > >> Char16String =3D GetBiosReleaseDate (); > >> @@ -251,13 +253,21 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor)= { > >> } > >> } > >> > >> - SmbiosRecord->SystemBiosMajorRelease =3D (UINT8)(PcdGet16 (Pcd= SystemBiosRelease) >> 8); > >> - SmbiosRecord->SystemBiosMinorRelease =3D (UINT8)(PcdGet16 (Pcd= SystemBiosRelease) & 0xFF); > >> + if (PcdGet16 (PcdSystemBiosRelease) !=3D 0xFFFF) { > >> + SmbiosRecord->SystemBiosMajorRelease =3D (UINT8)(PcdGet16 (P= cdSystemBiosRelease) >> 8); > >> + SmbiosRecord->SystemBiosMinorRelease =3D (UINT8)(PcdGet16 (P= cdSystemBiosRelease) & 0xFF); > > [SAMI] Considering that ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib= .c will be updated to use PcdSystemBiosRelease, > can you check whether the 'if' code block above is required, please? > [/SAMI] That's really a great point. I think the if statement above is not=20 needed as the OemMiscLib can do what they want. I will update the patch for this. Thanks, Nhi > > >> + } else { > >> + SmbiosRecord->SystemBiosMajorRelease =3D (UINT8)(OemGetBiosR= elease () >> 8); > >> + SmbiosRecord->SystemBiosMinorRelease =3D (UINT8)(OemGetBiosR= elease () & 0xFF); > >> + } > >> > >> - SmbiosRecord->EmbeddedControllerFirmwareMajorRelease =3D (UINT= 16) > >> - (PcdGet= 16 (PcdEmbeddedControllerFirmwareRelease) >> 8); > >> - SmbiosRecord->EmbeddedControllerFirmwareMinorRelease =3D (UINT= 16) > >> - (PcdGet= 16 (PcdEmbeddedControllerFirmwareRelease) & 0xFF); > >> + if (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) !=3D 0xFFF= F) { > >> + SmbiosRecord->EmbeddedControllerFirmwareMajorRelease =3D (UI= NT16)(PcdGet16 (PcdEmbeddedControllerFirmwareRelease) >> 8); > >> + SmbiosRecord->EmbeddedControllerFirmwareMinorRelease =3D (UI= NT16)(PcdGet16 (PcdEmbeddedControllerFirmwareRelease) & 0xFF); > > [SAMI] Similar comment as the previous one. > > >> + } else { > >> + SmbiosRecord->EmbeddedControllerFirmwareMajorRelease =3D (UI= NT16)(OemGetEmbeddedControllerFirmwareRelease () >> 8); > >> + SmbiosRecord->EmbeddedControllerFirmwareMinorRelease =3D (UI= NT16)(OemGetEmbeddedControllerFirmwareRelease () & 0xFF); > >> + } > >> > >> OptionalStrStart =3D (CHAR8 *)(SmbiosRecord + 1); > >> UnicodeStrToAsciiStrS (Vendor, OptionalStrStart, VendorStrLen= + 1); > >> -- > >> 2.25.1 > >> >