From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.42919.1679492607751845182 for ; Wed, 22 Mar 2023 06:43:28 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=G6VfMPwa; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679492607; x=1711028607; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=BeGaXiZZ/Tlb/WRd9KahXNtaAXDRS1Gh5L2CHuFyCik=; b=G6VfMPwa0yzEYDnOWh9McelUppaNfj5KDikOCEo6n8wK/SRIKtNwq+K3 X0x71zHloLS9rqSZQLWVeYsGpqPRfoteTefxH7NL4t+h72eDYlubIzLWJ qf4T13TXuHNfHVigZ0jPa3V0Hdf7R3ZKFBdKzFkHEJYDK1o5rFTrfI71S gbAUthQyNt0ktR1EW5DlDMzBr1xBfca5Sf0WNIzy4g6ZOtuCyBkOEHMry LDl0WIqkgTMvNNi0AxL3W3TXbS87Psrtp/fX+7HMa8bSQK1WB8Ixe1X8K odZeEtONM8dhK/m7RMWn8t7njABRezrAjKk0XJYFoE4RhyYwBHO7aorx5 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="337934669" X-IronPort-AV: E=Sophos;i="5.98,282,1673942400"; d="scan'208";a="337934669" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 06:43:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="771038529" X-IronPort-AV: E=Sophos;i="5.98,282,1673942400"; d="scan'208";a="771038529" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by FMSMGA003.fm.intel.com with ESMTP; 22 Mar 2023 06:43:27 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 22 Mar 2023 06:43:26 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 22 Mar 2023 06:43:26 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 22 Mar 2023 06:43:26 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Wed, 22 Mar 2023 06:43:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jjK4mWSTWHE/K0c00lWJVRdrdd2rC/JGE+wm8YzKbHWjdHVd4TdKrHh3kQ0i7P0xwm055keWCHD3OlrqS+6zE7JrkmvasNsFuinRPu+GqKIUcimib/4vNeEUw1kgdm/J9FbNtXTgo78jcqhqZ4QBex7n+JmVqM7/8hQaRsCgD//hf54kuwzhOgnj7cZBAQGRz8zKMOPHQ1z6QVyCYIwEdduPO7NG2hXpYd+JxxyUmo4FZun9gd3aAPKlfd2haSUf4asVT2OQOu0GHsGy4Rd5MiS9mSnqmyMUIRRAJv0OydWOdaUG9gZRjMgGDKD2xBJOxA2YiVfP8QVhjDzpUwCy2w== 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=DUetZ5ezqIiY1WGPzMGb1wqMvu9K6mxQHPt/qZ9rad8=; b=ie37LsODI9aGL3PCNlrZIaBGm1i8OsTi3r+JbTxfgTteLN/6tFxbKzVOv71PZ4v+AiM+Qj0bcuBR0TVZyfRiX+GUncQBSPrQLJ8C1hug9zl3OE+U1IA9peLktQhY39twETj8cMIn7ODft/Uj/TfP5IMbisfwxk95K9fxcDnxPlgt8GGV9VrkjCZZZAI4o1ntndrVLPPHQ5Uzot5OJXWBqBrvkSsPKl/JHiHKjw+WqCggn9XoA3DngECiKd6B94cA8g9l+XtTVZU2KL9xF001SjOgpYAWipX9MXY51mxjZuNuANAynfC7BydtEkwhKrKzyMQyVW79kAuQ/u5gmpDWOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by SJ0PR11MB4784.namprd11.prod.outlook.com (2603:10b6:a03:2da::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Wed, 22 Mar 2023 13:43:23 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::c0c0:4b46:1dd4:80d6]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::c0c0:4b46:1dd4:80d6%5]) with mapi id 15.20.6178.037; Wed, 22 Mar 2023 13:43:23 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "Lakkimsetti, Subash" CC: "Zhang, Qi1" , "Kumar, Rahul R" Subject: Re: [edk2-devel] [PATCH v1 3/6] TGC2ACPI: Uninstall the TPM2 ACPI if present Thread-Topic: [edk2-devel] [PATCH v1 3/6] TGC2ACPI: Uninstall the TPM2 ACPI if present Thread-Index: AQHZXMPYMG43trHrJkuXyyadFfNGwa8GzsLg Date: Wed, 22 Mar 2023 13:43:21 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5872:EE_|SJ0PR11MB4784:EE_ x-ms-office365-filtering-correlation-id: c4a98631-0e64-4d88-34a7-08db2adb6730 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uydENWZ62dLNRT5QrIkiu9rU/lQ8Ug24DvXjMdFT5yRN7n4qQZm90IX2oFIh0JJJOUIWj4SQN9jOJeJML6nTHlt80Ot+pdOaQ7GwqyUmT5CAyw1PL4lPStDAmdloO60yQZg7qpzKWJYnKd8QzLcNc9ifemV2bzNmLzWvPSNlMU5REigOyev+Vt/gW8RzcuY5jIO6FLnz+zY9g0ZBuFKQsEdh0Id+xCe4zy4/iZsoQq6onc4Ghh4Tto39JinXA3i0i4taIrB/vsnvKpGhdfmqXReM2GfUUcrB12P7ySFLfVNFFC+uo6y4q5JxhGpvTQqLCeFZ4Sv+cShJ0MGjmSpCQH8zIgdN/oER9Gqq9h9Gx+dTiICEsSSoUrJqKdbtqb4FBmlg/+Mal+6d24L7cXw3uEbopHhaf2UZq0/31Osv4EDbe4DBfC3EJmNnzbSp4t2vH/XDL+4VI4Asi9keEfbgLeakhNzdadmGwC2+q31O23ZMYPibZaxXoUE/ONhogfjOFgXAcUXVzCsbShJ4u4Vki6gyQTpnB3OG9G2KX+TZCMbJs18W+k4+Gc5CoU4xLLYLbjkQXdT3+qkXRoUXtIlGxjMe26fxHck8UbpZbBsKAwhKfZLxJ38P/rcacNwD/S7pRvX7LejeH3mXH9QGtvzaD/TL59J9IL33Om47dgevw2EC8avK/o5n3Fg4CGFowBTd+tAHxw/Cxsk2uvb1Hopwe8l5Ijj69vfyzVrQ3ImFaPQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(376002)(346002)(39860400002)(396003)(136003)(451199018)(38100700002)(478600001)(86362001)(316002)(19627235002)(55016003)(33656002)(110136005)(54906003)(2906002)(66946007)(4326008)(5660300002)(6636002)(66446008)(66476007)(41300700001)(64756008)(8936002)(76116006)(66556008)(52536014)(122000001)(7696005)(83380400001)(8676002)(82960400001)(26005)(107886003)(71200400001)(9686003)(186003)(6506007)(53546011)(38070700005)(66899018)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?BIZSQVfu9OdFMeVmDlAoN1Ko3P7JEDBor5xW5nDx/1OijSuXqE92VamybMn/?= =?us-ascii?Q?DqHGQL4dcyQpD/WosW/VG39oTltDW3zDDPH/ZBqDxSTxtpDkyDGBkLUrkXUe?= =?us-ascii?Q?Q47cj2hBUZN2XaaIc8BKXsYF/xFQ51BIqI2R1gVYrWJlZFCAfefR1l5ij9t4?= =?us-ascii?Q?9oDYVmvUyNpZN9kxzrZIr+pCmQyL9ikBn37cCw5F4U1DMVj3pObZckCVQYKY?= =?us-ascii?Q?Z61q9ZYmhyj988A2K4HEvgMXo3br+kFdctWUnoEXfrPVPGCf896vX5zRUaei?= =?us-ascii?Q?542gl/Aez6oJKKhs+2qP2WzPQ2mP2qxvoStBb0mfw3ucVRgXIiJFK1hSbF7e?= =?us-ascii?Q?ORsdRDun2+YsF+P80Wblv+4YJToZ8yGSwn251l8XhqwftkK9YkdeniKJY+bN?= =?us-ascii?Q?6BSrlXOP6bn280Ks+oo5MyegRvmLEdV0J6mW6tbIQanYSgoXlUjR5pb5jbfP?= =?us-ascii?Q?txhR9nV8vTEvZPcAZsQy6rUk94yBvM8RvFv/gAgEyUAnh7jON6W7XmRf89Nq?= =?us-ascii?Q?E2kVSLAy7Iew/FJRI7A6bYbwBk2De69KzGiNXQi/K2PF7HKSBuQT1qbDervf?= =?us-ascii?Q?L0olcuhnfUo18sdx2djgiA5z22c/0ur3yX0uYxXSvSHtClb3/z0mdt26mixZ?= =?us-ascii?Q?78r22yQZ82j0Ud8xJBEBlQ/sQ0NU1La2sCbY28bwzxA+Ccr2ZuOMfm/LR5el?= =?us-ascii?Q?axTDThbuwsbUsXydQmyZnLkA3wElsdu9K/HqLM9azsFox0fHvx2P1/merQsO?= =?us-ascii?Q?PTqYk1uizAK9V4XjsCqpr6pu2IikaV4zFSVQ/4stE3NnVrCeWQWUIGmavr+X?= =?us-ascii?Q?ThMvAftJFfZYlymcnbTaU5JNhaSwnIPZq75rK9ezLwXTTIycidspMJqG8XPL?= =?us-ascii?Q?cpUAqckiJ3kvWOzJdCNMhR0Rl+wk7gWMagRNs0gbWPLJJywdJvvt6fBGxmxJ?= =?us-ascii?Q?b6ZkE8g/eOC7xb6NobJInuWjt03Rgz866hWuPudC0noJb5tlJESwBrv5l65N?= =?us-ascii?Q?9qNcK6QBpJH+puWS8SvSDjMvZAPiitaXeEMKFoIGLLRk/W5a+WWsA5RVU4o0?= =?us-ascii?Q?UXlhtTDSRdJQpY4EDE/7mh6kvvMaBVknLPBpq/ORieFvZ1UCkhT5ypeNdWD1?= =?us-ascii?Q?19TBVxm5Fl4Bih3Gxnxraaz9tAwdAESh4233LDKmiQ3XtT1jYC7rfTnHYDoC?= =?us-ascii?Q?leCOS8oEsSVUsLQ9177KShxkIzirr6cIMxvRT8TlUGHSYRpX++SKcxkrF9+C?= =?us-ascii?Q?g1/aILYCQvr948H6Yj6A2zb1QPGLyrOsmZREqIhwHVc+y8loEXfNF0JzFb6a?= =?us-ascii?Q?njg8y8fHZketdoPYrQEK+CzYQsREyBaioNUcHZ/IKR+qvqRx4SJdfq9lFi2R?= =?us-ascii?Q?LVJ98C+e7Im19BmBNLrzLqqQ0qugWIrpYNvWrr8TJjrTBq+tNsVA5fs1Zpff?= =?us-ascii?Q?hEjf/5CfY+yZhQEQpvS/2+eeY0db4QEAwRlmKVnTiklsbp/2dcY3tFSMFuJb?= =?us-ascii?Q?Wib2z9ywdtltCpJ/tvDKm8MR/8izBcccsDvzefLwP+Rfr3rIDHJRjMzYC2mx?= =?us-ascii?Q?EtzSIyWtvNeV0z4dE292C5t+JtSFo1K0nDZxsYpn?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4a98631-0e64-4d88-34a7-08db2adb6730 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Mar 2023 13:43:22.0005 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GxaBLZfcueBnFIAilbwsNUb/4zPduzXPdcJGGzT2woFEhB9pgotDFppdK5KxdULKPx8AtaBxNGA2zcjVVpWR+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4784 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Question: Why not uninstall it in the universal payload package? or even no= t populate it? > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Subash > Lakkimsetti > Sent: Wednesday, March 22, 2023 1:59 PM > To: devel@edk2.groups.io > Cc: Lakkimsetti, Subash ; Zhang, Qi1 > ; Kumar, Rahul R > Subject: [edk2-devel] [PATCH v1 3/6] TGC2ACPI: Uninstall the TPM2 ACPI if > present >=20 > From: Subash Lakkimsetti >=20 > Bootloader supports multiple payload and TPM2 ACPI tables are updated > at bootloader phase. When UEFI is used payload these will be duplicates. > The tables are to be uninstalled before updating the TCG2ACPI tables > to avoid duplicates. >=20 > Cc: Qi Zhang > Cc: Rahul Kumar > Signed-off-by: Subash Lakkimsetti > --- > SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c | 251 > ++++++++++++++++++++++++++ > SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.inf | 3 + > 2 files changed, 254 insertions(+) >=20 > diff --git a/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c > b/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c > index e8822cbeb0..4b35796ba7 100644 > --- a/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c > +++ b/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c > @@ -39,6 +39,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include >=20 > #include >=20 > #include >=20 > +#include >=20 > +#include >=20 >=20 >=20 > // >=20 > // Physical Presence Interface Version supported by Platform >=20 > @@ -867,6 +869,245 @@ PublishTpm2 ( > return Status; >=20 > } >=20 >=20 >=20 > +/** >=20 > + Uninstall TPM2 SSDT ACPI table >=20 > + >=20 > + This performs uninstallation of TPM2 SSDT tables published by >=20 > + bootloaders. >=20 > + >=20 > + @retval EFI_SUCCESS The TPM2 ACPI table is uninstalled successfu= lly if > found. >=20 > + @retval Others Operation error. >=20 > + >=20 > +**/ >=20 > +EFI_STATUS >=20 > +UnInstallTpm2SSDTAcpiTables ( >=20 > + ) >=20 > +{ >=20 > + UINTN TableIndex; >=20 > + UINTN TableKey; >=20 > + EFI_ACPI_TABLE_VERSION TableVersion; >=20 > + VOID *TableHeader; >=20 > + EFI_STATUS Status; >=20 > + EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol; >=20 > + EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol; >=20 > + CHAR8 TableIdString[8]; >=20 > + UINT64 TableIdSignature; >=20 > + >=20 > + // >=20 > + // Determine whether there is a TPM2 SSDT already in the ACPI table. >=20 > + // >=20 > + Status =3D EFI_SUCCESS; >=20 > + TableIndex =3D 0; >=20 > + TableKey =3D 0; >=20 > + TableHeader =3D NULL; >=20 > + mAcpiTableProtocol =3D NULL; >=20 > + mAcpiSdtProtocol =3D NULL; >=20 > + >=20 > + // >=20 > + // Locate the EFI_ACPI_TABLE_PROTOCOL. >=20 > + // >=20 > + Status =3D gBS->LocateProtocol ( >=20 > + &gEfiAcpiTableProtocolGuid, >=20 > + NULL, >=20 > + (VOID **)&mAcpiTableProtocol >=20 > + ); >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "UnInstallTpm2SSDTAcpiTables: Cannot locate the EFI ACPI Table > Protocol \n " >=20 > + )); >=20 > + return Status; >=20 > + } >=20 > + >=20 > + // >=20 > + // Locate the EFI_ACPI_SDT_PROTOCOL. >=20 > + // >=20 > + Status =3D gBS->LocateProtocol ( >=20 > + &gEfiAcpiSdtProtocolGuid, >=20 > + NULL, >=20 > + (VOID **)&mAcpiSdtProtocol >=20 > + ); >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "UnInstallTpm2SSDTAcpiTables: Cannot locate the EFI ACPI Sdt Proto= col, > " >=20 > + "\n" >=20 > + )); >=20 > + return Status; >=20 > + } >=20 > + >=20 > + while (!EFI_ERROR (Status)) { >=20 > + Status =3D mAcpiSdtProtocol->GetAcpiTable ( >=20 > + TableIndex, >=20 > + (EFI_ACPI_SDT_HEADER **)&TableHeader, >=20 > + &TableVersion, >=20 > + &TableKey >=20 > + ); >=20 > + >=20 > + if (!EFI_ERROR (Status)) { >=20 > + TableIndex++; >=20 > + >=20 > + if (((EFI_ACPI_SDT_HEADER *)TableHeader)->Signature =3D=3D > SIGNATURE_32 ('S', 'S', 'D', 'T')) { >=20 > + CopyMem ((VOID *)TableIdString, (VOID *)((EFI_ACPI_SDT_HEADER > *)TableHeader)->OemTableId, sizeof (TableIdString)); >=20 > + >=20 > + TableIdSignature =3D SIGNATURE_64 ( >=20 > + TableIdString[0], >=20 > + TableIdString[1], >=20 > + TableIdString[2], >=20 > + TableIdString[3], >=20 > + TableIdString[4], >=20 > + TableIdString[5], >=20 > + TableIdString[6], >=20 > + TableIdString[7] >=20 > + ); >=20 > + >=20 > + if (TableIdSignature =3D=3D SIGNATURE_64 ('T', 'p', 'm', '2', 'T= ', 'a', 'b', 'l')) { >=20 > + DEBUG ((DEBUG_INFO, "Found Tpm2 SSDT Table for Physical > Presence\n")); >=20 > + break; >=20 > + } >=20 > + } >=20 > + } >=20 > + } >=20 > + >=20 > + if (!EFI_ERROR (Status)) { >=20 > + // >=20 > + // A TPM2 SSDT is already in the ACPI table. >=20 > + // >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "A TPM2 SSDT is already exist in the ACPI Table.\n" >=20 > + )); >=20 > + >=20 > + // >=20 > + // Uninstall the origin TPM2 SSDT from the ACPI table. >=20 > + // >=20 > + Status =3D mAcpiTableProtocol->UninstallAcpiTable ( >=20 > + mAcpiTableProtocol, >=20 > + TableKey >=20 > + ); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG ((DEBUG_INFO, "UnInstall Tpm2SSDTAcpiTables failed \n ")); >=20 > + >=20 > + return Status; >=20 > + } >=20 > + } >=20 > + >=20 > + return EFI_SUCCESS; >=20 > +} >=20 > + >=20 > +/** >=20 > + Uninstall TPM2 table >=20 > + >=20 > + This performs uninstallation of TPM2 tables published by >=20 > + bootloaders. >=20 > + >=20 > + @retval EFI_SUCCESS The TPM2 table is uninstalled successfully i= f its > found. >=20 > + @retval Others Operation error. >=20 > + >=20 > +**/ >=20 > +EFI_STATUS >=20 > +UnInstallTpm2Tables ( >=20 > + ) >=20 > +{ >=20 > + UINTN TableIndex; >=20 > + UINTN TableKey; >=20 > + EFI_ACPI_TABLE_VERSION TableVersion; >=20 > + VOID *TableHeader; >=20 > + EFI_STATUS Status; >=20 > + EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol; >=20 > + EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol; >=20 > + >=20 > + // >=20 > + // Determine whether there is a TPM2 SSDT already in the ACPI table. >=20 > + // >=20 > + Status =3D EFI_SUCCESS; >=20 > + TableIndex =3D 0; >=20 > + TableKey =3D 0; >=20 > + TableHeader =3D NULL; >=20 > + mAcpiTableProtocol =3D NULL; >=20 > + mAcpiSdtProtocol =3D NULL; >=20 > + >=20 > + // >=20 > + // Locate the EFI_ACPI_TABLE_PROTOCOL. >=20 > + // >=20 > + Status =3D gBS->LocateProtocol ( >=20 > + &gEfiAcpiTableProtocolGuid, >=20 > + NULL, >=20 > + (VOID **)&mAcpiTableProtocol >=20 > + ); >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "UnInstallTpm2Tables: Cannot locate the EFI ACPI Table Protocol \n= " >=20 > + )); >=20 > + return Status; >=20 > + } >=20 > + >=20 > + // >=20 > + // Locate the EFI_ACPI_SDT_PROTOCOL. >=20 > + // >=20 > + Status =3D gBS->LocateProtocol ( >=20 > + &gEfiAcpiSdtProtocolGuid, >=20 > + NULL, >=20 > + (VOID **)&mAcpiSdtProtocol >=20 > + ); >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "UnInstallTpm2Tables: Cannot locate the EFI ACPI Sdt Protocol, " >=20 > + "\n" >=20 > + )); >=20 > + return Status; >=20 > + } >=20 > + >=20 > + while (!EFI_ERROR (Status)) { >=20 > + Status =3D mAcpiSdtProtocol->GetAcpiTable ( >=20 > + TableIndex, >=20 > + (EFI_ACPI_SDT_HEADER **)&TableHeader, >=20 > + &TableVersion, >=20 > + &TableKey >=20 > + ); >=20 > + >=20 > + if (!EFI_ERROR (Status)) { >=20 > + TableIndex++; >=20 > + >=20 > + if (((EFI_ACPI_SDT_HEADER *)TableHeader)->Signature =3D=3D > EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE ) { >=20 > + DEBUG ((DEBUG_INFO, "Found Tpm2 Table ..\n")); >=20 > + break; >=20 > + } >=20 > + } >=20 > + } >=20 > + >=20 > + if (!EFI_ERROR (Status)) { >=20 > + // >=20 > + // A TPM2 SSDT is already in the ACPI table. >=20 > + // >=20 > + DEBUG (( >=20 > + DEBUG_INFO, >=20 > + "A TPM2 table is already exist in the ACPI Table.\n" >=20 > + )); >=20 > + >=20 > + // >=20 > + // Uninstall the origin TPM2 SSDT from the ACPI table. >=20 > + // >=20 > + Status =3D mAcpiTableProtocol->UninstallAcpiTable ( >=20 > + mAcpiTableProtocol, >=20 > + TableKey >=20 > + ); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG ((DEBUG_INFO, "UnInstall Tpm2Tables failed \n ")); >=20 > + >=20 > + return Status; >=20 > + } >=20 > + } >=20 > + >=20 > + return EFI_SUCCESS; >=20 > +} >=20 > + >=20 > /** >=20 > The driver's entry point. >=20 >=20 >=20 > @@ -894,6 +1135,16 @@ InitializeTcgAcpi ( > return EFI_UNSUPPORTED; >=20 > } >=20 >=20 >=20 > + // >=20 > + // Bootloader might pulish the TPM2 ACPT tables >=20 > + // Uninstall TPM tables if it exists >=20 > + // >=20 > + Status =3D UnInstallTpm2SSDTAcpiTables (); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + >=20 > + Status =3D UnInstallTpm2Tables (); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + >=20 > Status =3D PublishAcpiTable (); >=20 > ASSERT_EFI_ERROR (Status); >=20 >=20 >=20 > diff --git a/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.inf > b/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.inf > index f1c6ae5b1c..7e639b0522 100644 > --- a/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.inf > +++ b/SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.inf > @@ -63,10 +63,13 @@ > gEfiTpmDeviceInstanceTpm20DtpmGuid ## PRODU= CES > ## GUID # TPM device identifier >=20 > gTpmNvsMmGuid ## CONSU= MES >=20 > gEdkiiPiSmmCommunicationRegionTableGuid ## CONSU= MES >=20 > + gEfiAcpiTableGuid >=20 >=20 >=20 > [Protocols] >=20 > gEfiAcpiTableProtocolGuid ## CONSU= MES >=20 > gEfiMmCommunicationProtocolGuid ## CONSU= MES >=20 > + gEfiAcpiSdtProtocolGuid ## CONSUMES >=20 > + >=20 >=20 >=20 > [FixedPcd] >=20 > gEfiSecurityPkgTokenSpaceGuid.PcdSmiCommandIoPort ## > CONSUMES >=20 > -- > 2.39.1.windows.1 >=20 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#101580): > https://edk2.groups.io/g/devel/message/101580 > Mute This Topic: https://groups.io/mt/97777996/1772286 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [jiewen.yao@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D >=20