From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.42]) by mx.groups.io with SMTP id smtpd.web11.155.1686058712794506350 for ; Tue, 06 Jun 2023 06:38:32 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@nvidia.com header.s=selector2 header.b=iJXcH+OB; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.220.42, mailfrom: nicklew@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BccXf3xHmoNzCb4bnR2C0k6aGBfy9c934YIw9adVBFktM+A9BL2WrxAXIG/groWQVitC67O9ld2l1tFBHsceSsdgDuPM1MgDShSNsYQ5afK9zWX1i7ZlEtgcAiyl7BokZHHF4h9ZaGtZbhNUfsOhhWccjktUHP0ROLuLxlg6NKIEalcYI7D8iJUjorUXwsXBgSi/iFVXjPfsaucksdSRxKUrHMWTOT6xVyye9LWrw4LfVxhTO7SL83LDJI+G/XgyNs48Ica8X3ZaNOrMZ96Hl49JjQiJKjzyad0+Fx1/FQLWj6mxIqAFHwV9t0myxGM1k8Sw10stYJ3DywpLzod0Xg== 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=Eyo6x0BjtxBj/f5JsP9WSLl4AL8hHSt9qmMKQc3SIKs=; b=MVp4e7z3bur2Fo1UyabjNo5zN9bNFg6oKmx33oKBS/yoRyF8VUsHm7G74ORu5rGKoEynhl5pkwDtPP9a6loPnloQO9elAInHjsGqZDl+UCLbic/iwOBbTRAASpyjADhyERBlhFKIxRj+G0vVGD4Xjk6+0R2et8eknzidxnYTZ0Rry1xF9GslUqfhQsq63+0PqKT+rVbd7XnQ04vMkQiJuTQ36y3FmZeIOUJ0Cv22PiTRctbOhfj7zp6m8qwI0y7YL9wv5jugvSKNZEQUE34k10fO92ky8+zI/qn3eGWwVWfR7bn9PVyhB5Hk8pF/TRFs2E+zmWOTMUUPGxyLu9wbvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Eyo6x0BjtxBj/f5JsP9WSLl4AL8hHSt9qmMKQc3SIKs=; b=iJXcH+OBntq9Q2rmEaGHmgNoXQAzUJ7Q5a9IqvdGP9s2ZB5+hfnCbPj/vDAAZLATwbbA2XX8gtAeMLMtN64Q6xHN5/1oduB/C/wPT8uF3T6yPWs12SkMXk4ZC0izo5btXbZTh6ry7OBh4jhMXru9rHnYlwIC4q/xCXkwiz5lMAWa1rRDyZPkz5OtIAp62c7bRtyejxFmLnQcAta4CqhJd4TQ9PY7tUkg+6A86I1sBpoSgMlo2BRTzXkC2a3mm8PCshXESHZOp8KNKX0ma2n/NfI/4Z2fcP9LrGfvlirDN8EwJ0MVSJ5D/yDWDMW7K/+z1k6DwvFmPY2E5Tg3UYe9fA== Received: from BN9PR03CA0517.namprd03.prod.outlook.com (2603:10b6:408:131::12) by BY5PR12MB4949.namprd12.prod.outlook.com (2603:10b6:a03:1df::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.28; Tue, 6 Jun 2023 13:38:27 +0000 Received: from BN8NAM11FT062.eop-nam11.prod.protection.outlook.com (2603:10b6:408:131:cafe::8a) by BN9PR03CA0517.outlook.office365.com (2603:10b6:408:131::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33 via Frontend Transport; Tue, 6 Jun 2023 13:38:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN8NAM11FT062.mail.protection.outlook.com (10.13.177.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33 via Frontend Transport; Tue, 6 Jun 2023 13:38:26 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Tue, 6 Jun 2023 06:38:12 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Tue, 6 Jun 2023 06:38:11 -0700 Received: from NV-CL38DL3.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Tue, 6 Jun 2023 06:38:11 -0700 From: "Nickle Wang" To: CC: Abner Chang , Igor Kulchytskyy Subject: [edk2-redfish-client][PATCH 1/3] RedfishClientPkg: Add a sample memory configuration HII driver Date: Tue, 6 Jun 2023 21:38:10 +0800 Message-ID: <20230606133810.4542-1-nicklew@nvidia.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Return-Path: nicklew@nvidia.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT062:EE_|BY5PR12MB4949:EE_ X-MS-Office365-Filtering-Correlation-Id: 5013c5f7-cc2c-4fc7-46b4-08db66934eb7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B4xI0uI58wPHaHhz6NQ8NB7/3lxmPouOxn1fulFOLPNMS5Z2SfV4RIHx61HWnGul0fiO8oCdeCeRtm/dvNz0lifihcE6vYitaTjmft8/QwAvvUFudYfQTmWWi2kTkiS7x/x92tyo3us0eEwUHIk189p73h/Wv4bozv8s+9l7WUFu45FnjavCYOi3Oq2A7BQ7811mnnLJEPB+9X9PehU3WF0oGa3tLNbu2bFyyKMU2omFO9dakI73PMgAH/yYeJAEYc2nKdn15gDQBuVcII+efOVfC23wS2s9/RbFcbW155zJr+lpiu2DcZHmTsPTRPJZVIqo5/Hk/snsC41JoXdx+AkYtv57ssauvUCiscRvAPR7c69zqhOd0ChictUIubMwp/zfikW680EFuX5Drsgx5oe/LMgkhRjqEAlRCJZ1LhBQWwqvin44i3dfOmnizmBwofwUNpzsl9egYPtZoBEHITjI48PY+xwTcuHywzBcDnABjEBXB+ugDzVfv0tz5gW+emsWy+t8uqquRmJ3nyRCT+W9C3fGANvrhJyM8TBJTOhqN68oG3dsu8j385Nej6uAjps62mySsSofMjG9VDHL5SqmpX3Y8nL6mlAPmpRN5x8LNI4d5R8lWSsEmEUP9ZR3aJoZ2nGZbN7uojFU3xLACftP3sItOVvFnbpS1OaeNrwEccmzVa+wRZeLiEyIhxp/e2jq1Yr0ScwsHEcJBAH6nXy8YqoVclJBFBHBqkoLjoJTVhQ0ePUcdfYcmp5ev+ow7gkgG3O9c3RtnByoCehKdpHqStBcqD8V2D3WKJjvgurkQh6NPBImvhKccbHjh4eOBg6t0IKGSPMEoAMit2xpeOesDCxRDEgRI+h2i2vPt0A= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230028)(4636009)(396003)(136003)(39860400002)(376002)(346002)(451199021)(46966006)(40470700004)(36840700001)(6916009)(40460700003)(316002)(19627235002)(4326008)(8676002)(8936002)(5660300002)(41300700001)(966005)(30864003)(2906002)(70586007)(54906003)(186003)(70206006)(26005)(1076003)(426003)(336012)(2616005)(36860700001)(47076005)(66574015)(82310400005)(83380400001)(7696005)(478600001)(86362001)(36756003)(82740400003)(40480700001)(356005)(7636003)(579004)(44824005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jun 2023 13:38:26.7885 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5013c5f7-cc2c-4fc7-46b4-08db66934eb7 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT062.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4949 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain This is an HII sample driver of memory configuration. This demonstrates the communication between platform configuration (EDK2/HII) and Redfish service (Memory resource) base on RedfishClientPkg. The language ("x-uef-redfish-*") defined in the Redfish-specific uni file is the connection between HII configuration and the Redfish schema. e.g. The HII option strings those applied with "x-uef-redfish-* HII language are connected to the corresponding Redfish properties. e.g. x-uefi-redfish-Memory.v1_7_1 "/Memory/{1}/BaseModuleType" The changes made on BIOS setup page or remote (OOB to Redfish service) will be sync-up each other through EDKII Redfish feature driver using the transport (REST_EX) provided by RedfishPkg. On EDK2, HTTP based REST EX protocol instance is used to consume and update the Redfish properties. Check this for the RedfishClientPkg design architecture, https://github.com/tianocore/edk2-redfish-client/blob/main/RedfishClientPkg= /Readme.md Below for RedfishPkg design architecture, https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy --- RedfishClientPkg/RedfishClientPkg.dec | 2 + .../RedfishClientComponents.dsc.inc | 2 + RedfishClientPkg/RedfishClientPkg.dsc | 2 + .../Hii2RedfishMemoryDxe.inf | 56 ++++ .../Hii2RedfishMemoryData.h | 71 +++++ .../Hii2RedfishMemoryDxe.h | 44 +++ .../Hii2RedfishMemoryVfr.vfr | 219 +++++++++++++ .../Hii2RedfishMemoryDxe.c | 292 ++++++++++++++++++ .../Hii2RedfishMemoryDxeMap.uni | 38 +++ .../Hii2RedfishMemoryDxeStrings.uni | 68 ++++ RedfishClientPkg/RedfishClient.fdf.inc | 4 +- 11 files changed, 797 insertions(+), 1 deletion(-) create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= Dxe.inf create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= Data.h create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= Dxe.h create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= Vfr.vfr create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= Dxe.c create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= DxeMap.uni create mode 100644 RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemory= DxeStrings.uni diff --git a/RedfishClientPkg/RedfishClientPkg.dec b/RedfishClientPkg/Redfi= shClientPkg.dec index 84bceca3..af241cf6 100644 --- a/RedfishClientPkg/RedfishClientPkg.dec +++ b/RedfishClientPkg/RedfishClientPkg.dec @@ -57,6 +57,8 @@ ## Include/RedfishBase.h gEfiRedfishClientVariableGuid =3D { 0x91c46a3d, 0xed1a= , 0x477b, { 0xa5, 0x33, 0x87, 0x2d, 0xcd, 0xb0, 0xfc, 0xc1 } } =20 + gHii2RedfishMemoryFormsetGuid =3D { 0XC2BE579E, 0X3C57= , 0X499C, { 0XA9, 0XDF, 0XE6, 0X23, 0X8A, 0X49, 0X64, 0XF8 }} + [PcdsFixedAtBuild] gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UINT= 32|0x10000001 gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|UINT= 32|0x10000002 diff --git a/RedfishClientPkg/RedfishClientComponents.dsc.inc b/RedfishClie= ntPkg/RedfishClientComponents.dsc.inc index e83f4bc9..3451c185 100644 --- a/RedfishClientPkg/RedfishClientComponents.dsc.inc +++ b/RedfishClientPkg/RedfishClientComponents.dsc.inc @@ -7,6 +7,7 @@ # "RedfishClientDefines.dsc.inc". # # (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved= . # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -16,6 +17,7 @@ RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.inf RedfishClientPkg/RedfishETagDxe/RedfishETagDxe.inf RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf + RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf !endif # # Below two modules should be pulled in by build tool. diff --git a/RedfishClientPkg/RedfishClientPkg.dsc b/RedfishClientPkg/Redfi= shClientPkg.dsc index d3b645b6..ac9f8e9d 100644 --- a/RedfishClientPkg/RedfishClientPkg.dsc +++ b/RedfishClientPkg/RedfishClientPkg.dsc @@ -37,6 +37,8 @@ Ucs2Utf8Lib|RedfishPkg/Library/BaseUcs2Utf8Lib/BaseUcs2Utf8Lib.inf RedfishCrtLib|RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf BaseSortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServic= esLib.inf =20 [LibraryClasses.ARM, LibraryClasses.AARCH64] # diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf= b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf new file mode 100644 index 00000000..2dd6b0dd --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf @@ -0,0 +1,56 @@ +## @file +# HII-to-Redfish memory driver. +# +# (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserve= d. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D Hii2RedfishMemoryDxe + FILE_GUID =3D 58134796-EB3A-4635-9664-6B7F68A8A9A1 + MODULE_TYPE =3D UEFI_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D Hii2RedfishMemoryDxeDriverEntryPoint + UNLOAD_IMAGE =3D Hii2RedfishMemoryDxeDriverUnload + +[Sources] + Hii2RedfishMemoryDxe.c + Hii2RedfishMemoryDxe.h + Hii2RedfishMemoryData.h + Hii2RedfishMemoryVfr.vfr + Hii2RedfishMemoryDxeStrings.uni + Hii2RedfishMemoryDxeMap.uni + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + RedfishClientPkg/RedfishClientPkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + BaseLib + BaseMemoryLib + DebugLib + PcdLib + MemoryAllocationLib + UefiBootServicesTableLib + UefiRuntimeServicesTableLib + UefiLib + PrintLib + HiiLib + +[Protocols] + gEfiDevicePathProtocolGuid + gEfiHiiConfigAccessProtocolGuid + + +[Guids] + gHii2RedfishMemoryFormsetGuid + +[Depex] + gEfiHiiDatabaseProtocolGuid + diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h = b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h new file mode 100644 index 00000000..df8449d7 --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h @@ -0,0 +1,71 @@ +/** @file + The header file of HII-to-Redfish memory driver. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef HII_2_REDFISH_MEMORY_DATA_H_ +#define HII_2_REDFISH_MEMORY_DATA_H_ + +#include +#include + +#define HII_2_REDFISH_MEMORY_FORMSET_GUID \ + { \ + 0xC2BE579E, 0x3C57, 0x499C, { 0xA9, 0xDF, 0xE6, 0x23, 0x8A, 0x49, 0x64= , 0xF8 } \ + } + +extern EFI_GUID gHii2RedfishMemoryFormsetGuid; + +#define FORM_ID 0x001 +#define FROM_ID_MEMORY_1 0x002 +#define FROM_ID_MEMORY_2 0x003 +#define FROM_ID_MEMORY_3 0x004 +#define FROM_ID_MEMORY_4 0x005 + +#define QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE 0x100 +#define QUESTION_ID_MEMORY_1_BUS_WIDTH_BITS 0x101 +#define QUESTION_ID_MEMORY_1_CONFIGURATION_LOCKED 0x102 + +#define QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE 0x200 +#define QUESTION_ID_MEMORY_2_BUS_WIDTH_BITS 0x201 +#define QUESTION_ID_MEMORY_2_CONFIGURATION_LOCKED 0x202 + +#define QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE 0x300 +#define QUESTION_ID_MEMORY_3_BUS_WIDTH_BITS 0x301 +#define QUESTION_ID_MEMORY_3_CONFIGURATION_LOCKED 0x302 + +#define QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE 0x400 +#define QUESTION_ID_MEMORY_4_BUS_WIDTH_BITS 0x401 +#define QUESTION_ID_MEMORY_4_CONFIGURATION_LOCKED 0x402 + +#define MEMORY_MAX_NO 0x04 +#define ID_STRING_MIN 0 +#define ID_STRING_MAX 15 +#define ID_STRING_MAX_WITH_TERMINATOR 16 + +#pragma pack(1) +// +// Definiton of HII_2_REDFISH_MEMORY_SET +// +typedef struct { + CHAR16 ModuleProductId[ID_STRING_MAX_WITH_TERMINATOR]; + UINT8 BaseModuleType; + UINT8 BusWidthBits; + UINT8 ConfigurationLocked; + UINT8 Reserved; // for 16 bit boundary of ModuleProduc= tId +} HII_2_REDFISH_MEMORY_SET; + +// +// Definiton of HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA +// +typedef struct { + HII_2_REDFISH_MEMORY_SET Memory[MEMORY_MAX_NO]; +} HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA; + +#pragma pack() + +#endif diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h b= /RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h new file mode 100644 index 00000000..c00972ad --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h @@ -0,0 +1,44 @@ +/** @file + HII-to-Redfish memory driver header file. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef HII_2_REDFISH_MEMORY_DXE_H_ +#define HII_2_REDFISH_MEMORY_DXE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "Hii2RedfishMemoryData.h" + +extern UINT8 Hii2RedfishMemoryVfrBin[]; + +#pragma pack(1) + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() + +#endif diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr= b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr new file mode 100644 index 00000000..99f5e9a4 --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr @@ -0,0 +1,219 @@ +/** @file + HII-to-Redfish memory driver VFR file. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include "Hii2RedfishMemoryData.h" + +formset + guid =3D HII_2_REDFISH_MEMORY_FORMSET_GUID, + title =3D STRING_TOKEN(STR_FORM_SET_TITLE), + help =3D STRING_TOKEN(STR_FORM_SET_TITLE_HELP), + classguid =3D EFI_HII_PLATFORM_SETUP_FORMSET_GUID, + + // + // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI) + // + efivarstore HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA, + attribute =3D EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLAT= ILE, // EFI variable attribures + name =3D Hii2RedfishMemoryEfiVar, + guid =3D HII_2_REDFISH_MEMORY_FORMSET_GUID; + + // + // Define a Form (EFI_IFR_FORM) + // + form formid =3D FORM_ID, // Form ID + title =3D STRING_TOKEN(STR_FORM_TITLE); // Form title + + goto FROM_ID_MEMORY_1, // Destination For= m ID + prompt =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_1), // Prompt string + help =3D STRING_TOKEN(STR_FORM_HELP_MEMORY_1); // Help string + + goto FROM_ID_MEMORY_2, // Destination For= m ID + prompt =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_2), // Prompt string + help =3D STRING_TOKEN(STR_FORM_HELP_MEMORY_2); // Help string + + goto FROM_ID_MEMORY_3, // Destination For= m ID + prompt =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_3), // Prompt string + help =3D STRING_TOKEN(STR_FORM_HELP_MEMORY_3); // Help string + + goto FROM_ID_MEMORY_4, // Destination For= m ID + prompt =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_4), // Prompt string + help =3D STRING_TOKEN(STR_FORM_HELP_MEMORY_4); // Help string + + endform; + + form formid =3D FROM_ID_MEMORY_1, // Form ID + title =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_1); // Form title + + oneof varid =3D Hii2RedfishMemoryEfiVar.Memory[0].BaseModuleType, + questionid =3D QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE, + prompt =3D STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_HELP), + flags =3D INTERACTIVE | NUMERIC_SIZE_1, + option text =3D STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT), v= alue =3D STR_MEMORY_RDIMM_PROMPT, flags =3D DEFAULT; + option text =3D STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT), v= alue =3D STR_MEMORY_UDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT), v= alue =3D STR_MEMORY_SO_DIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT), v= alue =3D STR_MEMORY_LRDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_RDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_UDIMM_PROMPT, flags =3D 0; + endoneof; + + string varid =3D Hii2RedfishMemoryEfiVar.Memory[0].ModuleProductId, + prompt =3D STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_HELP), + flags =3D READ_ONLY, + minsize =3D ID_STRING_MIN, + maxsize =3D ID_STRING_MAX, + endstring; + + numeric varid =3D Hii2RedfishMemoryEfiVar.Memory[0].BusWidthBits, + prompt =3D STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_HELP), + minimum =3D 0, + maximum =3D 0xff, + step =3D 1, + default =3D 20, + endnumeric; + + checkbox varid =3D Hii2RedfishMemoryEfiVar.Memory[0].ConfigurationLo= cked, + prompt =3D STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_P= ROMPT), + help =3D STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_H= ELP), + flags =3D CHECKBOX_DEFAULT, + default =3D TRUE, + endcheckbox; + + endform; + + form formid =3D FROM_ID_MEMORY_2, // Form ID + title =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_2); // Form title + + oneof varid =3D Hii2RedfishMemoryEfiVar.Memory[1].BaseModuleType, + questionid =3D QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE, + prompt =3D STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_HELP), + flags =3D INTERACTIVE | NUMERIC_SIZE_1, + option text =3D STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT), v= alue =3D STR_MEMORY_RDIMM_PROMPT, flags =3D DEFAULT; + option text =3D STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT), v= alue =3D STR_MEMORY_UDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT), v= alue =3D STR_MEMORY_SO_DIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT), v= alue =3D STR_MEMORY_LRDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_RDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_UDIMM_PROMPT, flags =3D 0; + endoneof; + + string varid =3D Hii2RedfishMemoryEfiVar.Memory[1].ModuleProductId, + prompt =3D STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_HELP), + flags =3D READ_ONLY, + minsize =3D ID_STRING_MIN, + maxsize =3D ID_STRING_MAX, + endstring; + + numeric varid =3D Hii2RedfishMemoryEfiVar.Memory[1].BusWidthBits, + prompt =3D STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_HELP), + minimum =3D 0, + maximum =3D 0xff, + step =3D 1, + default =3D 20, + endnumeric; + + checkbox varid =3D Hii2RedfishMemoryEfiVar.Memory[1].ConfigurationLo= cked, + prompt =3D STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_P= ROMPT), + help =3D STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_H= ELP), + flags =3D CHECKBOX_DEFAULT, + default =3D TRUE, + endcheckbox; + + endform; + + form formid =3D FROM_ID_MEMORY_3, // Form ID + title =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_3); // Form title + + oneof varid =3D Hii2RedfishMemoryEfiVar.Memory[2].BaseModuleType, + questionid =3D QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE, + prompt =3D STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_HELP), + flags =3D INTERACTIVE | NUMERIC_SIZE_1, + option text =3D STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT), v= alue =3D STR_MEMORY_RDIMM_PROMPT, flags =3D DEFAULT; + option text =3D STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT), v= alue =3D STR_MEMORY_UDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT), v= alue =3D STR_MEMORY_SO_DIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT), v= alue =3D STR_MEMORY_LRDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_RDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_UDIMM_PROMPT, flags =3D 0; + endoneof; + + string varid =3D Hii2RedfishMemoryEfiVar.Memory[2].ModuleProductId, + prompt =3D STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_HELP), + flags =3D READ_ONLY, + minsize =3D ID_STRING_MIN, + maxsize =3D ID_STRING_MAX, + endstring; + + numeric varid =3D Hii2RedfishMemoryEfiVar.Memory[2].BusWidthBits, + prompt =3D STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_HELP), + minimum =3D 0, + maximum =3D 0xff, + step =3D 1, + default =3D 20, + endnumeric; + + checkbox varid =3D Hii2RedfishMemoryEfiVar.Memory[2].ConfigurationLo= cked, + prompt =3D STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_P= ROMPT), + help =3D STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_H= ELP), + flags =3D CHECKBOX_DEFAULT, + default =3D TRUE, + endcheckbox; + + endform; + + form formid =3D FROM_ID_MEMORY_4, // Form ID + title =3D STRING_TOKEN(STR_FORM_TITLE_MEMORY_3); // Form title + + oneof varid =3D Hii2RedfishMemoryEfiVar.Memory[3].BaseModuleType, + questionid =3D QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE, + prompt =3D STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_HELP), + flags =3D INTERACTIVE | NUMERIC_SIZE_1, + option text =3D STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT), v= alue =3D STR_MEMORY_RDIMM_PROMPT, flags =3D DEFAULT; + option text =3D STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT), v= alue =3D STR_MEMORY_UDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT), v= alue =3D STR_MEMORY_SO_DIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT), v= alue =3D STR_MEMORY_LRDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_RDIMM_PROMPT, flags =3D 0; + option text =3D STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), v= alue =3D STR_MEMORY_MINI_UDIMM_PROMPT, flags =3D 0; + endoneof; + + string varid =3D Hii2RedfishMemoryEfiVar.Memory[3].ModuleProductId, + prompt =3D STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_HELP), + flags =3D READ_ONLY, + minsize =3D ID_STRING_MIN, + maxsize =3D ID_STRING_MAX, + endstring; + + numeric varid =3D Hii2RedfishMemoryEfiVar.Memory[3].BusWidthBits, + prompt =3D STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT), + help =3D STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_HELP), + minimum =3D 0, + maximum =3D 0xff, + step =3D 1, + default =3D 20, + endnumeric; + + checkbox varid =3D Hii2RedfishMemoryEfiVar.Memory[3].ConfigurationLo= cked, + prompt =3D STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_P= ROMPT), + help =3D STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_H= ELP), + flags =3D CHECKBOX_DEFAULT, + default =3D TRUE, + endcheckbox; + + endform; + +endformset; diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c b= /RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c new file mode 100644 index 00000000..83710240 --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c @@ -0,0 +1,292 @@ +/** @file + HII-to-Redfish memory driver. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "Hii2RedfishMemoryDxe.h" + +EFI_GUID mHii2RedfishMemoryGuid =3D HII_2_REDFISH_MEMORY_FORMSET_GU= ID; +EFI_HII_HANDLE mHiiHandle; +EFI_HANDLE DriverHandle; +CHAR16 Hii2RedfishEfiVar[] =3D L"Hii2RedfishMemoryEfiVar"; + +/// +/// HII specific Vendor Device Path definition. +/// +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath =3D { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + HII_2_REDFISH_MEMORY_FORMSET_GUID + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8)(END_DEVICE_PATH_LENGTH), + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + +/** + Initial HII variable if it does not exist. + + @retval EFI_SUCESS HII variable is initialized. + +**/ +EFI_STATUS +InitialHiiVairable ( + VOID + ) +{ + EFI_STATUS Status; + UINTN BufferSize; + HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA Hii2RedfishMemoryVar; + UINTN Index; + + // + // Get Buffer Storage data from EFI variable. + // Try to get the current setting from variable. + // + BufferSize =3D sizeof (HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA); + Status =3D gRT->GetVariable ( + Hii2RedfishEfiVar, + &gHii2RedfishMemoryFormsetGuid, + NULL, + &BufferSize, + &Hii2RedfishMemoryVar + ); + if (!EFI_ERROR (Status)) { + return EFI_SUCCESS; + } + + // + // Initialization + // + for (Index =3D 0; Index < MEMORY_MAX_NO; Index++) { + Hii2RedfishMemoryVar.Memory[Index].BaseModuleType =3D STR_MEMORY_= RDIMM_PROMPT; + Hii2RedfishMemoryVar.Memory[Index].BusWidthBits =3D 20; + Hii2RedfishMemoryVar.Memory[Index].ConfigurationLocked =3D TRUE; + StrCpyS (Hii2RedfishMemoryVar.Memory[Index].ModuleProductId, ID_STRING= _MAX_WITH_TERMINATOR, L"1234"); + } + + Status =3D gRT->SetVariable ( + Hii2RedfishEfiVar, + &gHii2RedfishMemoryFormsetGuid, + VARIABLE_ATTRIBUTE_NV_BS, + BufferSize, + &Hii2RedfishMemoryVar + ); + + return Status; +} + +/** + This function allows a caller to extract the current configuration for o= ne + or more named elements from the target driver. + + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTO= COL. + @param[in] Request A null-terminated Unicode string in + format. + @param[out] Progress On return, points to a character in the R= equest + string. Points to the string's null termi= nator if + request was successful. Points to the mos= t recent + '&' before the first failing name/value p= air (or + the beginning of the string if the failur= e is in + the first name/value pair) if the request= was not + successful. + @param[out] Results A null-terminated Unicode string in + format which has all valu= es filled + in for the names in the Request string. S= tring to + be allocated by the called function. + + @retval EFI_SUCCESS The Results is filled with the requested = values. + @retval EFI_OUT_OF_RESOURCES Not enough memory to store the results. + @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown nam= e. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in= this + driver. + +**/ +EFI_STATUS +EFIAPI +Hii2RedfishMemoryExtractConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results + ) +{ + if ((Progress =3D=3D NULL) || (Results =3D=3D NULL)) { + return EFI_INVALID_PARAMETER; + } + + if (Request =3D=3D NULL) { + return EFI_UNSUPPORTED; + } + + // + // Check whether request for EFI Varstore. EFI varstore get data + // through hii database, not support in this path. + // + if (HiiIsConfigHdrMatch (Request, &gHii2RedfishMemoryFormsetGuid, L"Hii2= RedfishMemoryEfiVar")) { + return EFI_UNSUPPORTED; + } + + return EFI_NOT_FOUND; +} + +/** + This function processes the results of changes in configuration. + + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTO= COL. + @param[in] Configuration A null-terminated Unicode string in + format. + @param[out] Progress A pointer to a string filled in with the = offset of + the most recent '&' before the first fail= ing + name/value pair (or the beginning of the = string if + the failure is in the first name/value pa= ir) or + the terminating NULL if all was successfu= l. + + @retval EFI_SUCCESS The Results is processed successfully. + @retval EFI_INVALID_PARAMETER Configuration is NULL. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in= this + driver. + +**/ +EFI_STATUS +EFIAPI +Hii2RedfishMemoryRouteConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress + ) +{ + DEBUG ((DEBUG_INFO, "%a, unsupported\n", __func__)); + + return EFI_UNSUPPORTED; +} + +/** + This function processes the results of changes in configuration. + + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTO= COL. + @param[in] Action Specifies the type of action taken by the= browser. + @param[in] QuestionId A unique value which is sent to the origi= nal + exporting driver so that it can identify = the type + of data to expect. + @param[in] Type The type of value for the question. + @param[in] Value A pointer to the data being sent to the o= riginal + exporting driver. + @param[out] ActionRequest On return, points to the action requested= by the + callback function. + + @retval EFI_SUCCESS The callback successfully handled the act= ion. + @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold t= he + variable and its data. + @retval EFI_DEVICE_ERROR The variable could not be saved. + @retval EFI_UNSUPPORTED The specified Action is not supported by = the + callback. + +**/ +EFI_STATUS +EFIAPI +Hii2RedfishMemoryDriverCallback ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + ) +{ + DEBUG ((DEBUG_INFO, "%a, action: 0x%x QID: 0x%x\n", __func__, Action, Qu= estionId)); + + return EFI_UNSUPPORTED; +} + +EFI_HII_CONFIG_ACCESS_PROTOCOL mHii2RedfishConfigAccess =3D { + Hii2RedfishMemoryExtractConfig, + Hii2RedfishMemoryRouteConfig, + Hii2RedfishMemoryDriverCallback +}; + +/** + Main entry for this driver. + + @param[in] ImageHandle Image handle this driver. + @param[in] SystemTable Pointer to SystemTable. + + @retval EFI_SUCESS This function always complete successfully. + +**/ +EFI_STATUS +EFIAPI +Hii2RedfishMemoryDxeDriverEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + DriverHandle =3D NULL; + Status =3D gBS->InstallMultipleProtocolInterfaces ( + &DriverHandle, + &gEfiDevicePathProtocolGuid, + &mHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &mHii2RedfishConfigAccess, + NULL + ); + + // + // Publish our HII data + // + mHiiHandle =3D HiiAddPackages ( + &mHii2RedfishMemoryGuid, + DriverHandle, + Hii2RedfishMemoryDxeStrings, + Hii2RedfishMemoryVfrBin, + NULL + ); + if (mHiiHandle =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status =3D InitialHiiVairable (); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, failed to initial variable: %r\n", __func__,= Status)); + } + + return EFI_SUCCESS; +} + +/** + Unloads the application and its installed protocol. + + @param[in] ImageHandle Handle that identifies the image to be unl= oaded. + + @retval EFI_SUCCESS The image has been unloaded. +**/ +EFI_STATUS +EFIAPI +Hii2RedfishMemoryDxeDriverUnload ( + IN EFI_HANDLE ImageHandle + ) +{ + if (mHiiHandle !=3D NULL) { + HiiRemovePackages (mHiiHandle); + } + + return EFI_SUCCESS; +} diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.= uni b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni new file mode 100644 index 00000000..de1a6ef3 --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni @@ -0,0 +1,38 @@ +/** @file + HII-to-Redfish memory driver. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/=3D# +#langdef x-uefi-redfish-Memory.v1_7_1 "Memory.v1_7_1" + +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{1}/BaseModuleType" +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{1}/BusWidthBits" +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{1}/ConfigurationLocked" +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{1}/ModuleProductID" + +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{2}/BaseModuleType" +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{2}/BusWidthBits" +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{2}/ConfigurationLocked" +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{2}/ModuleProductID" + +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{3}/BaseModuleType" +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{3}/BusWidthBits" +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{3}/ConfigurationLocked" +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{3}/ModuleProductID" + +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{5}/BaseModuleType" +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{5}/BusWidthBits" +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{5}/ConfigurationLocked" +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT #language x-uefi-redf= ish-Memory.v1_7_1 "/Memory/{5}/ModuleProductID" + +#string STR_MEMORY_RDIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "RDIMM" +#string STR_MEMORY_UDIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "UDIMM" +#string STR_MEMORY_SO_DIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "SO_DIMM" +#string STR_MEMORY_LRDIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "LRDIMM" +#string STR_MEMORY_MINI_RDIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "Mini_RDIMM" +#string STR_MEMORY_MINI_UDIMM_PROMPT #language x-uefi-redfi= sh-Memory.v1_7_1 "Mini_UDIMM" diff --git a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStri= ngs.uni b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings= .uni new file mode 100644 index 00000000..bfa082fd --- /dev/null +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni @@ -0,0 +1,68 @@ +/** @file + HII-to-Redfish memory driver. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/=3D# +#langdef en-US "English" + +#string STR_FORM_SET_TITLE #language en-US "HII to = Redfish (Memory)" +#string STR_FORM_SET_TITLE_HELP #language en-US "HII to = Redfish (Memory)" +#string STR_FORM_TITLE #language en-US "HII to = Redfish Memory properties" + +#string STR_FORM_TITLE_MEMORY_1 #language en-US "Memory = 1" +#string STR_FORM_HELP_MEMORY_1 #language en-US "Memory = 1" +#string STR_FORM_TITLE_MEMORY_2 #language en-US "Memory = 2" +#string STR_FORM_HELP_MEMORY_2 #language en-US "Memory = 2" +#string STR_FORM_TITLE_MEMORY_3 #language en-US "Memory = 3" +#string STR_FORM_HELP_MEMORY_3 #language en-US "Memory = 3" +#string STR_FORM_TITLE_MEMORY_4 #language en-US "Memory = 5" +#string STR_FORM_HELP_MEMORY_4 #language en-US "Memory = 5" + + +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language en-US "Base m= odule type" +#string STR_MEMORY_1_BASE_MODULE_TYPE_HELP #language en-US "The va= lue of this property shall be the base module type of Memory" +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT #language en-US "Bus Wi= dth in bits" +#string STR_MEMORY_1_BUS_WIDTH_BITS_HELP #language en-US "The va= lue of this property shall be the bus width in bits" +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT #language en-US "Config= uration Locked" +#string STR_MEMORY_1_CONFIGURATION_LOCKED_HELP #language en-US "The va= lue of this property shall be the current configuration lock state of this = memory. True shall indicate that the configuration is locked and cannot be = altered. False shall indicate that the configuration is not locked and may = be altered" +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT #language en-US "Module= Product ID" +#string STR_MEMORY_1_MODULE_PRODUCT_ID_HELP #language en-US "The pr= oduct ID of this memory module." + +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT #language en-US "Base m= odule type" +#string STR_MEMORY_2_BASE_MODULE_TYPE_HELP #language en-US "The va= lue of this property shall be the base module type of Memory" +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT #language en-US "Bus Wi= dth in bits" +#string STR_MEMORY_2_BUS_WIDTH_BITS_HELP #language en-US "The va= lue of this property shall be the bus width in bits" +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT #language en-US "Config= uration Locked" +#string STR_MEMORY_2_CONFIGURATION_LOCKED_HELP #language en-US "The va= lue of this property shall be the current configuration lock state of this = memory. True shall indicate that the configuration is locked and cannot be = altered. False shall indicate that the configuration is not locked and may = be altered" +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT #language en-US "Module= Product ID" +#string STR_MEMORY_2_MODULE_PRODUCT_ID_HELP #language en-US "The pr= oduct ID of this memory module." + +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT #language en-US "Base m= odule type" +#string STR_MEMORY_3_BASE_MODULE_TYPE_HELP #language en-US "The va= lue of this property shall be the base module type of Memory" +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT #language en-US "Bus Wi= dth in bits" +#string STR_MEMORY_3_BUS_WIDTH_BITS_HELP #language en-US "The va= lue of this property shall be the bus width in bits" +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT #language en-US "Config= uration Locked" +#string STR_MEMORY_3_CONFIGURATION_LOCKED_HELP #language en-US "The va= lue of this property shall be the current configuration lock state of this = memory. True shall indicate that the configuration is locked and cannot be = altered. False shall indicate that the configuration is not locked and may = be altered" +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT #language en-US "Module= Product ID" +#string STR_MEMORY_3_MODULE_PRODUCT_ID_HELP #language en-US "The pr= oduct ID of this memory module." + +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT #language en-US "Base m= odule type" +#string STR_MEMORY_4_BASE_MODULE_TYPE_HELP #language en-US "The va= lue of this property shall be the base module type of Memory" +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT #language en-US "Bus Wi= dth in bits" +#string STR_MEMORY_4_BUS_WIDTH_BITS_HELP #language en-US "The va= lue of this property shall be the bus width in bits" +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT #language en-US "Config= uration Locked" +#string STR_MEMORY_4_CONFIGURATION_LOCKED_HELP #language en-US "The va= lue of this property shall be the current configuration lock state of this = memory. True shall indicate that the configuration is locked and cannot be = altered. False shall indicate that the configuration is not locked and may = be altered" +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT #language en-US "Module= Product ID" +#string STR_MEMORY_4_MODULE_PRODUCT_ID_HELP #language en-US "The pr= oduct ID of this memory module." + +#string STR_MEMORY_RDIMM_PROMPT #language en-US "RDIMM" +#string STR_MEMORY_UDIMM_PROMPT #language en-US "UDIMM" +#string STR_MEMORY_SO_DIMM_PROMPT #language en-US "SO_DIM= M" +#string STR_MEMORY_LRDIMM_PROMPT #language en-US "LRDIMM= " +#string STR_MEMORY_MINI_RDIMM_PROMPT #language en-US "Mini_R= DIMM" +#string STR_MEMORY_MINI_UDIMM_PROMPT #language en-US "Mini_U= DIMM" diff --git a/RedfishClientPkg/RedfishClient.fdf.inc b/RedfishClientPkg/Redf= ishClient.fdf.inc index fa4e5389..7421440b 100644 --- a/RedfishClientPkg/RedfishClient.fdf.inc +++ b/RedfishClientPkg/RedfishClient.fdf.inc @@ -2,10 +2,11 @@ # Redfish Client FDF include file for [FV*] section of all Architectures. # # This file can be included to the [FV*] section(s) of a platform FDF file -# by using "!include RedfishClientPkg/RedfisClientLibs.fdf.inc" to specify= the module instances +# by using "!include RedfishClientPkg/RedfishClientLibs.fdf.inc" to specif= y the module instances # to be built in the firmware volume. # # (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved= . # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -19,6 +20,7 @@ INF RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSystemDx= e.inf INF RedfishClientPkg/Features/ComputerSystemCollectionDxe/ComputerSystem= CollectionDxe.inf INF RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf + INF RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf =20 !include RedfishClientPkg/RedfishJsonStructureDxe.fdf.inc # --=20 2.17.1