From nobody Fri May 3 17:54:17 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 149915664474289.03972687256862; Tue, 4 Jul 2017 01:24:04 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id AAB8E2095A6AF; Tue, 4 Jul 2017 01:22:24 -0700 (PDT) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E728C21CF3B6A for ; Tue, 4 Jul 2017 01:22:22 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jul 2017 01:24:00 -0700 Received: from shwdeopenpsi011.ccr.corp.intel.com (HELO SHWDEOPENPSI011.local) ([10.239.9.5]) by fmsmga005.fm.intel.com with SMTP; 04 Jul 2017 01:23:59 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,307,1496127600"; d="scan'208";a="122069462" Date: Tue, 4 Jul 2017 16:24:00 +0800 From: lushifex To: edk2-devel@lists.01.org Message-ID: <273c1371-5111-4204-aa90-dfe149e1abb3@SHWDEOPENPSI011.local> X-Mailer: TortoiseGit MIME-Version: 1.0 Subject: [edk2] [Patch][edk2-platforms] Vlv2TbltDevicePkg: Add SMBIOS Type 19. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: , david.wei@intel.com Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: lushifex Reviewed-by: zwei4 --- .../SmBiosMiscDxe/MiscMemoryArrayMappedAddress.uni | Bin 0 -> 1318 bytes .../MiscMemoryArrayMappedAddressData.c | 29 ++++ .../MiscMemoryArrayMappedAddressFunction.c | 146 +++++++++++++++++= ++++ .../SmBiosMiscDxe/MiscSubclassDriverDataTable.c | 4 +- Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf | 5 +- 5 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAd= dress.uni create mode 100644 Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAd= dressData.c create mode 100644 Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAd= dressFunction.c diff --git a/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddress.u= ni b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddress.uni new file mode 100644 index 0000000000000000000000000000000000000000..27d298a2d858de029b581553f06= 9002872d0e8ea GIT binary patch literal 1318 zcmZvcU2oG+42FG;#D6#{H-NSlb~AwxqNN2Q*iyBb2AAo_x=3D8()k}}wzhdr;;G-*Lm zj(u#O*YB~N{Qc9hjs@PAJi$KLjb*m9xjnTfSmhhqtvy(QeQGJbU>EpTwy_+0ur4yk zBmDw-$1}H?duGU-UBT1FGA5#Dk;Q1iwwzIHu-Enmf0eV6!9J4Zj;NgM3wUgaeGZQo z$TNGzxihrW{qEdO&?8$DId`r?$idK>V$IOj&ZUcAx2drU--+!U>pkm?$agRv+57*n zOJI}{9l+1QU3iWa`;;82z?KNzFNO1zh!v6YJ#cPKe83`B%9o)nL91_{V%6y-zA4(; znF+VT*Xh|V!#%osm)e9?=3DYBd1Vb@H`Tq|c?p@^CIX8Zc+P8(*SKG&mTefHlDxYS&K zc`c@_|K2u(jSy9hvR=3Dwnu-C08@ND))RTcXi>}7|<`8P4goDS2bA*`43)Dj-JN zMqM>WTRQR9CtMR&)>iSkSGvvZbNbUcs(pcF0`nO&cbL5m$}Mj_#i5Zgu`f1&*^o(! z?K5kaFF}(!X6?I7utv<n3k9AFRFN`$%(5nsoEh_NHbX!;hlwvfUVdJEa} zy>=3D%JPS^N_8hgfI*F=3Dq+*(LS}RAI!PeZ)@OWmC?CSj8x78TE-+W&eTvibu@#Ee>{B z%3BQV`yQu8kEq3v$x_aKqk{Ex>F?BW?y~89M*TIv3!i^Ys(N_JU4+{LNj~+cpf4>y P6Yw-2;WYQhdX?)D9Tmic literal 0 HcmV?d00001 diff --git a/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressDa= ta.c b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressData.c new file mode 100644 index 0000000..f71b548 --- /dev/null +++ b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressData.c @@ -0,0 +1,29 @@ +/** @file + Static data of Physical Memory Array Mapped Address. SMBIOS Type 19. + + Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "CommonHeader.h" +#include "MiscSubclassDriver.h" + +// +// Static (possibly build generated) Physical Memory Array Mapped Address = Data. +// +MISC_SMBIOS_TABLE_DATA(EFI_MEMORY_ARRAY_START_ADDRESS_DATA, MiscMemoryArra= yMappedAddress) =3D +{ + 0, //< StartingAd= dress + 0, //< EndingAddr= ess + 0, //< MemoryArra= yHandle + 0x00 //< Partition = Width +}; + diff --git a/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressFu= nction.c b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressFunc= tion.c new file mode 100644 index 0000000..27d0ab7 --- /dev/null +++ b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscMemoryArrayMappedAddressFunction.c @@ -0,0 +1,146 @@ +/** @file + Dynamic data of Physical Memory Array Mapped Address. SMBIOS Type 19. + + Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "CommonHeader.h" +#include "MiscSubclassDriver.h" +#include +#include +#include + +#define MAX_SOCKETS 2 +#define SMBIOS_TYPE19_USE_EXTENDED_ADDRESSES 0xFFFFFFFF + + +VOID +GetType16Handle ( + IN EFI_SMBIOS_PROTOCOL *Smbios, + OUT EFI_SMBIOS_HANDLE *Handle + ) +{ + EFI_STATUS Status; + EFI_SMBIOS_TYPE RecordType; + EFI_SMBIOS_TABLE_HEADER *Buffer; + + *Handle =3D 0; + RecordType =3D EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY; + + Status =3D Smbios->GetNext ( + Smbios, + Handle, + &RecordType, + &Buffer, + NULL + ); + if (!EFI_ERROR (Status)) { + return; + } + + *Handle =3D 0xFFFF; +} + + +/** + This function installs SMBIOS Type 19 Table(Physical Memory Array). + + @param RecordData Pointer to copy of RecordData from th= e Data Table. + + @retval EFI_SUCCESS All parameters were valid. + @retval EFI_UNSUPPORTED Unexpected RecordType value. + @retval EFI_INVALID_PARAMETER Invalid parameter was found. + +**/ +MISC_SMBIOS_TABLE_FUNCTION (MiscMemoryArrayMappedAddress) +{ + EFI_STATUS Status; + UINT64 TotalMemorySizeInKB; + UINT8 Dimm; + EFI_SMBIOS_HANDLE SmbiosHandle; + EFI_MEMORY_ARRAY_START_ADDRESS_DATA *ForType19InputData; + SMBIOS_TABLE_TYPE19 *SmbiosRecord; + MEM_INFO_PROTOCOL *MemInfoHob; + UINT16 Type16Handle =3D 0; + + TotalMemorySizeInKB =3D 0; + + // + // First check for invalid parameters. + // + if (RecordData =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + ForType19InputData =3D (EFI_MEMORY_ARRAY_START_ADDRESS_DATA *)Rec= ordData; + + // + // Two zeros following the last string. + // + SmbiosRecord =3D AllocatePool (sizeof (SMBIOS_TABLE_TYPE19) + 1); + ZeroMem (SmbiosRecord, sizeof (SMBIOS_TABLE_TYPE19) + 1); + + SmbiosRecord->Hdr.Type =3D EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS; + SmbiosRecord->Hdr.Length =3D sizeof (SMBIOS_TABLE_TYPE19); + + // + // Make handle chosen by smbios protocol.add automatically. + // + SmbiosRecord->Hdr.Handle =3D 0; + + // + // Get Memory size parameters for each rank from the chipset registers + // + Status =3D gBS->LocateProtocol ( + &gMemInfoProtocolGuid, + NULL, + (void **) &MemInfoHob + ); + ASSERT_EFI_ERROR (Status); + + // + // Calculate the TotalMemorySizeInKB by adding the size of all populated= sockets + // + for (Dimm =3D 0; Dimm < MAX_SOCKETS; Dimm++) { + TotalMemorySizeInKB +=3D LShiftU64 (MemInfoHob->MemInfoData.dimmSize[D= imm], 10); + } + + if (TotalMemorySizeInKB > SMBIOS_TYPE19_USE_EXTENDED_ADDRESSES) { + SmbiosRecord->StartingAddress =3D SMBIOS_TYPE19_USE_EXTENDED_ADDRESSES; + SmbiosRecord->EndingAddress =3D SMBIOS_TYPE19_USE_EXTENDED_ADDRESSES; + SmbiosRecord->ExtendedEndingAddress =3D TotalMemorySizeInKB - 1; + } else { + SmbiosRecord->EndingAddress =3D (UINT32) (TotalMemorySizeInKB - 1); + } + + // + // Memory Array Handle will be the 3rd optional string following the for= matted structure. + // + GetType16Handle(Smbios, &Type16Handle); + SmbiosRecord->MemoryArrayHandle =3D Type16Handle; + SmbiosRecord->PartitionWidth =3D MAX_SOCKETS; + + // + // Now we have got the full smbios record, call smbios protocol to add t= his record. + // Generate Memory Array Mapped Address info (Type 19) + // + SmbiosHandle =3D SMBIOS_HANDLE_PI_RESERVED; + Status =3D Smbios-> Add ( + Smbios, + NULL, + &SmbiosHandle, + (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord + ); + FreePool (SmbiosRecord); + + return Status; +} + diff --git a/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscSubclassDriverDataTable.c = b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscSubclassDriverDataTable.c index 3b77a75..36c31c0 100644 --- a/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscSubclassDriverDataTable.c +++ b/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscSubclassDriverDataTable.c @@ -1,6 +1,6 @@ /** @file =20 -Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.
= =20 This program and the accompanying materials are licensed and made availa= ble under the terms and conditions of the BSD License that accompanies this distri= bution. =20 @@ -39,6 +39,7 @@ MISC_SMBIOS_TABLE_EXTERNS(EFI_MISC_CHASSIS_MANUFACTURER_D= ATA, MiscChassisManufac MISC_SMBIOS_TABLE_EXTERNS(EFI_CACHE_VARIABLE_RECORD, MiscProcessorCache, M= iscProcessorCache); //type 7 MISC_SMBIOS_TABLE_EXTERNS(EFI_CPU_DATA_RECORD, MiscProcessorInformation, M= iscProcessorInformation); //type 4 MISC_SMBIOS_TABLE_EXTERNS(EFI_MEMORY_ARRAY_LOCATION_DATA, MiscPhysicalMemo= ryArray,MiscPhysicalMemoryArray); +MISC_SMBIOS_TABLE_EXTERNS(EFI_MEMORY_ARRAY_START_ADDRESS_DATA, MiscMemoryA= rrayMappedAddress, MiscMemoryArrayMappedAddress); //type 19 MISC_SMBIOS_TABLE_EXTERNS(EFI_MEMORY_ARRAY_LINK_DATA, MiscMemoryDevice, Mi= scMemoryDevice); =20 MISC_SMBIOS_TABLE_EXTERNS(EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA= , MiscPortIde1, MiscPortInternalConnectorDesignator); @@ -72,6 +73,7 @@ EFI_MISC_SMBIOS_DATA_TABLE mMiscSubclassDataTable[] =3D { MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscProcessorInformation, Misc= ProcessorInformation), //type 4 MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscPhysicalMemoryArray, MiscP= hysicalMemoryArray), //Type 16 MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscMemoryDevice, MiscMemoryDe= vice), //Type 17 + MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscMemoryArrayMappedAddress, = MiscMemoryArrayMappedAddress), //Type 19 MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscPortIde1, MiscPortInternal= ConnectorDesignator), MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscPortIde2, MiscPortInternal= ConnectorDesignator), MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(MiscPortAtxPower, MiscPortInte= rnalConnectorDesignator), diff --git a/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf b/Vlv2TbltDe= vicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf index f88dcbe..b17e5b7 100644 --- a/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf +++ b/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf @@ -2,7 +2,7 @@ # Component name for module MiscSubclass # # FIX ME! -# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
# # This program and the accompanying materials are licensed and made availa= ble under # the terms and conditions of the BSD License that accompanies this distri= bution. @@ -88,6 +88,9 @@ MiscMemoryDevice.uni MiscMemoryDeviceData.c MiscMemoryDeviceFunction.c + MiscMemoryArrayMappedAddress.uni + MiscMemoryArrayMappedAddressData.c + MiscMemoryArrayMappedAddressFunction.c =20 [Packages] MdeModulePkg/MdeModulePkg.dec --=20 2.7.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel