From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (EUR05-AM6-obe.outbound.protection.outlook.com [40.107.22.46]) by mx.groups.io with SMTP id smtpd.web09.20742.1621265644173282775 for ; Mon, 17 May 2021 08:34:04 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=IP7CzGvo; spf=pass (domain: arm.com, ip: 40.107.22.46, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E28IzxnYiKgkt04QCImJwtW9OwclpaWhYNwDJh0Ni3g=; b=IP7CzGvo7607tUn/GfIx/k6t+BZqc3k1ngCRvUBRZzYZkIRlAWYX7ElptsH0wiNmeLEV8SrrIqUmkEelL/z+Uoteif6KmHyL373g10pODX/FFU7kt13vydCKSurQWVxPxgW38r2uoOMlAQteRraIU+AMv8N9LnMIMvMYiDVvUwk= Received: from DBBPR09CA0015.eurprd09.prod.outlook.com (2603:10a6:10:c0::27) by AS8PR08MB6629.eurprd08.prod.outlook.com (2603:10a6:20b:319::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.26; Mon, 17 May 2021 15:34:01 +0000 Received: from DB5EUR03FT029.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:c0:cafe::99) by DBBPR09CA0015.outlook.office365.com (2603:10a6:10:c0::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 17 May 2021 15:34:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT029.mail.protection.outlook.com (10.152.20.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Mon, 17 May 2021 15:34:01 +0000 Received: ("Tessian outbound 0f1e4509c199:v92"); Mon, 17 May 2021 15:34:01 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: bc67fbe78ff64165 X-CR-MTA-TID: 64aa7808 Received: from 2d5e9311c759.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5C392CC3-2E72-4E6A-BF7D-BE4A8BB21217.1; Mon, 17 May 2021 15:33:50 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2d5e9311c759.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 17 May 2021 15:33:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jFoP+pT9pEqxStJ3TnTjYzw+G3M/7u5PrVHTFfyHx/vcfJtXOGCDXI1293G7BFmjcG/YrCxZV0o+g3xI/PsnMA0YgIJEJrs4ijcUhZ27DBe7eGys/SndQy6f1MM74gqhgzpKuR9xxYVYUcuuUSHtZ1HikmpfYbGRmgTVfOYxQ0LtTCA5wED5F8GtzgNnKq21xKwsgHPPI8X3JNoLm/uged+65GpxTfn954vC8TZfgcMfteQ072tx01ksN0EOT57ytK0icENLLyXiHP9a4Z1rd+ntKjlsYGNwDmziC0wc+MwMfisNTQzlHDh7sgQwSR2Lg+HCI2WEWLGCh60jlx77pg== 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-SenderADCheck; bh=E28IzxnYiKgkt04QCImJwtW9OwclpaWhYNwDJh0Ni3g=; b=hGfqAmoXevV5leyrrax71onDNjHLxrCr3woC/7f1rYkEd+z47m8nHp9RWERcZ0hUALTIvJ94LuDuuPeY+APWxhOiTiXMGpEvjWJBHWHRfUHe51VCmWDLHIUGGXSmefpedb4ebqR6njy+AkI++C6qBrRslGRLDkvQf9abhafx5aHRMDuwUyJclmbYaG4T2SQ4kmRb4piGqENncg9aIOrthfBMNre94p7ewnJUEnRhDB3u/gDemwiynZzxJIzQfMPxzwr55y2SGrtCTm5WE3UpKMt8NdTejOWa416TR6dG08p+Cvkyavu2fj0eCKbnKFx2Y+qiC6WLUjK4WXyVqDQBDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E28IzxnYiKgkt04QCImJwtW9OwclpaWhYNwDJh0Ni3g=; b=IP7CzGvo7607tUn/GfIx/k6t+BZqc3k1ngCRvUBRZzYZkIRlAWYX7ElptsH0wiNmeLEV8SrrIqUmkEelL/z+Uoteif6KmHyL373g10pODX/FFU7kt13vydCKSurQWVxPxgW38r2uoOMlAQteRraIU+AMv8N9LnMIMvMYiDVvUwk= Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AS8PR08MB6008.eurprd08.prod.outlook.com (2603:10a6:20b:29d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.26; Mon, 17 May 2021 15:33:47 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688%7]) with mapi id 15.20.4129.031; Mon, 17 May 2021 15:33:47 +0000 Subject: Re: [edk2-platforms][PATCH V2 09/11] Platform/Sgi: Add SMBIOS Type17 Table To: Pranav Madhu , devel@edk2.groups.io Cc: Ard Biesheuvel , nd@arm.com References: <20210516092917.21124-1-pranav.madhu@arm.com> <20210516092917.21124-10-pranav.madhu@arm.com> From: "Sami Mujawar" Message-ID: Date: Mon, 17 May 2021 16:33:45 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20210516092917.21124-10-pranav.madhu@arm.com> X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LO2P123CA0102.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::17) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.1.196.43] (217.140.106.52) by LO2P123CA0102.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 17 May 2021 15:33:46 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c8911fa4-b5de-4986-e133-08d919493210 X-MS-TrafficTypeDiagnostic: AS8PR08MB6008:|AS8PR08MB6629: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:1148;OLM:1148; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: UJoBoHIjl2v93BNhAaCGXvVaL+ZSx7MFNruFOW/dD+WU6fbyj0jP6bQ28is9h+LucPBccKsH1GJmYWRPeNSNqKt1v+R4AAvp/JswTFRjFMbDOIJX6KxynJPIQNKHZUFpEYSlmhdD46vIaDk7mtO01ag3wcVKY09QCHitgGgkQ962L/58l5Y+AfoD3VLlqMxXrp8bt816uWL+0kYuPgYddfjZVWWsyys1OG22TgM/zI7jXGTGa/a6aEqm/9df+Dif/5Jr15EEldhm335TGBRDT+WB38syLAB9TwtjKx8sEcaFD9Uw/GF+ZGOxBVNKKruacNpkeOv821pcVUd30+ZJHWgC5WGlC1/DuQls0ytFZHXUxeK2oa7ZRK0fZfJ7KEpkxjNd6GQdq6WeldSWrZfnzLU2j4JQG1ohYTGXyUwqdwoboX+0rm+NcD+hI1jur7lpkWRZm2u7BnkaD/bhNRLMEP4matVp+P33QH4oMuXq3PmdrPa5qcUVU5czUB9nYlYvUyLLAl2x5Z+rXWq/uQZYhdkMW7LFghRGEcAlrQFqhubW6rJqnT/7OXARUfWzptWmy1xb2k51pvbpQOaXn2LQA5coak4xjThsiOD2TY+f5JD8EZTVnLdg64bK8+lho/yBt0Oiz86OJtwd4k5YJjrEeCtef94ZkIIaX/5ZEOAziQ6j+Wrc13ZPW+HsouuOgh+FGeaJZSP25NYvmG0QQdbI/g== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39850400004)(346002)(366004)(376002)(396003)(136003)(2906002)(5660300002)(38100700002)(38350700002)(19627235002)(30864003)(6486002)(16526019)(36756003)(83380400001)(66476007)(66556008)(31696002)(66946007)(52116002)(4326008)(316002)(16576012)(44832011)(956004)(2616005)(31686004)(8676002)(86362001)(186003)(53546011)(26005)(8936002)(478600001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?Q1AvMCsybUJqZzZyanV1OE05Yyszc2xQZHlvTExlK0ZKbHVvZGticGRsU0ly?= =?utf-8?B?MUxTWkJSdkxXMi9hVkFTUXVPZm8zb1pSU1lwWEs5NmhNQVVLUE1rVWRIdUky?= =?utf-8?B?QUJQVDN5SE1JTWhwWmJxeGx5YTlVcVJqY3E0Qm5rMnY4aXpRdFJyNDlucUNn?= =?utf-8?B?cFkrdkczeWN2Qm1XWlZFL1RxNVdYanFXVWxWc01pVkVOdCsyVk01RlMrRVdK?= =?utf-8?B?ZWVscEJlT3BzVVFCZi96MmxWcjRDbzNhNlBIalFNcjhQUFYrb09jbDJGZHc5?= =?utf-8?B?ZURndFBwZ3RJY2dOTlgrQmZKZXo0SUNURVNSMHFPd0JuZ2FhK1N3d29NMG9L?= =?utf-8?B?dzJHZlNKRExTVW9vS1dvYjRWQ2txM3oxR2tjTHJnLzRIYjdBM0RwWnZzV01h?= =?utf-8?B?K2ExVWcwK1YrcWJocEZONWpjZEFYZFVOeEVUT3ZHMkhmRUg2NWpPZ012a2Yw?= =?utf-8?B?MXhuZXhCU2hPWGpRbUZVT2xydTdFSTJsblQ3ZjlabGpEWE82YXE5c3EvYmIx?= =?utf-8?B?a3k1NVhUdmVCQkdCYkVHS0MzdTREb3F1SjlvS2xJbWI1TUlHMjZQb0VuTHBL?= =?utf-8?B?emFLYmVxKzVDVzFNbFhkTnRZR3Fxbm9ZbkN0bWdtbVRQS2p1d3RybnFvd2dX?= =?utf-8?B?c2lDci9NNlhjdStHYWxyZGRXanZoZDZmdXRCUk0rL1hQWkpmRGdienBiQ0N1?= =?utf-8?B?ei9NbUV6SmdGVnQ4aTNZSENnV0M1MnZ2RTR1SUdQaG1uaHBsbmw0RFA1cEVR?= =?utf-8?B?Y0Q4ZlhXdkVTcUthalZSK0N0UEtDZjJLVWI0cFBsdGpsdFZsdmZwclhuTXJT?= =?utf-8?B?WlBobkxKbSthcXN3NmNGeTVoSm13Q255cTdZckd4MEltRUQxRUNBdDRpQ2tN?= =?utf-8?B?bzBwSHJlQit0THhxbkVqZVJpWEZyRVVlaVRzVWNrMmNHNGRMeUp3YXowOFJi?= =?utf-8?B?eVhTL01VTVpTMFJRbm9EVjBtT1k2NU9RMzArWFJLRy9FQk9MUEZ6TllPUnpp?= =?utf-8?B?aVFmeTFrL3c2NnFHYjNjU0dHMzU1emJJNCtaczhKRXBkdkl6WkFsK3J2L2tu?= =?utf-8?B?VnBCbG1wV2N2dXVBVFNZbWNtRnFwMFRjRmZsTjJmSHhrNTAwZVA3NUtFS09L?= =?utf-8?B?eGNDb2QxUWxGTDVHTzNSaW9kd2VFTlVuUzB3UGRDL1d4YVRPUGsvQlBOV3FS?= =?utf-8?B?REx4WldodS9Fc0gwdTV6dUpjQ1JxcDdZR2tGRloyS1htZlJFR3NJUVpVZG5n?= =?utf-8?B?NHdpVUYva0dVMnRSejhJaGpRQmphTm9OOVB6aHhYTEN0NWdnN3FUUVRPNEhM?= =?utf-8?B?V2NWazI2QWxZQ0ZXdDJXLzd1cHV4N29LbkZ0NXkyditaVTgrbVJGSzRIUis1?= =?utf-8?B?SHVOY3RKNnQ4Ni9WcUdkTldCWDdkdW9rSUkvUnZxd2Z2SVg4bUlTaUoxQ0h2?= =?utf-8?B?cTR2OHl4U1l3eEhlSTVqdjZtUjlYK0dvaVNyZFpVa016N1BhWVlEZ282VUZx?= =?utf-8?B?aTBOT05OdDM0STV1Tk1QZ3k4Qkw0UzRHR3oyVHgyMkRyQ1JDdGthS0pBRkJK?= =?utf-8?B?c1U0U0NpYkdyckk3SEhWMzB3c1ZkckpSR0pEWmwwVUFrZEMzUGhCbnIzTytl?= =?utf-8?B?NE5BQ1NqdWc1LzR6eTBEZE9RZlhiYnZ3SkQ0eXhQc2xhOURhMnUzNU9YSEtw?= =?utf-8?B?UElkSVhlR2RCODdqU2d2OTJWV0xsYXF5RXpjdXJCZk1uUEQrYkd1WGN3NTIy?= =?utf-8?Q?wgpV2KrO2Ef2tDIDJMnzWPKn2vJDG4hnTuCzpzD?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6008 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT029.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 020b8947-fe3c-4d24-04c6-08d919492989 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KGc+hybwWiW0GFOVwG3gtEgnFJJrI35m8UMS/ulheuYjtwZtOpAflRPLtKWhBHGNLDSdR7wszN4yYWGjJNBF2FNqCeekDH7mNDY3mNdmrRu2pOmAmqrrQCBYmR8eWDDzas0o9QvQk626pETsp88O4F13pJBd8LrL4bCoOKjsFnfwwm1q1F5uaXX96jvfQsSwZd1t1KtS9aHD8RKmOLzLfeG6oM5rr4mBGZ+Quc+KLMp7cNHZYoWG0I3vRA0K7NstzAFShkAbjO9KIGPM5NXzdRcufPcLWdUiq0WM5Jeviuy0gQQXxxfINaNBK0dU7qEcovJK9CciqqCwWfdUvM4VtK71tFtmxeMbAmJcVFZ40KoJ5gska0LkSztiHsAu/xiZhLUdFGVVzYOIyoQFmO0naIvof6ypZHXbTF6B23K8j4K+4Jano9el97ro1YJRqRl6P/EeKJDkrDkOiE1RiZ80Tb9yAU0oS1BfXqVUjpKIZltidHq2nOpXsHsWklOUZGLkhdDmxkqAcwR4GO7nBJmpCoDAEOeB2h0AuPDYZ0KW8ZEBmvxljY1GGbo3V8tJ+vsIVR4uIluEokAITYwSplmr/+PSkk+QRf6kEOyMM6maocPlJsZo4W9ACKlowCqNEQTgSV49WxB2TTje8t1G8KBSREVB8F90KgrXaz6Pw2i/embHTQ124f7BNYbObpmfM5vp X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(136003)(396003)(39850400004)(376002)(346002)(36840700001)(46966006)(16576012)(36860700001)(53546011)(316002)(956004)(70586007)(86362001)(26005)(70206006)(8936002)(5660300002)(186003)(2906002)(81166007)(82740400003)(356005)(478600001)(4326008)(2616005)(31696002)(82310400003)(336012)(16526019)(83380400001)(44832011)(30864003)(36756003)(6486002)(8676002)(19627235002)(47076005)(31686004)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2021 15:34:01.2819 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c8911fa4-b5de-4986-e133-08d919493210 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT029.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6629 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Hi Pranav, Please find my comments inline marked [SAMI]. Some comments in previous patches apply here as well and are not mentioned. With those addressed. Reviewed-by: Sami Mujawar Regards, Sami Mujawar On 16/05/2021 10:29 AM, Pranav Madhu wrote: > Add the SMBIOS type 17 table (Memory Device) that includes the > specification of each installed memory device such as size of each > device, bank locator, memory device type, and other related information. > > Signed-off-by: Pranav Madhu > --- > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 1 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h | 14 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c | 1 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type17MemoryDevice.c | 288 ++++++++++++++++++++ > 4 files changed, 304 insertions(+) > > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > index ebd19c1882bb..9061c491d461 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > @@ -21,6 +21,7 @@ > Type4ProcessorInformation.c > Type7CacheInformation.c > Type16PhysicalMemoryArray.c > + Type17MemoryDevice.c > > [Packages] > ArmPkg/ArmPkg.dec > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > index e195fdea35af..5413982e233b 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > @@ -47,6 +47,12 @@ InstallPhysicalMemoryArray ( > IN EFI_SMBIOS_PROTOCOL *Smbios > ); > > +EFI_STATUS > +EFIAPI > +InstallMemoryDevice ( > + IN EFI_SMBIOS_PROTOCOL *Smbios > + ); > + > enum SMBIOS_REFRENCE_HANDLES { > SMBIOS_HANDLE_ENCLOSURE = 0x1000, > SMBIOS_HANDLE_CLUSTER1, > @@ -56,6 +62,14 @@ enum SMBIOS_REFRENCE_HANDLES { > SMBIOS_HANDLE_L3_CACHE, > SMBIOS_HANDLE_L4_CACHE, > SMBIOS_HANDLE_PHYSICAL_MEMORY, > + SMBIOS_HANDLE_MEMORY_DEVICE0000, // Chip 0 Bank 0 > + SMBIOS_HANDLE_MEMORY_DEVICE0001, // Chip 0 Bank 1 > + SMBIOS_HANDLE_MEMORY_DEVICE0100, // Chip 1 Bank 0 > + SMBIOS_HANDLE_MEMORY_DEVICE0101, // Chip 1 Bank 1 > + SMBIOS_HANDLE_MEMORY_DEVICE0200, // Chip 2 Bank 0 > + SMBIOS_HANDLE_MEMORY_DEVICE0201, // Chip 2 Bank 1 > + SMBIOS_HANDLE_MEMORY_DEVICE0300, // Chip 3 Bank 0 > + SMBIOS_HANDLE_MEMORY_DEVICE0301, // Chip 3 Bank 1 > }; > > #endif // SMBIOS_PLATFORM_DXE_H_ > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > index 48073ad0ad27..223bf1d114e4 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > @@ -32,6 +32,7 @@ ARM_RD_SMBIOS_TABLE_INSTALL_FPTR mSmbiosTableList[] = { > &InstallProcessorInformation, > &InstallCacheInformation, > &InstallPhysicalMemoryArray, > + &InstallMemoryDevice, > }; > > /** > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type17MemoryDevice.c b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type17MemoryDevice.c > new file mode 100644 > index 000000000000..fc7422f432a6 > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type17MemoryDevice.c > @@ -0,0 +1,288 @@ > +/** @file > + SMBIOS Type 17 (Memory Device) table for ARM RD platforms. > + > + This file installs SMBIOS Type 17 (Memory Device) table for Arm's Reference > + Design platforms. It includes the specification of each installed memory > + device such as size of each device, bank locator, memory device type, and > + other related information. > + > + Copyright (c) 2021, ARM Limited. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > + @par Specification Reference: > + - SMBIOS Reference Specification 3.4.0, Chapter 7.18 > +**/ > + > +#include > +#include > +#include > + > +#include "SmbiosPlatformDxe.h" > + > +#define MAX_CHIP_COUNT 4 > +#define BANK0_BASE 1 > +#define BANK1_BASE (BANK0_BASE + MAX_CHIP_COUNT) > +#define TYPE17_STRINGS \ > + "Chip 0 Bank 0\0" \ > + "Chip 1 Bank 0\0" \ > + "Chip 2 Bank 0\0" \ > + "Chip 3 Bank 0\0" \ > + "Chip 0 Bank 1\0" \ > + "Chip 1 Bank 1\0" \ > + "Chip 2 Bank 1\0" \ > + "Chip 3 Bank 1\0" > + > +/* SMBIOS Type17 structure */ > +#pragma pack(1) > +struct ArmRdSmbiosType17 { > + SMBIOS_TABLE_TYPE17 Base; > + UINT8 Strings[sizeof (TYPE17_STRINGS)]; > +}; > +#pragma pack() > + > +/* Memory Device */ > +static struct ArmRdSmbiosType17 mArmRdSmbiosType17[] = { > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0000 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK0_BASE, // Chip 0 Bank 0 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0001 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK1_BASE, // Chip 0 Bank 1 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0100 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK0_BASE + 1, // Chip 1 Bank 0 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0101 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK1_BASE + 1, // Chip 1 Bank 1 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0200 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK0_BASE + 2, // Chip 2 Bank 0 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0201 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK1_BASE + 2, // Chip 2 Bank 1 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0300 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK0_BASE + 3, // Chip 3 Bank 0 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > + { > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_MEMORY_DEVICE, // Type 17 > + sizeof (SMBIOS_TABLE_TYPE17), // Length > + SMBIOS_HANDLE_MEMORY_DEVICE0301 > + }, > + SMBIOS_HANDLE_PHYSICAL_MEMORY, // Physical memory array handle > + 0xFFFE, // Memory error info handle > + 0xFFFF, // Total width unknown > + 0xFFFF, // Data width unknown > + 0, // Size, Update dynamically > + MemoryFormFactorOther, // Form Factor > + 0, // Device set, not part of a set > + 0, // Device locator > + BANK1_BASE + 3, // Chip 3 Bank 1 > + MemoryTypeDram, // Memory type > + {0, 1}, // Type details others > + }, > + // Text strings (unformatted area) > + TYPE17_STRINGS > + }, > +}; > + > +/** > + Install SMBIOS memory device Table. > + > + Install the SMBIOS memory device (type 17) table for RD platforms. > + > + @param[in] Smbios SMBIOS protocol. > + > + @retval EFI_SUCCESS Record was added. > + @retval EFI_OUT_OF_RESOURCES Record was not added. > + @retval EFI_ALREADY_STARTED The SmbiosHandle passed in is already in use. > +**/ > +EFI_STATUS > +InstallMemoryDevice ( > + IN EFI_SMBIOS_PROTOCOL *Smbios > + ) > +{ > + EFI_STATUS Status; > + EFI_SMBIOS_HANDLE SmbiosHandle; > + UINT8 Idx; > + > + /* Get system memory information */ > + for (Idx = 0; Idx < (FixedPcdGet32 (PcdChipCount) * 2); Idx += 2) { > + mArmRdSmbiosType17[Idx].Base.Size = > + (PcdGet64 (PcdSystemMemorySize) + SIZE_16MB) / SIZE_1MB; [SAMI] Can you check if this field is encoded correctly, please? The specification states the following: 'Size of the memory device If the value is 0, no memory device is installed in the socket; if the size is unknown, the field value is FFFFh. If the size is 32 GB-1 MB or greater, the field value is 7FFFh and the actual size is stored in the Extended Size field. The granularity in which the value is specified depends on the setting of the most-significant bit (bit 15). If the bit is 0, the value is specified in megabyte units; if the bit is 1, the value is specified in kilobyte units. For example, the value 8100h identifies a 256 KB memory device and 0100h identifies a 256 MB memory device.' For SgiPlatforms maybe you will never hit this situation. However, the code in its current state will silently produce incorrect result, which I think would be misleading should somone use this as reference. [/SAMI] > + mArmRdSmbiosType17[Idx].Base.MemoryTechnology = MemoryTechnologyDram; > + mArmRdSmbiosType17[Idx].Base.MemoryOperatingModeCapability.Bits.VolatileMemory = 1; > + > + if (PcdGet64 (PcdDramBlock2Size) != 0) { > + mArmRdSmbiosType17[Idx + 1].Base.Size = > + PcdGet64 (PcdDramBlock2Size) / SIZE_1MB; > + mArmRdSmbiosType17[Idx + 1].Base.MemoryTechnology = MemoryTechnologyDram; > + mArmRdSmbiosType17[Idx + 1].Base.MemoryOperatingModeCapability.Bits.VolatileMemory = 1; > + } > + } > + > + /* Install valid entries */ > + for (Idx = 0; Idx < ARRAY_SIZE (mArmRdSmbiosType17); Idx++) { > + if (mArmRdSmbiosType17[Idx].Base.Size != 0) { > + SmbiosHandle = > + ((EFI_SMBIOS_TABLE_HEADER *)&mArmRdSmbiosType17[Idx])->Handle; > + Status = Smbios->Add ( > + Smbios, > + NULL, > + &SmbiosHandle, > + (EFI_SMBIOS_TABLE_HEADER *)&mArmRdSmbiosType17[Idx] > + ); > + if (Status != EFI_SUCCESS) { > + DEBUG (( > + DEBUG_ERROR, > + "SMBIOS: Failed to install Type17 SMBIOS table.\n" > + )); > + break; > + } > + } > + } > + > + return Status; > +}