From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (EUR01-DB5-obe.outbound.protection.outlook.com [40.107.15.71]) by mx.groups.io with SMTP id smtpd.web09.20737.1621265633171397022 for ; Mon, 17 May 2021 08:33:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=hyREd0sB; spf=pass (domain: arm.com, ip: 40.107.15.71, 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=pWw8E0iOuRFNiYG82EOtWIYpmoyeJO/K8BwE2klaaOc=; b=hyREd0sB9h2Sb7vSMSN3P7eSNHtfJ2ewkGvnS6fdEpmr5k69AvXrZLadAPb83SLys2Caxi+33WfnLDlAcvB745zVbP8tlp7LP3UptV43NAAGoYM+NZjk7sYn6JpA/Y5blmP+UJp2RvFsoTW7t7uHXd/sBLDusuLA6ZDIviOZV9E= Received: from AM5PR0701CA0002.eurprd07.prod.outlook.com (2603:10a6:203:51::12) by HE1PR0802MB2153.eurprd08.prod.outlook.com (2603:10a6:3:c2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Mon, 17 May 2021 15:33:50 +0000 Received: from VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:51:cafe::67) by AM5PR0701CA0002.outlook.office365.com (2603:10a6:203:51::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.11 via Frontend Transport; Mon, 17 May 2021 15:33:49 +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 VE1EUR03FT043.mail.protection.outlook.com (10.152.19.122) 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:33:49 +0000 Received: ("Tessian outbound 2cd7db0b285f:v92"); Mon, 17 May 2021 15:33:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: df91480deae542a9 X-CR-MTA-TID: 64aa7808 Received: from 2452f3faa9e6.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FDB50A29-4B7D-4968-87FE-24F7B86E3D4B.1; Mon, 17 May 2021 15:33:38 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2452f3faa9e6.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 17 May 2021 15:33:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I+tH8R9JLb+uRfZhCajxnQ6TVvalEHMdlkVi7GuHPZI98cD85dzxiKMrm66bTBxTQm/s9rBkt+IR1vQPviwIfXcpn83P4UC7Lo69k4MPXVzU9if1YThfPRh4PPyrRBAU0R6ZgTKjjJt/wX6X+7uAJIe1+h2ny2voUBjO03AuXSSDxO7aamx6EuNu0ZDlrjuAeS2TW8MYV8AtOkJkpqoTHcj8g4Rl8/DgGw3Vfx+hIxgjoA6n0HK7sTHE9NmfU3NweG8gNN3jjQ7QADuIK2+rtffvQpcbpvHwFKFq15zqOzILzqcLz76Cv2gH6Y6cm/jM8EaOiws9ZExglPn9Bhk+MQ== 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=pWw8E0iOuRFNiYG82EOtWIYpmoyeJO/K8BwE2klaaOc=; b=dWL8iHblftNOgZw26pLVYrwRUWLaikKhq6W7VfzgntGZNy+6GBrjovGv7MF1jxwQKOJEbrMFG55PQUIl1yiKgJndK+V7ZVxY6Nd5L3A3+0AzXO5ugyj+WD5qW+3NwsM77I+4yTq/HSgC8CDz4Z5W/rXcwL5qjh0YjphTX+uq2lduz93s9KEarwQ7tYIyEfojXu/lOT2+yUAWzIXe7Lnmw5EkDcShSYkpzJxtT4UwkJlNXGcmwh2bBQ4a9e2t3l1K8iZyKpcRBTqjDd4fFKfmPgKRXjfnaWCEiYwL0L5Ynrlih6ODO3quwx79N3mnbXZgkAg62qYxLumxXjdOkgnUZw== 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=pWw8E0iOuRFNiYG82EOtWIYpmoyeJO/K8BwE2klaaOc=; b=hyREd0sB9h2Sb7vSMSN3P7eSNHtfJ2ewkGvnS6fdEpmr5k69AvXrZLadAPb83SLys2Caxi+33WfnLDlAcvB745zVbP8tlp7LP3UptV43NAAGoYM+NZjk7sYn6JpA/Y5blmP+UJp2RvFsoTW7t7uHXd/sBLDusuLA6ZDIviOZV9E= 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 AM6PR08MB4343.eurprd08.prod.outlook.com (2603:10a6:20b:ba::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Mon, 17 May 2021 15:33:35 +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:35 +0000 Subject: Re: [edk2-platforms][PATCH V2 07/11] Platform/Sgi: Add SMBIOS Type7 Table To: Pranav Madhu , devel@edk2.groups.io Cc: Ard Biesheuvel , nd@arm.com References: <20210516092917.21124-1-pranav.madhu@arm.com> <20210516092917.21124-8-pranav.madhu@arm.com> From: "Sami Mujawar" Message-ID: Date: Mon, 17 May 2021 16:33:34 +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-8-pranav.madhu@arm.com> X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LO4P123CA0387.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::14) 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 LO4P123CA0387.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::14) 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:33:35 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2e9acf04-f56f-40ab-3535-08d919492b1e X-MS-TrafficTypeDiagnostic: AM6PR08MB4343:|HE1PR0802MB2153: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:2582;OLM:2582; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: CnAtanKABtCKAm8eZlgLOxoV1wV4gC8ZPmifkjHEtVMNWi58jKTAcpn04jNCcrR89FX10+pkJrbh8c2m8HIgcpEUQ6YMDCj7D3WwdUCI8EFHqhl7jFuKV8aDXgBVXXKZCI4gqYmsIOZ3feTKz//qgxfaZIJxdnvBBjsitqkFxH/LXarFuf0JtmyfR4QNaqMzDm4WiDsM4p4ctUh6rcJB11uiSOmVFhiZ7b29I+Vt+rT4eqeQzeKbtCwPxExuZC9g/UMLHVvow7P8Bqjz/LLrphT+9iP8cZcK6AwjglIwWT4jqa98mASbD4PBlzwdZXHNVZ/icV+uP+Wl6axfZy1XrTFckJchzeuDY/xBP8iB6FF7h35bsl/4YwkBJgcQw6xDkB8G+XxqF9JdHkYC0FcfK9nH8pkymKB7bCA4W2e+0YOzln3w7IeEKxwxrKrICHmimXGslFw1HQIuZz6H5Y3cWespnzrinTQaLsbIItciDNUO9N5SCO37LEPoEHxFNPtGktriMTTmb0P4kchlLqW876QT91uI+/rtnu151YOrSK32+/J1xtWdTckozJtRBJLy2aFB83tghs5vRz4RIPzD8ywnuOZeXjzJaSVqR1/iiRuwjIcEw9uUfccMG/vdmH59iSMi0rLBVyLNqkYtlHz5L/M2CCj0NgIyrJS19CTFN96Uy6iKXuxX4iU/Q8KoDQvQ9AIf1u0NfSxetS89zuvV18YIPROPP0bELczOKeLpReM= 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)(376002)(136003)(366004)(346002)(39850400004)(396003)(186003)(19627235002)(16526019)(36756003)(316002)(83380400001)(52116002)(26005)(38100700002)(38350700002)(6486002)(16576012)(44832011)(66556008)(30864003)(2906002)(53546011)(31696002)(4326008)(86362001)(8936002)(8676002)(956004)(2616005)(5660300002)(66946007)(66476007)(31686004)(478600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?cTBUTm0ra0pEaC9lYW5VS1QvQjI2SzlKdkdVTmc4Yy9JUWtBelM4NUMxUEs3?= =?utf-8?B?OVM5cTFsN2c3bFAxWUQzOTlXaFZLcm1iMWs0T2sxRVN5ekI3bkJwcGljbmRJ?= =?utf-8?B?V2NSc3JwazYwbDBFYklkTXRzSmJqVWpiRkhMY0RlNG4rdkRpSHJoVHRaUmVJ?= =?utf-8?B?bHcrTWZjWnZiMmpEdW9Rb1ZtS3NSNXEydE1PdisxbzRybjFONTFrY3pvUzdl?= =?utf-8?B?VlhNVGhSYjJ5bm9VeC9lVVltSjJrWTNYdUFnTFRqRExzRjlRT0NWUDQyWFhZ?= =?utf-8?B?OUN1enloKzhqVzJ0M1h0eEFCRFMwUWo1dHhPRDc1ZEU4NFlOZThDQjN6VnpN?= =?utf-8?B?VWxLeTk5UWJrWTh2ZUlFQkdHTkc1UEQ5N00vOUFWdXROTWlNRnBHaXQ3Mmdj?= =?utf-8?B?eEJ1WExZVWdIVUN2SFU2OTMvOUh4SmFJbEpmSU9wVmxoa2NyVkUwQ1cwbFIz?= =?utf-8?B?QWxLeDdKY05Od0ZHYmVBWWo0V0RTanY1OTE4blcxdENJdWg1UTNtT2NkbCtx?= =?utf-8?B?OTJPOXdYRTJXdDUxaUFOME95N2Uwamt6dGhaaC9uRHA5OW0zRG04TmpJcE9R?= =?utf-8?B?Z0FOSWdrU2Jubyt3T3NHc01hdEY2cTBmOWZSTy91aE9GT0hjY1FyOE1QKzZp?= =?utf-8?B?aVVvVndNMUdwQWIwMmt5a2pvNW1CVmlHd21tcnlLNUtYWlNOSnRZYmY1bkNY?= =?utf-8?B?OTRtOUhycldzUWhyWUFSVUxmY2dPMXVDcmJDWHpwbUNQVjJZKzNuamJDSkp1?= =?utf-8?B?NnlmSHhDYkFwOFBuUytMMVZqWmhWTnlnMjl6bmlaUHZIRlhrWFFNTHF6RDJG?= =?utf-8?B?b0Ntei9obkt6c3ZmanU5ekNURzk2TmdXOG5aQTR0aGMwTlozS0ZsazIvSFNw?= =?utf-8?B?bGxNV0R0M1cxN3pEeVZ5aTZDY0tOVXAzMUtaK0pnRHEyS3VvRHZLOTZucEYw?= =?utf-8?B?MnFONFFvYkYzL05ucUVEWWhOZXlrL3lrUitISTNIV1NwR1REZFlxMVFob29n?= =?utf-8?B?REFDTnpVL0RyUnhRRUoxeDIxRDh2ejRTWXJlcmh1UVFIWDF0dFJKVG1xampx?= =?utf-8?B?S0h4Q3QrSEhxL1F5VFVwVjRXNDU5amVvYzVMVnNJLzZ0M3dodGVtQm0wYjRl?= =?utf-8?B?MGhxYzRXMkxVaGFKeDBuNXBhd1ZsWWNKaWdjNHlPVEcwUmluTHdFUWlDSVJM?= =?utf-8?B?eno1ZzUvYW5FRThiRlF6a09RK3FnajZ3Vk1QemxuTTFMK2NWS0twTzZVL0lS?= =?utf-8?B?cmdCTGJqNDY2NkdXZUcvUUFlN0VDc2RWVUVYdnpaRExEVnlaSDJPTnQ5aUNx?= =?utf-8?B?T1lUNGdrdWU1TDRLVFJNWUpCMUVOOWRaOTVIU3YxTGE4cG5lOVdDQnZHSFVL?= =?utf-8?B?eGloQWNlYnpzdGU1djNuWDM5VU5lTGYyUWFzSjJZNTFDWkI5VmVsUlVzM1pV?= =?utf-8?B?TGpiVWYrQ0pYQkxlY3AyN3JacksyaFB2WjQyZUdrWmhiTXMyek1JS2l6Ri9s?= =?utf-8?B?VzdGVUFXUXRrSmhzc3JFcjcwRkczQ1VEaTNiWTUzV2x0NUgydFdNNTN4RThr?= =?utf-8?B?OEFhekhVYkRqRUhyb1dNSEdhbGlVcHhIMzB2TXZFU0VmWHJjZGQvSThNdzRC?= =?utf-8?B?bXRWNkovTUFkSmh1cmEvTlVlSWM0RlhsWDh2a2E4Q2RiV2p4MDNsbkRBSzZO?= =?utf-8?B?M3FZaUNGbVcxZGQ5bXlJazE1ZExWUnVZNUk4d0ZzM0xyNWFwamtkS2VtOHNF?= =?utf-8?Q?nB59iuRKvPTcd3OSR0dQmLwgY865F+0lPdRjESN?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4343 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: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: a1eeca73-2257-4add-1bcf-08d919492278 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: saeuBtqmKO0OQrhkdCGrjXt5x/fQJBYyGxhpyLixZs+66WoWR6/1gr9G62jWlquhbzvi2R7UPQwOlRpb4oyz9EvFG/tc4PcIZps4DDzcuvJbHPhiynyNRGW/WWch8BQqdJsxpVSJPW792r76YcPeI4QffvTFGuvVQE0Bw2ghBqcvuv7iKglR7RuciXTiinjMaSOsiVIGlC8GMptQSvcTlrZPWnW+XaO/ZQQBbcxlWPPB2BpoxfXWE9AT+bIgbVs08ADJUUyrecTfjNR5fPwxphRNylXB5XPwhMTTAMs5UMXsDXkGP8M4wp5GDh21fgznUpe/Rv1iOuwbq/QIg/juJmRShidJ/wP1lBpgq/zXtX0GcxJqDfK2SUr4wpW2318qmFaCIvY9Yl0GD3lC8Yy8vhusJtKKfprfAxF+qDgbtnq6qulMsfRVFJ982OUZjUJd6nAFqmSV+kXglAKCzJ13MS2bSP1u99twDby1dNzxCC8GO/JRgXrJ5dak/+orS4Vjco0Q52Yn9a43ya/BSc7DYn2YtaJPnUfLaHumniKmm0hG4u6wIP5v3y4rBx8dlVuYXs3m3ZyqH7C7Nu7PkHyOo5K0F/k5BGvhAc46TGtX4bU05JR9T2K2p3+yjphb+xMg8v5fitNE7bie2q74IO9m7v6PExV2CNeDD4CKI0WZWYFrHRuai/YEcKEg59s4JJN4 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)(39850400004)(396003)(136003)(376002)(346002)(46966006)(36840700001)(316002)(8676002)(186003)(8936002)(2616005)(956004)(16526019)(5660300002)(2906002)(6486002)(36756003)(26005)(30864003)(356005)(336012)(82740400003)(86362001)(47076005)(70586007)(31686004)(36860700001)(31696002)(16576012)(82310400003)(53546011)(70206006)(19627235002)(81166007)(44832011)(4326008)(478600001)(83380400001)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2021 15:33:49.4633 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2e9acf04-f56f-40ab-3535-08d919492b1e 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: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2153 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Hi Pranav, 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 7 table (Cache Information) that includes > information about cache levels implemented, cache configuration, ways of > associativity and other information related to cache memory installed. > > Signed-off-by: Pranav Madhu > --- > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 1 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h | 6 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c | 1 + > Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type7CacheInformation.c | 334 ++++++++++++++++++++ > 4 files changed, 342 insertions(+) > > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > index 4652a9c62b88..ee00b773912b 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.inf > @@ -19,6 +19,7 @@ > Type1SystemInformation.c > Type3SystemEnclosure.c > Type4ProcessorInformation.c > + Type7CacheInformation.c > > [Packages] > ArmPkg/ArmPkg.dec > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > index 8a9be0cfc4c8..6f3ad29f0797 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.h > @@ -35,6 +35,12 @@ InstallProcessorInformation ( > IN EFI_SMBIOS_PROTOCOL *Smbios > ); > > +EFI_STATUS > +EFIAPI > +InstallCacheInformation ( > + IN EFI_SMBIOS_PROTOCOL *Smbios > + ); > + > enum SMBIOS_REFRENCE_HANDLES { > SMBIOS_HANDLE_ENCLOSURE = 0x1000, > SMBIOS_HANDLE_CLUSTER1, > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > index 269bd0f9d843..62d0f5ce8033 100644 > --- a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/SmbiosPlatformDxe.c > @@ -30,6 +30,7 @@ ARM_RD_SMBIOS_TABLE_INSTALL_FPTR mSmbiosTableList[] = { > &InstallSystemInformation, > &InstallSystemEnclosure, > &InstallProcessorInformation, > + &InstallCacheInformation, > }; > > /** > diff --git a/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type7CacheInformation.c b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type7CacheInformation.c > new file mode 100644 > index 000000000000..8b42ed3d622c > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Drivers/SmbiosPlatformDxe/Type7CacheInformation.c > @@ -0,0 +1,334 @@ > +/** @file > + SMBIOS Type 7 (Cache information) table for ARM RD platforms. > + > + This file installs SMBIOS Type 7 (Cache information) table for Arm's > + Reference Design platforms. It includes information about cache levels > + implemented, cache configuration, ways of associativity and other > + information related to cache memory installed. > + > + 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.8 > +**/ > + > +#include > +#include > + > +#include "SgiPlatform.h" > +#include "SmbiosPlatformDxe.h" > + > +#define TYPE7_STRINGS \ > + "L1 Instruction\0" /* L1I */ \ > + "L1 Data\0" /* L1D */ \ > + "L2\0" /* L2 */ \ > + "L3\0" /* L3 */ \ > + "SLC\0" /* L4 */ > + > +/* SMBIOS Type7 structure */ > +#pragma pack(1) > +struct ArmRdSmbiosType7 { > + SMBIOS_TABLE_TYPE7 Base; > + UINT8 Strings[sizeof (TYPE7_STRINGS)]; > +} ARM_TYPE7; > +#pragma pack() > + > +/* Cache information */ > +static struct ArmRdSmbiosType7 mArmRdSmbiosType7[] = { > + { // Entry 0, L1 instruction cache > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_CACHE_INFORMATION, // Type 7 > + sizeof (SMBIOS_TABLE_TYPE7), // Length > + SMBIOS_HANDLE_L1I_CACHE, // Handle number > + }, > + 1, > + ( > + (1 << 8) | // Write-back > + (1 << 7) | // Cache enabled > + (1 << 3) | // Cache socketed > + 0x0 // Cache level 1 > + ), > + 0xFFFF, // Uses Maximum cache size 2 field > + 0xFFFF, // Uses Installed cache size 2 field > + {0, 1}, // Supported SRAM type unknown > + {0, 1}, // Current SRAM type unknown > + 0, // Cache Speed Unknown > + 0x02, // Error correction type unknown > + 0x03, // Instruction cache > + 0, // Associativity, update dynamically > + 0, // Maximum cache size 2, update dynamically > + 0 // Installed cache size 2, update dynamically > + }, > + // Text strings (unformatted area) > + TYPE7_STRINGS > + }, > + { // Entry 1, L1 data cache > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_CACHE_INFORMATION, // Type 7 > + sizeof (SMBIOS_TABLE_TYPE7), // Length > + SMBIOS_HANDLE_L1D_CACHE, // Handle number > + }, > + 2, > + ( > + (1 << 8) | // Write-back > + (1 << 7) | // Cache enabled > + (1 << 3) | // Cache socketed > + 0x0 // Cache level 1 > + ), > + 0xFFFF, // Uses Maximum cache size 2 field > + 0xFFFF, // Uses Installed cache size 2 field > + {0, 1}, // Supported SRAM type unknown > + {0, 1}, // Current SRAM type unknown > + 0, // Cache Speed Unknown > + 0x02, // Error correction type unknown > + 0x04, // Data cache > + 0, // Associativity, update dynamically > + 0, // Maximum cache size 2, update dynamically > + 0 // Installed cache size 2, update dynamically > + }, > + // Text strings (unformatted area) > + TYPE7_STRINGS > + }, > + { // Entry 2, L2 cache > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_CACHE_INFORMATION, // Type 7 > + sizeof (SMBIOS_TABLE_TYPE7), // Length > + SMBIOS_HANDLE_L2_CACHE, // Handle number > + }, > + 3, > + ( > + (1 << 8) | // Write-back > + (1 << 7) | // Cache enabled > + (1 << 3) | // Cache socketed > + 0x1 // Cache level 2 > + ), > + 0xFFFF, // Uses Maximum cache size 2 field > + 0xFFFF, // Uses Installed cache size 2 field > + {0, 1}, // Supported SRAM type unknown > + {0, 1}, // Current SRAM type unknown > + 0, // Cache Speed Unknown > + 0x02, // Error correction type unknown > + 0x05, // Unified cache > + 0, // Associativity, update dynamically > + 0, // Maximum cache size 2, update dynamically > + 0 // Installed cache size 2, update dynamically > + }, > + // Text strings (unformatted area) > + TYPE7_STRINGS > + }, > + { // Entry 3, L3 cache > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_CACHE_INFORMATION, // Type 7 > + sizeof (SMBIOS_TABLE_TYPE7), // Length > + SMBIOS_HANDLE_L3_CACHE, // Handle number > + }, > + 4, > + ( > + (1 << 8) | // Write-back > + (1 << 7) | // Cache enabled > + (1 << 3) | // Cache socketed > + 0x2 // Cache level 3 > + ), > + 0xFFFF, // Uses Maximum cache size 2 field > + 0xFFFF, // Uses Installed cache size 2 field > + {0, 1}, // Supported SRAM type unknown > + {0, 1}, // Current SRAM type unknown > + 0, // Cache Speed Unknown > + 0x02, // Error correction type unknown > + 0x05, // Unified cache > + 0, // Associativity, update dynamically > + 0, // Maximum cache size 2, update dynamically > + 0 // Installed cache size 2, update dynamically > + }, > + // Text strings (unformatted area) > + TYPE7_STRINGS > + }, > + { // Entry 4, SLC Cache > + { > + { > + // SMBIOS header > + EFI_SMBIOS_TYPE_CACHE_INFORMATION, // Type 7 > + sizeof (SMBIOS_TABLE_TYPE7), // Length > + SMBIOS_HANDLE_L4_CACHE, // Handle number > + }, > + 5, > + ( > + (1 << 8) | // Write-back > + (1 << 7) | // Cache enabled > + (1 << 3) | // Cache socketed > + 0x3 // Cache level 4 > + ), > + 0xFFFF, // Uses Maximum cache size 2 field > + 0xFFFF, // Uses Installed cache size 2 field > + {0, 1}, // Supported SRAM type unknown > + {0, 1}, // Current SRAM type unknown > + 0, // Cache Speed Unknown > + 0x02, // Error correction type unknown > + 0x05, // Unified cache > + 0, // Associativity, update dynamically > + 0, // Maximum cache size 2, update dynamically > + 0 // Installed cache size 2, update dynamically > + }, > + // Text strings (unformatted area) > + TYPE7_STRINGS > + } > +}; > + > +/** > + Install SMBIOS Cache information Table > + > + Install the SMBIOS Cache information (type 7) table for Arm's Reference > + Design platforms. > + > + @param[in] Smbios SMBIOS protocol. > + > + @retval EFI_SUCCESS Record was added. > + @retval EFI_NOT_FOUND Unknown product id. > + @retval EFI_OUT_OF_RESOURCES Record was not added. > + @retval EFI_ALREADY_STARTED The SmbiosHandle passed in is already in use. > +**/ > +EFI_STATUS > +InstallCacheInformation ( > + IN EFI_SMBIOS_PROTOCOL *Smbios > + ) > +{ > + EFI_STATUS Status; > + EFI_SMBIOS_HANDLE SmbiosHandle; > + UINT8 CacheIdx; > + > + /* Update the cache attributes based on the product */ > + switch (SgiGetProductId ()) { > + case Sgi575: > + /* L1 instruction cache */ > + mArmRdSmbiosType7[0].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.Associativity = CacheAssociativity4Way; > + /* L1 data cache */ > + mArmRdSmbiosType7[1].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.Associativity = CacheAssociativity16Way; > + /* L2 cache */ > + mArmRdSmbiosType7[2].Base.MaximumCacheSize2 = 512; // 512KB > + mArmRdSmbiosType7[2].Base.InstalledSize2 = 512; // 512KB > + mArmRdSmbiosType7[2].Base.Associativity = CacheAssociativity8Way; > + /* L3 cache */ > + mArmRdSmbiosType7[3].Base.MaximumCacheSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.InstalledSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.Associativity = CacheAssociativity16Way; > + break; > + case RdN1Edge: > + case RdN1EdgeX2: > + /* L1 instruction cache */ > + mArmRdSmbiosType7[0].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.Associativity = CacheAssociativity4Way; > + /* L1 data cache */ > + mArmRdSmbiosType7[1].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.Associativity = CacheAssociativity4Way; > + /* L2 cache */ > + mArmRdSmbiosType7[2].Base.MaximumCacheSize2 = 512; // 512KB > + mArmRdSmbiosType7[2].Base.InstalledSize2 = 512; // 512KB > + mArmRdSmbiosType7[2].Base.Associativity = CacheAssociativity8Way; > + /* L3 cache */ > + mArmRdSmbiosType7[3].Base.MaximumCacheSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.InstalledSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.Associativity = CacheAssociativity16Way; > + /* System level cache */ > + mArmRdSmbiosType7[4].Base.MaximumCacheSize2 = 8192; // 8MB SLC per chip > + mArmRdSmbiosType7[4].Base.InstalledSize2 = 8192; // 8MB SLC per chip > + mArmRdSmbiosType7[4].Base.Associativity = CacheAssociativity16Way; > + break; > + case RdE1Edge: > + /* L1 instruction cache */ > + mArmRdSmbiosType7[0].Base.MaximumCacheSize2 = 32; // 32KB > + mArmRdSmbiosType7[0].Base.InstalledSize2 = 32; // 32KB > + mArmRdSmbiosType7[0].Base.Associativity = CacheAssociativity4Way; > + /* L1 data cache */ > + mArmRdSmbiosType7[1].Base.MaximumCacheSize2 = 32; // 32KB > + mArmRdSmbiosType7[1].Base.InstalledSize2 = 32; // 32KB > + mArmRdSmbiosType7[1].Base.Associativity = CacheAssociativity4Way; > + /* L2 cache */ > + mArmRdSmbiosType7[2].Base.MaximumCacheSize2 = 256; // 256KB > + mArmRdSmbiosType7[2].Base.InstalledSize2 = 256; // 256KB > + mArmRdSmbiosType7[2].Base.Associativity = CacheAssociativity4Way; > + /* L3 cache */ > + mArmRdSmbiosType7[3].Base.MaximumCacheSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.InstalledSize2 = 2048; // 2MB > + mArmRdSmbiosType7[3].Base.Associativity = CacheAssociativity16Way; > + /* System level cache */ > + mArmRdSmbiosType7[4].Base.MaximumCacheSize2 = 8192; // 8MB SLC > + mArmRdSmbiosType7[4].Base.InstalledSize2 = 8192; // 8MB SLC > + mArmRdSmbiosType7[4].Base.Associativity = CacheAssociativity16Way; > + break; > + case RdV1: > + case RdV1Mc: > + /* L1 instruction cache */ > + mArmRdSmbiosType7[0].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.Associativity = CacheAssociativity4Way; > + /* L1 data cache */ > + mArmRdSmbiosType7[1].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.Associativity = CacheAssociativity4Way; > + /* L2 cache */ > + mArmRdSmbiosType7[2].Base.MaximumCacheSize2 = 1024; // 1MB > + mArmRdSmbiosType7[2].Base.InstalledSize2 = 1024; // 1MB > + mArmRdSmbiosType7[2].Base.Associativity = CacheAssociativity8Way; > + /* System level cache */ > + mArmRdSmbiosType7[4].Base.MaximumCacheSize2 = 16384; // 16MB SLC per chip > + mArmRdSmbiosType7[4].Base.InstalledSize2 = 16384; // 16MB SLC per chip > + mArmRdSmbiosType7[4].Base.Associativity = CacheAssociativity16Way; > + break; > + case RdN2: > + /* L1 instruction cache */ > + mArmRdSmbiosType7[0].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[0].Base.Associativity = CacheAssociativity4Way; > + /* L1 data cache */ > + mArmRdSmbiosType7[1].Base.MaximumCacheSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.InstalledSize2 = 64; // 64KB > + mArmRdSmbiosType7[1].Base.Associativity = CacheAssociativity4Way; > + /* L2 cache */ > + mArmRdSmbiosType7[2].Base.MaximumCacheSize2 = 1024; // 1MB > + mArmRdSmbiosType7[2].Base.InstalledSize2 = 1024; // 1MB > + mArmRdSmbiosType7[2].Base.Associativity = CacheAssociativity8Way; > + /* System level cache */ > + mArmRdSmbiosType7[4].Base.MaximumCacheSize2 = 32768; // 32MB SLC > + mArmRdSmbiosType7[4].Base.InstalledSize2 = 32768; // 32MB SLC > + mArmRdSmbiosType7[4].Base.Associativity = CacheAssociativity16Way; > + break; > + } > + > + /* Install valid cache information tables */ > + for (CacheIdx = 0; CacheIdx < ARRAY_SIZE (mArmRdSmbiosType7); CacheIdx++) { > + if (mArmRdSmbiosType7[CacheIdx].Base.MaximumCacheSize2 == 0) { > + continue; > + } > + > + SmbiosHandle = ((EFI_SMBIOS_TABLE_HEADER *)&mArmRdSmbiosType7[CacheIdx])->Handle; > + Status = Smbios->Add ( > + Smbios, > + NULL, > + &SmbiosHandle, > + (EFI_SMBIOS_TABLE_HEADER *)&mArmRdSmbiosType7[CacheIdx] > + ); > + if (Status != EFI_SUCCESS) { > + DEBUG (( > + DEBUG_ERROR, > + "SMBIOS: Failed to install Type7 SMBIOS table.\n" > + )); > + } > + } > + > + return Status; > +}