From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by mx.groups.io with SMTP id smtpd.web12.627.1611601907666850979 for ; Mon, 25 Jan 2021 11:11:48 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20150623.gappssmtp.com header.s=20150623 header.b=SGqwlKBB; spf=pass (domain: nuviainc.com, ip: 209.85.128.51, mailfrom: leif@nuviainc.com) Received: by mail-wm1-f51.google.com with SMTP id c128so553464wme.2 for ; Mon, 25 Jan 2021 11:11:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=uGZFFwtcVBs+hOfFPjqmimCrUfpIbr1pT/w5lgu1Feo=; b=SGqwlKBBCcK2RHRs/PgCR3wqjOwtIATxkuTRnsqjKdh7zhXxaE2I5jigKWOkYG+3d6 D16DteGuPuUqm+ViYZSVlU55/Xj6349E47wEG4BGdSpwVbznxHeNE+UDgwD7IzPAVNoe ey3rvgbY2iO6Oj8HQkgZYNn+FzfRFiskjPhlQExBGExUc5JOQnDYAms5PpQkpOOej7xM z6M0ty6lmyMDpZ8qaSWUC9LkxpTWzyVrfFhJaw2+O55tR6yE1fWvLKOYBfZP4R9ppZ/u lqQl7fwTCnBWs5JIhMeaOx42kh06sdBd23znpc2KJuqfXPo58gfhwfolIWnJDOEb5cjv OlcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=uGZFFwtcVBs+hOfFPjqmimCrUfpIbr1pT/w5lgu1Feo=; b=bF9SJwlWFY2hsX28+3CBzpE+WKJO7zCT4T7bl8ovNDD5rKDckJ5lIWSVUcXY5SGZ1t zIh6mcigLrB7OiBYZuK3Rzx/BRG6k5rFND/c+5dCPN+WDWGcIik8wW4pVa7ksgBwbL1b 1HV4vlyg7jvbKtDZyjZU0k9XA7U4U0V244vJvbUOTjWXE31Pe7hjPNDcedWjhwxdaz8e Tz4Qw7mh5mWQVA+srIJLBDpj9TD+7d/igjq5AAbIyj9/05iIaV+/D1+jtMi+oKASL93y E1k8wAGq0c9t3LFwNAt6k6MPRwIrwZEpr4PmTJIE2wthgTFvCrOMPCRtTcyVoWWzd7YO FwJg== X-Gm-Message-State: AOAM532LqtvIW+mmgYqtzCJG/rZytssj8jHZfiQzeKFe5TxCeRcj7wRV +MQjzI3+5CjMNCeufVHfRPkiyw== X-Google-Smtp-Source: ABdhPJzVoNoPxPtKyN4o825O3yB5iYHWPyy7wsOTGjQwQTf9u2iMIYoA2TEXRM4mgJRfmlNZgijjfA== X-Received: by 2002:a05:600c:2742:: with SMTP id 2mr1457536wmw.94.1611601906238; Mon, 25 Jan 2021 11:11:46 -0800 (PST) Return-Path: Received: from vanye (cpc1-cmbg19-2-0-cust915.5-4.cable.virginm.net. [82.27.183.148]) by smtp.gmail.com with ESMTPSA id f14sm22961391wre.69.2021.01.25.11.11.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Jan 2021 11:11:45 -0800 (PST) Date: Mon, 25 Jan 2021 19:11:43 +0000 From: "Leif Lindholm" To: Rebecca Cran Cc: devel@edk2.groups.io, Ard Biesheuvel , nd@arm.com, Sami Mujawar , Liming Gao , Michael D Kinney , Zhiguang Liu Subject: Re: [PATCH v6 19/22] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type13 Message-ID: <20210125191143.GJ1664@vanye> References: <20210114163628.31952-1-rebecca@nuviainc.com> <20210114163628.31952-20-rebecca@nuviainc.com> MIME-Version: 1.0 In-Reply-To: <20210114163628.31952-20-rebecca@nuviainc.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Jan 14, 2021 at 09:36:25 -0700, Rebecca Cran wrote: > This code provides information for the SMBIOS Type 13 table. > > Signed-off-by: Rebecca Cran Reviewed-by: Leif Lindholm > --- > ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesData.c | 33 ++++ > ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesFunction.c | 166 ++++++++++++++++++++ > ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguages.uni | 43 +++++ > 3 files changed, 242 insertions(+) > > diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesData.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesData.c > new file mode 100644 > index 000000000000..97d7303d1a33 > --- /dev/null > +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesData.c > @@ -0,0 +1,33 @@ > +/** @file > + This file provides Smbios Type13 Data > + > + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/ > + > + Copyright (c) 2021, NUVIA Inc. All rights reserved.
> + Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
> + Copyright (c) 2015, Hisilicon Limited. All rights reserved.
> + Copyright (c) 2015, Linaro Limited. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include "SmbiosMisc.h" > + > +// > +// Static (possibly build generated) Bios Vendor data. > +// > + > +SMBIOS_MISC_TABLE_DATA(SMBIOS_TABLE_TYPE13, MiscNumberOfInstallableLanguages) = > +{ > + { // Hdr > + EFI_SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION, // Type, > + 0, // Length, > + 0 // Handle > + }, > + 0, // InstallableLanguages > + 0, // Flags > + { > + 0 // Reserved[15] > + }, > + 1 // CurrentLanguage > +}; > diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesFunction.c > new file mode 100644 > index 000000000000..19b60ed71f8c > --- /dev/null > +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguagesFunction.c > @@ -0,0 +1,166 @@ > +/** @file > + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/ > + > + Copyright (c) 2021, NUVIA Inc. All rights reserved.
> + Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
> + Copyright (c) 2015, Hisilicon Limited. All rights reserved.
> + Copyright (c) 2015, Linaro Limited. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "SmbiosMisc.h" > + > +/** > + Get next language from language code list (with separator ';'). > + > + @param LangCode Input: point to first language in the list. On > + Otput: point to next language in the list, or > + NULL if no more language in the list. > + @param Lang The first language in the list. > + > +**/ > +VOID > +EFIAPI > +GetNextLanguage ( > + IN OUT CHAR8 **LangCode, > + OUT CHAR8 *Lang > + ) > +{ > + UINTN Index; > + CHAR8 *StringPtr; > + > + if (LangCode == NULL || *LangCode == NULL || Lang == NULL) { > + return; > + } > + > + Index = 0; > + StringPtr = *LangCode; > + while (StringPtr[Index] != 0 && StringPtr[Index] != ';') { > + Index++; > + } > + > + (VOID)CopyMem (Lang, StringPtr, Index); > + Lang[Index] = 0; > + > + if (StringPtr[Index] == ';') { > + Index++; > + } > + *LangCode = StringPtr + Index; > +} > + > +/** > + This function returns the number of supported languages on HiiHandle. > + > + @param HiiHandle The HII package list handle. > + > + @retval The number of supported languages. > + > +**/ > +UINT16 > +EFIAPI > +GetSupportedLanguageNumber ( > + IN EFI_HII_HANDLE HiiHandle > + ) > +{ > + CHAR8 *Lang; > + CHAR8 *Languages; > + CHAR8 *LanguageString; > + UINT16 LangNumber; > + > + Languages = HiiGetSupportedLanguages (HiiHandle); > + if (Languages == NULL) { > + return 0; > + } > + > + LangNumber = 0; > + Lang = AllocatePool (AsciiStrSize (Languages)); > + if (Lang != NULL) { > + LanguageString = Languages; > + while (*LanguageString != 0) { > + GetNextLanguage (&LanguageString, Lang); > + LangNumber++; > + } > + FreePool (Lang); > + } > + FreePool (Languages); > + return LangNumber; > +} > + > + > +/** > + This function makes boot time changes to the contents of the > + MiscNumberOfInstallableLanguages (Type 13) record. > + > + @param RecordData Pointer to SMBIOS table with default values. > + @param Smbios SMBIOS protocol. > + > + @retval EFI_SUCCESS The SMBIOS table was successfully added. > + @retval EFI_INVALID_PARAMETER Invalid parameter was found. > + @retval EFI_OUT_OF_RESOURCES Failed to allocate required memory. > + > +**/ > +SMBIOS_MISC_TABLE_FUNCTION(MiscNumberOfInstallableLanguages) > +{ > + UINTN LangStrLen; > + CHAR8 CurrentLang[SMBIOS_STRING_MAX_LENGTH + 1]; > + CHAR8 *OptionalStrStart; > + EFI_STATUS Status; > + SMBIOS_TABLE_TYPE13 *SmbiosRecord; > + SMBIOS_TABLE_TYPE13 *InputData; > + > + InputData = NULL; > + > + // > + // First check for invalid parameters. > + // > + if (RecordData == NULL) { > + return EFI_INVALID_PARAMETER; > + } > + > + InputData = (SMBIOS_TABLE_TYPE13 *)RecordData; > + > + InputData->InstallableLanguages = GetSupportedLanguageNumber (mSmbiosMiscHiiHandle); > + > + // > + // Try to check if current langcode matches with the langcodes in installed languages > + // > + ZeroMem (CurrentLang, SMBIOS_STRING_MAX_LENGTH - 1); > + (VOID)AsciiStrCpyS (CurrentLang, SMBIOS_STRING_MAX_LENGTH - 1, "en|US|iso8859-1"); > + LangStrLen = AsciiStrLen (CurrentLang); > + > + // > + // Two zeros following the last string. > + // > + SmbiosRecord = AllocateZeroPool (sizeof (SMBIOS_TABLE_TYPE13) + LangStrLen + 1 + 1); > + if (SmbiosRecord == NULL) { > + return EFI_OUT_OF_RESOURCES; > + } > + > + (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE13)); > + > + SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE13); > + > + OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1); > + (VOID)AsciiStrCpyS (OptionalStrStart, SMBIOS_STRING_MAX_LENGTH - 1, CurrentLang); > + // > + // Now we have got the full smbios record, call smbios protocol to add this record. > + // > + Status = SmbiosMiscAddRecord ((UINT8*)SmbiosRecord, NULL); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type13 Table Log Failed! %r \n", > + __FUNCTION__, __LINE__, Status)); > + } > + > + FreePool (SmbiosRecord); > + return Status; > +} > diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguages.uni b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguages.uni > new file mode 100644 > index 000000000000..3af7a01653d8 > --- /dev/null > +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type13/MiscNumberOfInstallableLanguages.uni > @@ -0,0 +1,43 @@ > +/** @file > + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/ > + > + Copyright (c) 2021, NUVIA Inc. All rights reserved.
> + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
> + Copyright (c) 2015, Hisilicon Limited. All rights reserved.
> + Copyright (c) 2015, Linaro Limited. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +/=# > + > +/=# > +// > +// Language String (Long Format) > +// > +#string STR_MISC_BIOS_LANGUAGES_ENG_LONG #language en-US "en|US|iso8859-1" > +#string STR_MISC_BIOS_LANGUAGES_FRA_LONG #language en-US "fr|CA|iso8859-1" > +#string STR_MISC_BIOS_LANGUAGES_CHN_LONG #language en-US "zh|TW|unicode" > +#string STR_MISC_BIOS_LANGUAGES_JPN_LONG #language en-US "ja|JP|unicode" > +#string STR_MISC_BIOS_LANGUAGES_ITA_LONG #language en-US "it|IT|iso8859-1" > +#string STR_MISC_BIOS_LANGUAGES_SPA_LONG #language en-US "es|ES|iso8859-1" > +#string STR_MISC_BIOS_LANGUAGES_GER_LONG #language en-US "de|DE|iso8859-1" > +#string STR_MISC_BIOS_LANGUAGES_POR_LONG #language en-US "pt|PT|iso8859-1" > + > + > +// > +// Language String (Abbreviated Format) > +// > +#string STR_MISC_BIOS_LANGUAGES_ENG_ABBREVIATE #language en-US "enUS" > +#string STR_MISC_BIOS_LANGUAGES_FRA_ABBREVIATE #language en-US "frCA" > +#string STR_MISC_BIOS_LANGUAGES_CHN_ABBREVIATE #language en-US "zhTW" > +#string STR_MISC_BIOS_LANGUAGES_JPN_ABBREVIATE #language en-US "jaJP" > +#string STR_MISC_BIOS_LANGUAGES_ITA_ABBREVIATE #language en-US "itIT" > +#string STR_MISC_BIOS_LANGUAGES_SPA_ABBREVIATE #language en-US "esES" > +#string STR_MISC_BIOS_LANGUAGES_GER_ABBREVIATE #language en-US "deDE" > +#string STR_MISC_BIOS_LANGUAGES_POR_ABBREVIATE #language en-US "ptPT" > + > +#string STR_MISC_BIOS_LANGUAGES_SIMPLECH_ABBREVIATE #language en-US "zhCN" > +#string STR_MISC_BIOS_LANGUAGES_SIMPLECH_LONG #language en-US "zh|CN|unicode" > + > + > -- > 2.26.2 >