From nobody Sat May 18 15:49:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+95339+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=arm.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1666107243106259.87450630535284; Tue, 18 Oct 2022 08:34:03 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id TwPwYY1788612x6hs3n9W1bM; Tue, 18 Oct 2022 08:34:02 -0700 X-Received: from EUR05-VI1-obe.outbound.protection.outlook.com (EUR05-VI1-obe.outbound.protection.outlook.com [40.107.21.86]) by mx.groups.io with SMTP id smtpd.web12.8605.1666107241496792785 for ; Tue, 18 Oct 2022 08:34:02 -0700 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=NYipYfEw9xt/EOYMGCf1dF1J6TWtDaTKdZ2FwC0ZWWeErB4zLzNt28QkQjJZuEes2aJI/SDYYKhOXsEL8yXScVd1/MBdhtsoMw/v2hzrOSHAlGPrJybcWiOfC/7/3WjDo7mZx09XIkcANaU2+VFAgNP/Ope5QII4vjtMavG1n0KcDjQzN6WPSNI9go9ankmBt+QG4eGmMqcYvlrz8GSRD3KsPgGCSblBjXYdGfilyMbv7IJQXmRB6GOeuYNIlGvyOkCzIGsompferBrpMyQFrvf6ZZFacqnNBI83amjCQmwtV0ZXMC4UyPIxJ0e++x/8gWJXGqRVoAqyHYiPLsULOA== ARC-Message-Signature: i=2; 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=CWb+gyZGoAC58dr++dChHsySPTVvNWMpZ7jxqyhFbD8=; b=QVcmYk17p8cOhuuVHLXFpn+Pne3NDipZd+54SHQy75XROk8Uuy+Jngq/rlbJMZlhuGGjIYgi/KfBSoQoVvcJZVJD5TPnIKCBl2VkZ+cuzYDJnmhSm0tmRzygRQh4qPPU9zHxHg+O7ahBM2i1Hh+JUDxpsxnB72qzy1mMoz4fyEKa+tdc0FvJLuuV3C7C1+D+BnyD2noG8wjgCglEz1NS+48ndNuPcoxD8MSDJykLiVp+Zvs8C8ZHG8UdBcVV4V5oAAYNcG3R9JeHfWo0cnAMhFjvNhzn32IKFimXVKyp25Sd9znE5Icd5ATiX7zWRd6SnhYdy7yrYoE06q1feAgh6w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) X-Received: from AM5PR04CA0008.eurprd04.prod.outlook.com (2603:10a6:206:1::21) by PAXPR08MB7333.eurprd08.prod.outlook.com (2603:10a6:102:230::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.32; Tue, 18 Oct 2022 15:33:57 +0000 X-Received: from VI1EUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:1:cafe::16) by AM5PR04CA0008.outlook.office365.com (2603:10a6:206:1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Tue, 18 Oct 2022 15:33:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+95339+1787277+3901457@groups.io; helo=mail02.groups.io; 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; pr=C X-Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VI1EUR03FT051.mail.protection.outlook.com (100.127.144.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20 via Frontend Transport; Tue, 18 Oct 2022 15:33:56 +0000 X-Received: ("Tessian outbound 58faf9791229:v130"); Tue, 18 Oct 2022 15:33:56 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: fe61ed12cf535768 X-CR-MTA-TID: 64aa7808 X-Received: from 177c2a30f0d3.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C1FDF599-356B-4B74-9C05-50093CDFAD57.1; Tue, 18 Oct 2022 15:33:49 +0000 X-Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 177c2a30f0d3.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 18 Oct 2022 15:33:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WKo0XblDthSvEPh/trdyklruiNiGfAVvelKPHhSvAb3ynhILgixokXiesGA3MvVFQ6VAA551OdJ4bf2feMYn5gb8yB8cLhSQxI+sEh3UGwfTasSVfrp9uGtykLgm3PTPeZP+LCLI5dQneBSYrIJd9VEBy2H1SbKijMU03IihMYNu8ksm1r8abE94Ml/+YKwHKyypnESQ3/dtvTtKeM8165ORt8jp7u20zuVoL5wsFvrxg+4+8DT84cJVH4pk1gSlASn9o8FnO8CKQZlRNvOaEq4s32ogEY380OXIe18PQShi2l2JV0aQQYe5s48BQsv/GemZv8V9F68LEJWdp01oww== 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=CWb+gyZGoAC58dr++dChHsySPTVvNWMpZ7jxqyhFbD8=; b=KxI4FZc4TvENHdX/AqUCzGzTSyme/TeqBtZC4KP7m43Bh/XKBCNZx+k8NNVlZOIq5M6/UutZ1J8VVTTiotqvKiRLj3djqbqrajfmwz78YFHUfsVAU79PgnuJit9cjKdYW0hqsZLWiticmv//fxASRZ/mSuX39yIGO+lfyplfAVPxIju8atp4XOa4Vkf9AberGIVDq7052V2a0aQep6oOsNVfpXk7yXOcEcEuftbt7iwkCx1JglHEDdR3QcfIq4BR/HJCP5tsSOQsqmaAUT7QJNdE2sio4Zw0SJnoovrxaE7zbLnQk7DDskrXYqZe/eFddNwtXnlyz1fSCQLdwK1law== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none X-Received: from DB6P193CA0012.EURP193.PROD.OUTLOOK.COM (2603:10a6:6:29::22) by AM7PR08MB5352.eurprd08.prod.outlook.com (2603:10a6:20b:10e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Tue, 18 Oct 2022 15:33:47 +0000 X-Received: from DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:29:cafe::1) by DB6P193CA0012.outlook.office365.com (2603:10a6:6:29::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30 via Frontend Transport; Tue, 18 Oct 2022 15:33:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C X-Received: from nebula.arm.com (40.67.248.234) by DBAEUR03FT049.mail.protection.outlook.com (100.127.142.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5723.20 via Frontend Transport; Tue, 18 Oct 2022 15:33:46 +0000 X-Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Tue, 18 Oct 2022 15:33:46 +0000 X-Received: from E114225.Arm.com (10.1.196.36) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Tue, 18 Oct 2022 15:33:45 +0000 From: "Sami Mujawar" To: CC: Sami Mujawar , , , , , , , , , , , , , Subject: [edk2-devel] [PATCH v1 1/2] DynamicTablesPkg: Define a SMBIOS Structure/Table type Date: Tue, 18 Oct 2022 16:33:43 +0100 Message-ID: <20221018153344.16876-2-sami.mujawar@arm.com> In-Reply-To: <20221018153344.16876-1-sami.mujawar@arm.com> References: <20221018153344.16876-1-sami.mujawar@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DBAEUR03FT049:EE_|AM7PR08MB5352:EE_|VI1EUR03FT051:EE_|PAXPR08MB7333:EE_ X-MS-Office365-Filtering-Correlation-Id: 55beffa4-0cb5-48de-06b3-08dab11e2bf7 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: J6O4hd1A5zvd6X/tY3bydpsuZhxgoFv8LYufP76sAAEqJ1RBuuQSQjsS1I0XgUsCegYlytrWyBW+C5KTSY7JC/NUXiFcF5Kbq+jzcHFca6wRkj/BTnIHRkus1qZDosUGeY3hz17D5YGTkzCROfsxZ28Gri4Eof8mOTmNBiIhBRrdSN+dx1DQAOGB2kx6kS8uZmrPBKbbkGgzbQxzwyYBLbuh1qHR7Bw302YwdaUGZUpSuK5YM6AuaOi7KjQNUJ1zCJd++ZE0hcTAvIxMAFO5bpAQROt2uIOZlB1rhv+2vt6GgesDgGKVfOnQxO9TagMtLnqLaROdUeAsowWvO7qnkEar3r+IHFIsfSf/7uv9aQMi1hm6EKWkRkfpUoXZHGJOZE46IYjqboxU25DaNZwOLKqFSI0A1Ms99KRZG1lg26gmOgjQ9UARfSKrvGUXA5jYkRhqJTKKjzsXA4tvgMQK0ExakKH/PIY988CLPkrcAdGUFIXJPE1D86227gACx/qXx3LN6YHkQiAC+YsagVDgQrP+C1l8sNpQVcYuOfFazKGD86z1ABEp2DT4AmKT/z5QjQWb9RB1lsO3ZE1kyqfoX4rj0iFPIJv+jehyGQjZ4L+sBE2GGNmPDkwJVT52nMIeh/HSlOfJ5gEvJhMfBAyrizSLq/W3+XJH7mDYK1yA2ABRcwDCqBazptFCjeFc1QjjmhCeP6x8J/Mvr5WJMscsABjmJNI3nZ5+KJNtZEr5U9vWE8qxyKXnbRUHK+MjrQ+hDNZb14FncwSJsDuajzS9+DtrSVwrB34hQcNNlaXxqbWEQKJ9q3Mlr/lI+yckVsyr X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:nebula.arm.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(346002)(376002)(136003)(39860400002)(451199015)(40470700004)(36840700001)(46966006)(186003)(54906003)(1076003)(426003)(47076005)(2616005)(356005)(336012)(81166007)(86362001)(36860700001)(5660300002)(82740400003)(2906002)(44832011)(4326008)(82310400005)(40480700001)(40460700003)(41300700001)(8676002)(478600001)(8936002)(7696005)(316002)(70586007)(6916009)(26005)(70206006)(36756003)(36900700001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5352 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VI1EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a4128e7e-931d-46cd-216e-08dab11e25c4 X-Microsoft-Antispam-Message-Info: dskXutcd0FKbGrpHWSD7YHRUkqM28XOwpJEVYboPQQOG2N+kWWvzt0PRuMX5cKhAMANI/EPpfE/bx0KeRraDKhrrrf3rfieqTGtl47DkqqhrRqbV8epLoWf5wrQuMpvomIggVOPVbCdZaQtSU5yhI1Ly79NyZDXsj6cMl0xkiaXJmDnWkSmGbYgmHjVO25Py14hf10t7h++yIeUavPz257WybZbTP+Nl8myhpZ34QrEiLzUXjXhM0msvQyVqdJarra/CoCLaSrJH5Az1mod0ekcEmsKp8sjld7ytg55Om50UFQxmfgaNmtpC1vTQd8gna9AQ7FhSrMrKQVtZdd5Dm7Gm/Cy4bcBdMTDFYK3KkKf+A59l4xKEIcm4/wNKaMonHGoyKVSGY7b352Me+dhoZDHJ18iCqIrOaTtzQ+4jkC3seE/vwrbMa7mj/4Pv9S4ua3lXuIc3Zqz+lXqqs4AJAaj5pgsDFhnSRzMk963MlFPqJHkpK5Sl3VeJrwdOX5vgvX96mMf67PdyBErIJm6d4eTahRt3MdiwMrTngJYO0Et9Bu2WK5PwVRRlwVnHihQJKRyQN9wTZDmzMGa4vmJrNruENTfgUmK+EbDcDnuQN4wMpcuhQAZlzfq/T+MAgtx2PBKnih7r/PoGCaV65QEwQYIC2ozsKOlOnHF5IVVtXTheHQHxa8kPu6x4cH2kuO+HW+h/fHnyEGy50CIQQxtYQOk0SqbrqnAq9T+d7RL+IaEMaOxoDLdow9qIH0Xq15+p1cq8z9dwm/hG4M6bVGy9CQ== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2022 15:33:56.9997 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 55beffa4-0cb5-48de-06b3-08dab11e2bf7 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: VI1EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7333 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,sami.mujawar@arm.com X-Gm-Message-State: 8rFXjbR3oTdSKKygtg7x8QEPx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1666107242; bh=U1pY+/ewwqQW5DRRSpGi3PQ1lMmD4iopoEQDLIdz0NQ=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=kz/fJd7Php9yJg9Q6qU0cOOw4eFBje4tlcKep+DgTIAGBxuDKtLz+dnAynlexGzvPy5 yrq9svBWGOfohmEoaqOVneGEYO0Ko45NkSjwplRFikTMe1/tn07DtAMvYWKzKtw0qd9ME brOTOOwt7Y2Nl/ofoxP26Tjn6gY3V3ZtD0w= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1666107244058100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" SMBIOS Structure Types 0 through 127 (7Fh) are reserved for and defined by the SMBIOS specification. Types 128 through 256 (80h to FFh) are available for system and OEM-specific information. Therefore, define a new type 'SMBIOS_TABLE_TYPE' that represents a SMBIOS structure type and include it in the definition of CM_STD_OBJ_SMBIOS_TABLE_INFO. Signed-off-by: Sami Mujawar Cc: Alexei Fedorov Cc: Pierre Gondois Cc: Girish Mahadevan Cc: Jeff Brasen Cc: Ashish Singhal Cc: Nick Ramirez Cc: William Watson Cc: Abner Chang Cc: Samer El-Haj-Mahmoud Acked-by: Abner Chang Reviewed-by: Pierre Gondois --- DynamicTablesPkg/Include/StandardNameSpaceObjects.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DynamicTablesPkg/Include/StandardNameSpaceObjects.h b/DynamicT= ablesPkg/Include/StandardNameSpaceObjects.h index 8ec3238225abe4fc16a7337c29ecd655590b408f..c81efbc237779c305abc3c4dd07= f6b705563e2a1 100644 --- a/DynamicTablesPkg/Include/StandardNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/StandardNameSpaceObjects.h @@ -40,6 +40,20 @@ **/ typedef UINTN CM_OBJECT_TOKEN; =20 +/** + A type representing a SMBIOS structure/table type. + + Types 0 through 127 (7Fh) are reserved for and defined by the + SMBIOS specification. + Types 128 through 256 (80h to FFh) are available for system and + OEM-specific information. + + Note: This Dynamic SMBIOS table generation implementation defines + TableType FFh as a NULL table which is used by the Dynamic + SMBIOS table dispatcher to terminate the dependency sequence. +*/ +typedef UINT8 SMBIOS_TABLE_TYPE; + /** The ESTD_OBJECT_ID enum describes the Object IDs in the Standard Namespace. */ @@ -127,6 +141,9 @@ typedef struct CmAStdObjAcpiTableInfo { to NULL. */ typedef struct CmStdObjSmbiosTableInfo { + /// SMBIOS Structure/Table Type + SMBIOS_TABLE_TYPE TableType; + /// The SMBIOS Table Generator ID SMBIOS_TABLE_GENERATOR_ID TableGeneratorId; =20 --=20 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#95339): https://edk2.groups.io/g/devel/message/95339 Mute This Topic: https://groups.io/mt/94410913/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat May 18 15:49:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+95341+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=arm.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1666107248323100.81566290389799; Tue, 18 Oct 2022 08:34:08 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id f2gKYY1788612xTlOZfFeCfF; Tue, 18 Oct 2022 08:34:08 -0700 X-Received: from EUR05-AM6-obe.outbound.protection.outlook.com (EUR05-AM6-obe.outbound.protection.outlook.com [40.107.22.40]) by mx.groups.io with SMTP id smtpd.web09.8635.1666107246280717864 for ; Tue, 18 Oct 2022 08:34:07 -0700 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=lvJr+jNj4Wkfll1yytwJY+Po8Dp/2O6iiVyutkdcsTlf3xCkMDeWJWiJ87xaQtoXzTq3+J54+Fn7e9Z23pFLzUNF/d6fFprneKP9pXll2nTe9EulEZssih9aT7HcSqjPy2pA58qSHl6/3y86IXo9OvyxPOI/m+X8g26jNQEeblrHs1ScHkmmnlZvmaNu0+HdV3iGiLnldvFM6gTdSejMA/+scDLwa1PIrCV9bippj4sdcjH41rlOsYYdkmk6lHcWXq9nvsGS0hVL3rvQfuZJe/1/MbiOHPO/LlAO5Z8Jf025n1eJizPWLiKx7pwu0xcKvcHf/rA2mOR1I6fhb7+Lgw== ARC-Message-Signature: i=2; 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=3zfkXeg3TjWre7kn30Pg8UCxYK8IXYNuJzJUXYsP/+A=; b=nxqHapeTGQ64WwUYKmwaNLpuqY+dafl3TdQ946OuyBX4rrvAZg5c+6wmnb/SIqHDWjvj02MJw0nks4xMAFJxVctuvFHSbULnECUCXV4jTH7dpGIrtsrWU0+eCm/YgytlqhLI1ky+SGCFhSBVMhOTB1q0x3CNDGzvzVTsp1+C4GWC2nFgNNoamZPyIsZDR4H3f0PrDmmHlWRJbLlc4W0alXm0Pc86J1dJ3DThtYLUoe892udoVH56yk0RiR6NrurHbS6PuPhdLkBQZSGx0Y0Av7Mob3yVZEGb5eqxR7gkZ3ipRA5P85J87ZALPACQPWhLvhEKHkVQdjBWVRXzAZ7M5g== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) X-Received: from FR0P281CA0144.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::19) by GV1PR08MB7897.eurprd08.prod.outlook.com (2603:10a6:150:5c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Tue, 18 Oct 2022 15:34:01 +0000 X-Received: from VI1EUR03FT034.eop-EUR03.prod.protection.outlook.com (2603:10a6:d10:96:cafe::90) by FR0P281CA0144.outlook.office365.com (2603:10a6:d10:96::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.16 via Frontend Transport; Tue, 18 Oct 2022 15:34:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+95341+1787277+3901457@groups.io; helo=mail02.groups.io; 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; pr=C X-Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VI1EUR03FT034.mail.protection.outlook.com (100.127.144.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20 via Frontend Transport; Tue, 18 Oct 2022 15:34:00 +0000 X-Received: ("Tessian outbound 6c699027a257:v130"); Tue, 18 Oct 2022 15:34:00 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 6a2904df758383c4 X-CR-MTA-TID: 64aa7808 X-Received: from e83d332106c1.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 547F807D-7E55-43AA-AFE6-C235A7F752CF.1; Tue, 18 Oct 2022 15:33:53 +0000 X-Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e83d332106c1.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 18 Oct 2022 15:33:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nE3ljqscR/cwt2OxG+3dEWGxSlW/Sppg4kQUXz4eM27FR24KwB4rohS3mZhPCG3hMKHTOWpptkR8Fu2QpueYRpdVrhz3GHWrY11wEjhLz0VO5GOPERMdtSw+9BsRCytN/WjZhDVB18SXyJpoAEoMPXkxyXsR0TEAsaSf+WtSTigdehDtefdWvXDozEUQqNT3d5/M0taX2c5HEroRlf5UCUti2rqsTO3w8ShJaw3bouQp4AfzdEEwsqm2OKJaGBXLnolV21cdW4urusfKFgWSpf+1AyqhI4d+URAxhfgoTtxUIDndF9SmXXZ5BEBTU4OzYxw30rDXXFmEQlOM4uf2yA== 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=3zfkXeg3TjWre7kn30Pg8UCxYK8IXYNuJzJUXYsP/+A=; b=AurxiRB+Q5QEiMHLidCyTsylh/D7Dk8OfcMuqHdgTUBeRHlmXxeNSMusJ3cnlROmXGGXWE+yRuzNuhXTTUPJYMLSA9hRS0yNTC1nBmYmWBPOy17B442YB+rIszHuIR2HOSFNnEbYoue8B8OR1Ki3vEpZm7gNSIDgflvtfqj4Axi5F59MEJdS+I1cwFahL5TCnuwG0+CGYOGioL17V4Anml/naPIFJxbBYyTd1nOyg16/jzBMxdW83v0rs+bhUlpgBsB1+ibDFdTPaz8PswC/6Xjt5ZtDQSUjiWYvBnps1gJewESXLBFDUrYD2UphOEWf7T/WBdduJFG8ZUXFp9fkJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none X-Received: from DB6P193CA0006.EURP193.PROD.OUTLOOK.COM (2603:10a6:6:29::16) by PAWPR08MB10284.eurprd08.prod.outlook.com (2603:10a6:102:369::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.33; Tue, 18 Oct 2022 15:33:49 +0000 X-Received: from DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:29:cafe::ff) by DB6P193CA0006.outlook.office365.com (2603:10a6:6:29::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30 via Frontend Transport; Tue, 18 Oct 2022 15:33:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C X-Received: from nebula.arm.com (40.67.248.234) by DBAEUR03FT049.mail.protection.outlook.com (100.127.142.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5723.20 via Frontend Transport; Tue, 18 Oct 2022 15:33:49 +0000 X-Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Tue, 18 Oct 2022 15:33:46 +0000 X-Received: from E114225.Arm.com (10.1.196.36) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Tue, 18 Oct 2022 15:33:46 +0000 From: "Sami Mujawar" To: CC: Sami Mujawar , , , , , , , , , , , , , Subject: [edk2-devel] [PATCH v1 2/2] DynamicTablesPkg: Add SMBIOS table dispatcher Date: Tue, 18 Oct 2022 16:33:44 +0100 Message-ID: <20221018153344.16876-3-sami.mujawar@arm.com> In-Reply-To: <20221018153344.16876-1-sami.mujawar@arm.com> References: <20221018153344.16876-1-sami.mujawar@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DBAEUR03FT049:EE_|PAWPR08MB10284:EE_|VI1EUR03FT034:EE_|GV1PR08MB7897:EE_ X-MS-Office365-Filtering-Correlation-Id: 7486eba3-a99a-4aff-3362-08dab11e2e22 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: L7U43LXkIilLPnHYxkFqlNa7AaZc97hJjYuNJ4FdYlodW3zCiIi88Y6AWeZwJKxqLDkmLxTfBkWZteZ7EvHKeNmumFXj4U03Y3D0cvOzrbCoJpbOV9faJyTVuBErX3GFZFPUdBAchr6rx6LGlk6GFHyax0N9PdUP2pGIhFuiz9mpGbfiz8Lo0cloPrfyBmGHNjPK634mWw3cIR0mvopqwGfgVOo/CblpFKaLSt3TzUptydC3dKXshkvUXmPPDQ3WBRGUqWvaSXz59ddQte8K8iWULFC1roCuSkcyIOtHwYm+GgtB+XnJdQD8uDew3ZAbhePcBYyj+BNd+DvqUeCRs/j/4sikYrIUL0Ic5tELLAn5TG/Hw/bf8zic4rOJ67BlYRjAH9Irt4JXTOpzHg5QWdMxtIukcqj8bwi8KWjT/hRVPP+8YE6oaq6m5lXKfZSjbIZADJfvZwZXUmPUqmfSjGUB/XVzVWp71PGsT6vYuIGNVAgOkU60HroywoiokTxz1oY5YoPTmoOJ5d5J/BJ74CvCIDVwOoJMuU6VZhGaqI/mDPPI5waoF/nshEA34Q4+9Yb/GxCrg6TTiqM4FAbJXpzF+9bNSplF4nBDl+3SQ8mAsM0vHveSmbaUye4+9jBXuRi5EFHb2Nnmrhvbvzjba3yFfhNV7z1qjBzOcp5sOjDMvxAAna16GMz2WTYI7VZHGX8okgjthktgdEojph8T7fvaVLm1wDRS8UjzS37sJvKx5z4pln30VIntMaMaxO6x1P+G5DFx8eRVeghV9PzfxRcp35x8jH4osldGW1eHqOJ6KcOaE4wqvLDMQlFx+P2b X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:nebula.arm.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(39860400002)(136003)(396003)(451199015)(46966006)(36840700001)(40470700004)(36756003)(41300700001)(30864003)(2906002)(2616005)(1076003)(186003)(8936002)(5660300002)(36860700001)(70586007)(4326008)(8676002)(70206006)(40480700001)(44832011)(316002)(86362001)(6916009)(54906003)(7696005)(82310400005)(81166007)(82740400003)(83380400001)(356005)(336012)(40460700003)(478600001)(26005)(426003)(47076005)(36900700001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10284 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VI1EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6a3ad283-f2a0-4838-a2d5-08dab11e2773 X-Microsoft-Antispam-Message-Info: HKw6TYEN4zXhOGwGsZSQzcK4oF/VEzrJ5D8bAKeinvNadZfjVQKy78mL2cyDpa1QixpWTKzhhAYOFQFXewMtwCPYxXjRDzn4TDPRmMoQIqaana3/uaFwcYHCE91/oRdJfqIR1ZnMtVQB3GuM0DibZvG0qygQU/iWSiVLN9Z5AwcfEWt3EeZYcYRE+NKU9/a+XKb8qa9iG7BQhwitY1wUAv2OfUDyuVUvWnMeB4X5Dl6yFYDQRTV9got46Nx3vVVQZvOAaX6f84ZN2w0Nx3sC8p9cwnw/8sjl6lxbuROGVIRUFbOXID184HvLywrnR/xHrVQuzVoaHl2r7xm5Rf79P2KRupAmrkOqfA0SA6kD3mzkRC1FPGhTqWx0FuszWTzJY+toAhFtXCkfrpkXUjaFophzjIOiOu9dFMfxT6AQOzziVKxBNwzMtJ2SbAhRhxI3k746uXYdJnF4u1z/MKK0qra7vSeCIB+wbN4t8K6ppSUcoHoGEpdkKp0YKhTpEDnIT3AMeGAt2PKHKlNNDbONUXEdBPy4kxYCf/gf8F7HPi6vzBXAg4pXJFAdan/sMLdy6V3NbL/TC3X/mvfE8bIeYR1/Y1oJbuIHgYiTphYr5fv2G1IVr67sV/ABV6UIYkT6lPHpx4GrjTjkv9RsFkmUS4WOyuXQ4gxZybpLJex8KywUt0rWGcw75RejOEWvyufNJwSqFLpuzIceUtdFMaQt4H7fNaiiWSGdNkUuScLEnTd5nBWgS+6YhJ/5S+lAPWEv3c5Qx8imWZtmShNfKwiUpw== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2022 15:34:00.5912 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7486eba3-a99a-4aff-3362-08dab11e2e22 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: VI1EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7897 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,sami.mujawar@arm.com X-Gm-Message-State: 8R2KiEzpOSbpWyLEynTFDaKcx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1666107248; bh=1Ya9c8PsoH1k/8akSu1XZ/j7BkEAtZqXtFNrZheJE2o=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=Wd5RVpD3vvRgH/fnTc0/9VItiTiIFT42meP26WlO7zcioUN+dpKBew62e+Qqfnhh9k7 8Q2uhVl78WRsR+B8TLnTE8Qdwi6Ytk6gqptB6afb/VGSASv+oxSRABdGYWCEWhQyiiTqA el9hDUTeMo5NyG2ldCkhb2B4WXbKeZcRNX4= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1666107250286100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some SMBIOS structure/table fields have dependency on other SMBIOS structures/tables. These dependencies are established using handles pointing to the dependent tables. A SMBIOS table handle can be obtained by either installing a SMBIOS table or by allocating a handle, which requires complex management to avoid any clashes. Obtaining a SMBIOS handle by installation requires that the dependent table is installed before the parent SMBIOS table can be installed. Therefore, introduce a SMBIOS table dispatcher that walks the SMBIOS dependency list and schedules the dependent tables to be installed before the parent table is installed. Signed-off-by: Sami Mujawar Cc: Alexei Fedorov Cc: Pierre Gondois Cc: Girish Mahadevan Cc: Jeff Brasen Cc: Ashish Singhal Cc: Nick Ramirez Cc: William Watson Cc: Abner Chang Cc: Samer El-Haj-Mahmoud Reviewed-by: Pierre Gondois --- DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.inf= | 4 +- DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDispatcher.c = | 304 ++++++++++++++++++++ DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDispatcher.h = | 133 +++++++++ 3 files changed, 440 insertions(+), 1 deletion(-) diff --git a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableMa= nagerDxe.inf b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTable= ManagerDxe.inf index ad8b3d037c169ca848b5ea84fd1086b83f37876f..b09272d883c6f4f05eb03dcdab3= efeda92b2fbb6 100644 --- a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.inf +++ b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.inf @@ -1,7 +1,7 @@ ## @file # Module that drives the table generation and installation process. # -# Copyright (c) 2017 - 2019, ARM Limited. All rights reserved. +# Copyright (c) 2017 - 2022, Arm Limited. All rights reserved. # # SPDX-License-Identifier: BSD-2-Clause-Patent ## @@ -22,6 +22,8 @@ [Defines] =20 [Sources] DynamicTableManagerDxe.c + SmbiosTableDispatcher.c + SmbiosTableDispatcher.h =20 [Packages] MdePkg/MdePkg.dec diff --git a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDis= patcher.c b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDisp= atcher.c new file mode 100644 index 0000000000000000000000000000000000000000..88907fecdde5e36d40ac22cd486= 391abbb853e38 --- /dev/null +++ b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDispatcher= .c @@ -0,0 +1,304 @@ +/** @file + Dynamic Smbios Table Dispatcher + + Copyright (c) 2022, Arm Limited. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include +#include + +#include +#include + +extern +EFI_STATUS +EFIAPI +BuildAndInstallSmbiosTable ( + IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST TableFactoryProto= col, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + IN EFI_SMBIOS_PROTOCOL *SmbiosProtocol, + IN CM_STD_OBJ_SMBIOS_TABLE_INFO *CONST SmbiosTableInfo + ); + +#if !defined (MDEPKG_NDEBUG) + +/** + A string table describing the SMBIOS dispatcher states. +*/ +STATIC +CONST CHAR8 *SmbiosTableStateTxt[] =3D { + "StUnknown", + "StNotPresent", + "StPresent", + "StDispatched" +}; + +#endif + +/** + The SMBIOS dispatcher state table. + + The SMBIOS dispatcher state table is used to establish the dependency + order in which the SMBIOS tables are installed. This allows the SMBIOS + dispatcher to dispatch the dependent tables for installation before the + parent table is installed. + The SMBIOS_TABLE_DISPATCHER.Dependency[] field is used to establish the + dependency list. + Elements in the Dependency list are resolved by increasing index. Howeve= r, + all orders are equivalent as: + - the Parent SMBIOS table will only be installed once all dependencies + have been satisfied. + - no cyclic dependency is allowed. + The dependency list is terminated by SMTT_NULL. +*/ +STATIC +SMBIOS_TABLE_DISPATCHER mSmBiosDispatcher[MAX_SMBIOS_TABLES] =3D { + SMBIOS_TABLE_DEP (SMBIOS_TYPE_BIOS_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_BASEBOARD_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_ENCLOSURE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_PROCESSOR_INFORMATION, SMBI= OS_TYPE_CACHE_INFORMATION, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_MODULE_INFORMATON, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_CACHE_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_SLOTS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_OEM_STRINGS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_GROUP_ASSOCIATIONS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_EVENT_LOG, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, SMBI= OS_TYPE_32BIT_MEMORY_ERROR_INFORMATION, SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFO= RMATION, SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_DEVICE, SMBI= OS_TYPE_PHYSICAL_MEMORY_ARRAY, SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFO= RMATION, SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_PORTABLE_BATTERY, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_RESET, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_HARDWARE_SECURITY, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_POWER_CONTROLS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_VOLTAGE_PROBE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_COOLING_DEVICE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_TEMPERATURE_PROBE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MANAGEMENT_DEVICE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MEMORY_CHANNEL, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_IPMI_DEVICE_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_SYSTEM_POWER_SUPPLY, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_ADDITIONAL_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_TPM_DEVICE, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL), + SMBIOS_TABLE_DEP (SMBIOS_TYPE_STRING_PROPERTY_INFORMATION, SMTT= _NULL, SMTT_NULL, = SMTT_NULL, SMTT_NULL, SMTT_NULL) +}; + +#if !defined (MDEPKG_NDEBUG) + +/** + Print the SMBIOS Table Dispatcher state information. + + @param Verbose Print detailed report +**/ +STATIC +VOID +EFIAPI +PrintDispatcherStatus ( + IN BOOLEAN Verbose + ) +{ + UINTN Index; + + DEBUG ((DEBUG_VERBOSE, "Dispatcher Status:\n")); + for (Index =3D 0; Index < ARRAY_SIZE (mSmBiosDispatcher); Index++) { + if ((!Verbose) && (mSmBiosDispatcher[Index].State < StPresent)) { + continue; + } + + DEBUG (( + DEBUG_VERBOSE, + "%02d: %10a [%02d, %02d, %02d, %02d, %02d]\n", + mSmBiosDispatcher[Index].TableType, + SmbiosTableStateTxt[mSmBiosDispatcher[Index].State], + mSmBiosDispatcher[Index].Dependency[0], + mSmBiosDispatcher[Index].Dependency[1], + mSmBiosDispatcher[Index].Dependency[2], + mSmBiosDispatcher[Index].Dependency[3], + mSmBiosDispatcher[Index].Dependency[4] + )); + } // for + + DEBUG ((DEBUG_VERBOSE, "\n")); +} + +#define DEBUG_PRINT_DISPATCHER_STATUS(Verbose) PrintDispatcherStatus (Ver= bose) +#else +#define DEBUG_PRINT_DISPATCHER_STATUS(x) +#endif + +/** + Initialise the SMBIOS table dispatcher. + + @param SmbiosTableInfo Pointer to the list of SMBIOS tables to be insta= lled. + @param SmbiosTableCount Count of SMBIOS tables to be installed. +**/ +VOID +EFIAPI +InitSmbiosTableDispatcher ( + IN CM_STD_OBJ_SMBIOS_TABLE_INFO *SmbiosTableInfo, + IN UINT32 SmbiosTableCount + ) +{ + UINTN Index; + SMBIOS_TABLE_TYPE TableType; + + // First search for the list of SMBIOS tables presented + // for installation and update the dispatcher status. + for (Index =3D 0; Index < SmbiosTableCount; Index++) { + TableType =3D SmbiosTableInfo[Index].TableType; + ASSERT (mSmBiosDispatcher[TableType].State !=3D StPresent); + mSmBiosDispatcher[TableType].State =3D StPresent; + } + + // Mark the remaining tables as not presented for installation + for (Index =3D 0; Index < ARRAY_SIZE (mSmBiosDispatcher); Index++) { + if (mSmBiosDispatcher[Index].State =3D=3D StUnknown) { + mSmBiosDispatcher[Index].State =3D StNotPresent; + } + } + + DEBUG_PRINT_DISPATCHER_STATUS (FALSE); +} + +/** Schedule the dispatch of a SMBIOS table. + + The SMBIOS dispatcher state table is used to establish the dependency + order in which the SMBIOS tables are installed. This allows the SMBIOS + dispatcher to dispatch the dependent tables for installation before the + parent table is installed. + The SMBIOS_TABLE_DISPATCHER.Dependency[] field is used to establish the + dependency list. + Elements in the Dependency list are resolved by increasing index. Howeve= r, + all orders are equivalent as: + - the Parent SMBIOS table will only be installed once all dependencies + have been satisfied. + - no cyclic dependency is allowed. + The dependency list is terminated by SMTT_NULL. + + @param [in] TableType The SMBIOS table type to schedule for + dispatch. + @param [in] TableFactoryProtocol Pointer to the Table Factory Protocol + interface. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol Interface. + @param [in] SmbiosProtocol Pointer to the SMBIOS protocol. + @param [in] SmbiosTableInfo Pointer to the SMBIOS table Info. + @param [in] SmbiosTableCount Count of SMBIOS table info objects. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND Required object is not found. + @retval EFI_BAD_BUFFER_SIZE Size returned by the Configuration Manager + is less than the Object size for the + requested object. +**/ +EFI_STATUS +EFIAPI +DispatchSmbiosTable ( + IN CONST SMBIOS_TABLE_TYPE TableType, + IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST TableFactoryProto= col, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + IN EFI_SMBIOS_PROTOCOL *SmbiosProtocol, + IN CM_STD_OBJ_SMBIOS_TABLE_INFO *CONST SmbiosTableInfo, + IN CONST UINT32 SmbiosTableCount + ) +{ + EFI_STATUS Status; + UINTN Index; + SMBIOS_TABLE_DISPATCHER *Disp; + + DEBUG ((DEBUG_VERBOSE, "->DP %02d\n", TableType)); + Disp =3D &mSmBiosDispatcher[TableType]; + if (Disp->State < StPresent) { + DEBUG ((DEBUG_VERBOSE, "<-DP %02d : EFI_NOT_FOUND\n", TableType)); + return EFI_NOT_FOUND; + } + + if (Disp->State =3D=3D StDispatched) { + DEBUG ((DEBUG_VERBOSE, "<-DP %02d : EFI_ALREADY_STARTED\n", TableType)= ); + return EFI_ALREADY_STARTED; + } + + // Table is present so check the dependency. + for (Index =3D 0; Index < MAX_SMBIOS_DEPENDENCY; Index++) { + // Check if the dependency list is terminated by SMTT_NULL. + if (Disp->Dependency[Index] =3D=3D SMTT_NULL) { + break; + } + + Status =3D DispatchSmbiosTable ( + Disp->Dependency[Index], + TableFactoryProtocol, + CfgMgrProtocol, + SmbiosProtocol, + SmbiosTableInfo, + SmbiosTableCount + ); + if (EFI_ERROR (Status)) { + if ((Status =3D=3D EFI_ALREADY_STARTED) || (Status =3D=3D EFI_NOT_FO= UND)) { + // Some dependencies may already be satisfied + // as other tables may also have similar + // dependencies i.e. EFI_ALREADY_STARTED + // Or + // the dependent table may be optional + // and not provided i.e. EFI_NOT_FOUND. + continue; + } + + DEBUG ((DEBUG_VERBOSE, "<-DP %02d : Status =3D %d\n", TableType, Sta= tus)); + return Status; + } + } + + DEBUG ((DEBUG_VERBOSE, "DP %02d : Status =3D %d\n", TableType, Status)); + + // All dependencies satisfied - Install SMBIOS table + Disp->State =3D StDispatched; + // Find the SMBIOS table info matching the TableType + for (Index =3D 0; Index < SmbiosTableCount; Index++) { + if (SmbiosTableInfo[Index].TableType =3D=3D TableType) { + break; + } + } + + Status =3D BuildAndInstallSmbiosTable ( + TableFactoryProtocol, + CfgMgrProtocol, + SmbiosProtocol, + &SmbiosTableInfo[Index] + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ERROR: Failed to install SMBIOS Table." \ + " Id =3D %u Status =3D %r\n", + SmbiosTableInfo[Index].TableGeneratorId, + Status + )); + } + + DEBUG_PRINT_DISPATCHER_STATUS (FALSE); + DEBUG ((DEBUG_VERBOSE, "<-DP %0d\n", TableType)); + return Status; +} diff --git a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDis= patcher.h b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDisp= atcher.h new file mode 100644 index 0000000000000000000000000000000000000000..420e16f62d58cf295b27174ce78= ce9e2697918cb --- /dev/null +++ b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/SmbiosTableDispatcher= .h @@ -0,0 +1,133 @@ +/** @file + + Copyright (c) 2022, Arm Limited. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef SMBIOS_TABLE_DISPATCHER_H_ +#define SMBIOS_TABLE_DISPATCHER_H_ + +#include +#include + +/** + A SMBIOS Table Type from the OEM range reserved for terminating + the SMBIOS table dispatch dependency. + + Note: According to the SMBIOS specification, Table Types 0 + through 127 (7Fh) are reserved for and defined by the + SMBIOS specification. + Types 128 through 256 (80h to FFh) are available for system and + OEM-specific information. + + This Dynamic SMBIOS table generation implementation defines + TableType FFh as a NULL table which is used by the Dynamic + SMBIOS table dispatcher to terminate the dependency list. +*/ +#define SMTT_NULL 0xFF + +/** + A macro defining the maximum number of dependendant SMBIOS tables + represented by the SMBIOS table dispatcher. +*/ +#define MAX_SMBIOS_DEPENDENCY 5 + +/** + A macro defining the maximum table types handled by the SMBIOS + table dispatcher. +*/ +#define MAX_SMBIOS_TABLES (SMBIOS_TYPE_STRING_PROPERTY_INFORMATION + 1) + +/** + A helper macro to populate the SMBIOS table dispatcher table +*/ +#define SMBIOS_TABLE_DEP(TableId, Dep1, Dep2, Dep3, Dep4, Dep5) \ + { \ + TableId, \ + StUnknown, \ + { Dep1, Dep2, Dep3, Dep4, Dep5 } \ + } + +/** + An enum desribing the states of the SMBIOS table dispatcher. +*/ +typedef enum SmbiosTableState { + StUnknown, ///< Initial state. + StNotPresent, ///< SMBIOS table is not present for installation. + StPresent, ///< SMBIOS table is present for installation. + StDispatched ///< SMBIOS table generators have been dispatched. +} SMBIOS_TABLE_STATE; + +/** + A structure describing the dependencies for a SMBIOS table and + the dispatcher state information. +*/ +typedef struct SmBiosTableDispatcher { + /// SMBIOS Structure/Table Type + SMBIOS_TABLE_TYPE TableType; + /// SMBIOS dispatcher state + SMBIOS_TABLE_STATE State; + /// SMBIOS Structure/Table dependency list + /// The list is terminated using SMTT_NULL. + SMBIOS_TABLE_TYPE Dependency[MAX_SMBIOS_DEPENDENCY]; +} SMBIOS_TABLE_DISPATCHER; + +/** + Initialise the SMBIOS table dispatcher. + + @param SmbiosTableInfo Pointer to the list of SMBIOS tables to be insta= lled. + @param SmbiosTableCount Count of SMBIOS tables to be installed. +**/ +VOID +EFIAPI +InitSmbiosTableDispatcher ( + IN CM_STD_OBJ_SMBIOS_TABLE_INFO *SmbiosTableInfo, + IN UINT32 SmbiosTableCount + ); + +/** Schedule the dispatch of a SMBIOS table. + + The SMBIOS dispatcher state table is used to establish the dependency + order in which the SMBIOS tables are installed. This allows the SMBIOS + dispatcher to dispatch the dependent tables for installation before the + parent table is installed. + The SMBIOS_TABLE_DISPATCHER.Dependency[] field is used to establish the + dependency list. + Elements in the Dependency list are resolved by increasing index. Howeve= r, + all orders are equivalent as: + - the Parent SMBIOS table will only be installed once all dependencies + have been satisfied. + - no cyclic dependency is allowed. + The dependency list is terminated by SMTT_NULL. + + @param [in] TableType The SMBIOS table type to schedule for + dispatch. + @param [in] TableFactoryProtocol Pointer to the Table Factory Protocol + interface. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol Interface. + @param [in] SmbiosProtocol Pointer to the SMBIOS protocol. + @param [in] SmbiosTableInfo Pointer to the SMBIOS table Info. + @param [in] SmbiosTableCount Count of SMBIOS table info objects. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND Required object is not found. + @retval EFI_BAD_BUFFER_SIZE Size returned by the Configuration Manager + is less than the Object size for the + requested object. +**/ +EFI_STATUS +EFIAPI +DispatchSmbiosTable ( + IN CONST SMBIOS_TABLE_TYPE TableType, + IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST TableFactoryProto= col, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + IN EFI_SMBIOS_PROTOCOL *SmbiosProtocol, + IN CM_STD_OBJ_SMBIOS_TABLE_INFO *CONST SmbiosTableInfo, + IN CONST UINT32 SmbiosTableCount + ); + +#endif // SMBIOS_TABLE_DISPATCHER_H_ --=20 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#95341): https://edk2.groups.io/g/devel/message/95341 Mute This Topic: https://groups.io/mt/94410917/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-