From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 499ED740035 for ; Wed, 15 May 2024 01:57:06 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=0iMY1kyCk2beYH64sut/oOpZGGyM4Z6EDXGGQa6Ysng=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1715738224; v=1; b=NBHM7d4KUiPpn1Xs2S0DCojKr3FrLZlYFM0D5DtJIvCCSyK+XBtx8AfKhDzbyuW0F8w4ifCQ yuCPuEdnU2Q5YPxd1UYQWhy7oO1dYGLFWlxRndUjF2zyHWAmcDYM1y7iU0+fvLGbO8Y/h/CAzWi Mb9tJzBqUsv+xnxmIBpJGeeiYXWt1pfmo2T7O7gNucDeymLkCXaVzwWRyFMEP4qMgzGlwMkPwdy RDY51cKsZi1GcZrnqpJvRyr4fG9OfqrRYTWN/BoplclmbtAeWe1q2KDGKknkw/k4bbQRoYfYLd5 Nc9F4IhDfs2hvwsjrxGgYCbh5qr7fOv/g4Q4rcgfyUQMQ== X-Received: by 127.0.0.2 with SMTP id J8VrYY7687511xKmBACS1YOW; Tue, 14 May 2024 18:57:04 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by mx.groups.io with SMTP id smtpd.web10.4826.1715738223419580808 for ; Tue, 14 May 2024 18:57:03 -0700 X-CSE-ConnectionGUID: 9cXCnCuOSo+Bfwf1QkPl8w== X-CSE-MsgGUID: YkHEISy2Rl2gXaAfVTUZGQ== X-IronPort-AV: E=McAfee;i="6600,9927,11073"; a="15550529" X-IronPort-AV: E=Sophos;i="6.08,160,1712646000"; d="scan'208";a="15550529" X-Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2024 18:57:03 -0700 X-CSE-ConnectionGUID: JZDPHgUgTi6u+aH6DTcf2g== X-CSE-MsgGUID: bXaZEpnfSDCpNExc6h13Tg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,160,1712646000"; d="scan'208";a="31466908" X-Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orviesa008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 May 2024 18:57:03 -0700 X-Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 14 May 2024 18:57:01 -0700 X-Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 14 May 2024 18:57:01 -0700 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 14 May 2024 18:57:01 -0700 X-Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 14 May 2024 18:57:01 -0700 X-Received: from DM4PR11MB5487.namprd11.prod.outlook.com (2603:10b6:5:39f::22) by IA1PR11MB6074.namprd11.prod.outlook.com (2603:10b6:208:3d6::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 01:56:58 +0000 X-Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6150:d792:f331:4e3f]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6150:d792:f331:4e3f%5]) with mapi id 15.20.7587.026; Wed, 15 May 2024 01:56:58 +0000 From: "VincentX Ke" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Gao, Liming" , "Dong, Eric" , "Sinha, Ankit" Subject: Re: [edk2-devel] [PATCH v8] MinPlatformPkg: Update HWSignature filed in FACS Thread-Topic: [PATCH v8] MinPlatformPkg: Update HWSignature filed in FACS Thread-Index: AQHZijzelgndqCWtmk+P25P8R2eHeLGZnBCAgAAkgLA= Date: Wed, 15 May 2024 01:56:58 +0000 Message-ID: References: <20230519102928.155-1-vincentx.ke@intel.com> In-Reply-To: Accept-Language: en-US, zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5487:EE_|IA1PR11MB6074:EE_ x-ms-office365-filtering-correlation-id: ccba2e66-7f18-4ed9-56fd-08dc74824e1b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: =?us-ascii?Q?VIoA0guEzKQOH/5+Y/s8WGLaZNkpP2/REtM5k6bTDOqoe6BzX52UXlhVmvzh?= =?us-ascii?Q?P57JkE1PBCDcFLTlkYq5T+Kr4YvluhKcs/PIQmmYFApEsR53pytOHfyg3kCm?= =?us-ascii?Q?rYsSIMocmFTsJFGq6nUHsiX9iIFSvGNUfqp6XfMiFf6Saq2CgoDrAZf6J4Uq?= =?us-ascii?Q?le4peHMqMo8Vdn9E9mHkfOaRRs1k9WB95jZB4P3SKnuVZWTvC9OTN9oCKqIp?= =?us-ascii?Q?XBFLY87a39Onn2SQJZa/pJKmqQLoIR0piflvXA0GS3WoaMVtpY4KD3nJAEa2?= =?us-ascii?Q?dLkSmxtalnuCeVgyfvc48WCo7CxkFjufbbbcS6ZiWUd60nuGlUINvLBGa6O3?= =?us-ascii?Q?7DrmMXql0DuWLbS/EgcphWuK1aJi+3HtZ6l+iPFnd/SIMOrxXVaqONaqbqI2?= =?us-ascii?Q?/nyeWmhFQ6llq6K1z/26cOh4rrsos8fsSEP2mQFXLzuQWiW4jY+B4jjbzUYO?= =?us-ascii?Q?cVMznE5XKPBLAfHHkSjBhC9vAmMykI5+6YWMCDKLn6eiS5DR6+e43csmBNQ2?= =?us-ascii?Q?TLWfNxuFXO0DrMnYWvkpYXJ2WxY1b29ddQ1MsrcHLLetn1GR6On+ooj6vokf?= =?us-ascii?Q?MxKf9e5WeiGaN1OKWRu2Zx6jMkWqiEkAJmP7pTUVaXhFUshRPE1GfbxOjpKg?= =?us-ascii?Q?ckoZS4zmdydfZmXhxa05glYG+tR/IE4N8bSusSpopiCKPTwMifjIxq4elunl?= =?us-ascii?Q?eKwVkS4f6rUfmzLVOuoE2hpwJP5yvaatLcH7R5Eqeyh/OgcUmWEauvKoGgbd?= =?us-ascii?Q?Mc4EiLYQVDRIssqTNnE/KbL8nhLvs4nZh6USRhWOwPsLsCseld9iCLTz9GOy?= =?us-ascii?Q?BHxWwjJ4qhkwytIUN2iEP1xOJ0wotLBO+nU/m9i1ENKndTGj/jFxZseCsKsV?= =?us-ascii?Q?z/pOFCd+zysi4z9iYLNwFqy85d+kSHxjJ23JgW2C2iIaD0C8MKGNatOUIgEd?= =?us-ascii?Q?jaDWVFV1DZ31ciI+AE1C+k/X8hdfIeeQW5NoduDQPy8Ytx5y6azQSEbU+qpc?= =?us-ascii?Q?rCvU1ttZJz6s9oRkzOpRrnqXOpEvTzL7wSDI2mVRFgvjfP1g4cp+BvYNKDTi?= =?us-ascii?Q?4ZztZ64RTWbNDHVQEYCHp5FEp/uyB51oBQ9Rpiiwjw5VovqSF3v0t6To61d1?= =?us-ascii?Q?aKhkiasHCZAopKu3BWUR0A+sKS/UeiBq2hN6tHUNcVR/oA6E81/pbKjUI+7j?= =?us-ascii?Q?5rENQxugCf4qh8f18ywc9LweVDmEC2jXv/3ljZGmgBV0exKxIcmpoMNAjqIl?= =?us-ascii?Q?bwm6hy1i2kVBsB7R9zYIPBj5a3LSe7KIJVdyCRQtKBpBu0FSgQm1WyWVqf9M?= =?us-ascii?Q?QPM=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?FiSdKgb+DwTHlBrCXey04fEUY9S7nL0+bwh1QUnzmD30rZ5HjsNZ0Chf3+AD?= =?us-ascii?Q?AAfrDIVw/mhtMFD7RO5xGz8e0+rqgKGWizq7yHCeSDXOJb+u1c+3fjxbtYI5?= =?us-ascii?Q?JeMG9gcYVNw/aKnJT+n+0gwHq+i1k6ExhIASxjt+COo5Im15Ygr/6Vj3EInx?= =?us-ascii?Q?J8FBG+96YRBC0yYPPFEwc/+wF5L/63WGLMBamHhisV1unpGL87eaI2Et7amg?= =?us-ascii?Q?sMOCyPO/PVWNZ5JapevWmIw5OnrZCo8vSryDDJ0JJ599HantWeBrISE4l+Ru?= =?us-ascii?Q?cXgMBQQaoKhN5FTktDbq6AEEuCozZWdKpUOojqFUPzNQ4NPIq9RPV+bP8uK2?= =?us-ascii?Q?uigWIeM52kLgxV9S0q67qASPTbX5teJ8BY7PG9iOH/wsQgt1gkThOYO0o9UV?= =?us-ascii?Q?hTZPppJfwukYENNldxd1G+mHYAkjqypggiADYHf/qDtfHOxCFkL1/6q8jcYq?= =?us-ascii?Q?OPosPtE4Gq0vzemWkjG1W48VettptuqtWWZUx4Wbp1CCEAwQhznYZb5PES+B?= =?us-ascii?Q?r1FqFqkGgULTgz8jnXMfV+xz/ZQ3zoplLtf3MtT9LJCH4kDra0uj9iwjAFKZ?= =?us-ascii?Q?JDBNAJTLT5epCwM4wtvw44QoenlCt8nBrFy4CeG01wp0VpLdiUnRDI6/7mfj?= =?us-ascii?Q?T9ovltHF3Nss5Gu7Ff25Ko9TI1iTf5WCimNtehu7IAmW1EA/rV+idJejT1HB?= =?us-ascii?Q?7pkXQOvq60a12kFpJkKHf1tcQN/2r/dGIBemqcb5a/WDuUmrsa0g3PkgVTV0?= =?us-ascii?Q?oj/mVHMwU6Y4pXx7ryq1+kL2eShFR/sfbF1HCjnrtgr5Yicz7eu8IiBebEaX?= =?us-ascii?Q?iPlUhUObgF2olVE9pQFdxgXiy3yUuwWUAnwBR1pdH7YnEirWbmPZJtwKvbqk?= =?us-ascii?Q?N0XnSkaStWJ85AEgTB2QQwcUturUy5u5Zu6yFGnBhnp79LRpyVKeGl5ZG7Yu?= =?us-ascii?Q?Ma74e8S3GpyKbnMXsnf2SUR7GexFBvMz5SGdAT/QILPITmftK8U3X/tuZjqw?= =?us-ascii?Q?ebKI5lOqEhFgf3f31pIuzu8OMfQNyY1v4vJ3tKeIMY48thU1qwcXxPV/Pyu1?= =?us-ascii?Q?ApxTpgDHDk3SuT1FhvLo8n6vLwBBU3tbffn9xEooA9ohO6P6DvBvjLGZvTCN?= =?us-ascii?Q?OBEFso/xaDF+SUOfMYIX5yfYB0pZop3OHpKjqYifo0NCMj6pWcxG2P/ehgR7?= =?us-ascii?Q?3ZcnR+iZHLSQWwRgTQILWpGkmZ//LMu/k7QsO6OFSAnhsl7WNSu2uqdt/Rxc?= =?us-ascii?Q?oYz8tOeEQUlmZQ34MUrqXYBQcfrCEd1A6SoScTnKCfYVNvXPrlGIuCyTt8+w?= =?us-ascii?Q?UbUi8iF5hBjWACylmR0Ezckej8PnWynp330aqDU5WB6xbtw77jKiKMIxBEPV?= =?us-ascii?Q?iWqywJr3NxuUTUrKdApk+g6gj/scMzdzYRaouJFOp2+2RmtaxHjbggEnRHfW?= =?us-ascii?Q?7uSU6bMzrKx/ZmeOKe3nB22bBTL2Q519aCC7/kZc3cFyXh9w5jKjO5NymB9g?= =?us-ascii?Q?nkBQ253Iv62dRlV7IEVM/AA0P+HTAYVj9Ad5lbLQyBLu0qDYC++/1JkxaHkf?= =?us-ascii?Q?s8KChk7Eoa3Hgz9vxMVb9WPyRATbOZ+iaM1KvMBd?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccba2e66-7f18-4ed9-56fd-08dc74824e1b X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 01:56:58.4649 (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: kKTZ3qDmQHyIKkFtltqlPyNrhcUERp/HZuQomVVuLAYDtRS+EfrMVgQ5cF1BCLbbDM4CW8+EGb3GOCG6jDnE3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6074 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Tue, 14 May 2024 18:57:03 -0700 Resent-From: vincentx.ke@intel.com Reply-To: devel@edk2.groups.io,vincentx.ke@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 7DtURnW165ytOqff6iDErKJRx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=NBHM7d4K; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io Hi, Nate The patch has been merged on May 31, 2023 with patch v10. For details, please check below two links. Thanks. https://bugzilla.tianocore.org/show_bug.cgi?id=3D4428 https://github.com/tianocore/edk2-platforms/commit/1a7bd150d39007bfb72c4727= feda3184c23efe96 Best Regards, Vincent -----Original Message----- From: Desimone, Nathaniel L =20 Sent: Wednesday, May 15, 2024 7:42 AM To: Ke, VincentX ; devel@edk2.groups.io Cc: Chiu, Chasel ; Gao, Liming ; Dong, Eric ; Sinha, Ankit Subject: RE: [PATCH v8] MinPlatformPkg: Update HWSignature filed in FACS Importance: High Hi Vincent, This patch has merge conflicts with the newest edk2-platforms. Is this chan= ge still needed? If yes, please rebase it to latest and re-send the patch. Thank You, Nate > -----Original Message----- > From: Ke, VincentX > Sent: Friday, May 19, 2023 3:29 AM > To: devel@edk2.groups.io > Cc: Ke, VincentX ; Chiu, Chasel=20 > ; Desimone, Nathaniel L=20 > ; Oram, Isaac W=20 > ; Gao, Liming ;=20 > Dong, Eric ; Sinha, Ankit > Subject: [PATCH v8] MinPlatformPkg: Update HWSignature filed in FACS >=20 > From: VincentX Ke >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4428 >=20 > Calculating CRC based on each ACPI table. > Update HWSignature filed in FACS based on CRC while ACPI table changed. >=20 > Change-Id: Ic0ca66ff10cda0fbcd0683020fab1bc9aea9b78c > Signed-off-by: VincentX Ke > Cc: Chasel Chiu > Cc: Nate DeSimone > Cc: Isaac Oram > Cc: Liming Gao > Cc: Eric Dong > Cc: Ankit Sinha > Signed-off-by: VincentX Ke > --- > Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c | 299 > +++++++++++++++----- > Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf | 1 + > 2 files changed, 233 insertions(+), 67 deletions(-) >=20 > diff --git=20 > a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c > index 2f2c96f907..5005d1a524 100644 > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c > @@ -1191,98 +1191,263 @@ PlatformUpdateTables ( } >=20 >=20 >=20 > /** >=20 > - This function calculates RCR based on PCI Device ID and Vendor ID=20 > from the devices >=20 > - available on the platform. >=20 > - It also includes other instances of BIOS change to calculate CRC=20 > and provides as >=20 > - HWSignature filed in FADT table. >=20 > + This function calculates CRC based on each offset in the ACPI table. >=20 > + >=20 > + @param[in] Table The ACPI table required to calculate CRC. >=20 > + >=20 > + @retval CRC A pointer to allocate UINT32 that >=20 > + contains the CRC32 data. >=20 > +**/ >=20 > +UINT32 >=20 > +AcpiTableCrcCalculator ( >=20 > + IN EFI_ACPI_COMMON_HEADER *Table >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status; >=20 > + UINT32 CRC; >=20 > + >=20 > + Status =3D EFI_SUCCESS; >=20 > + CRC =3D 0; >=20 > + >=20 > + // >=20 > + // Calculate CRC value. >=20 > + // >=20 > + if (Table->Signature =3D=3D > EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) { >=20 > + // >=20 > + // Zero HardwareSignature field before Calculating FACS CRC >=20 > + // >=20 > + ((EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE *)Table)- > >HardwareSignature =3D 0; >=20 > + } >=20 > + >=20 > + Status =3D gBS->CalculateCrc32 ((UINT8 *)Table, (UINTN)Table->Length, > &CRC); >=20 > + return CRC; >=20 > +} >=20 > + >=20 > +/** >=20 > + This function count ACPI tables in RSDT/XSDT and return the result. >=20 > + >=20 > + @param[in] Sdt ACPI XSDT/RSDT. >=20 > + @param[in] TablePointerSize Size of table pointer: >=20 > + 4(RSDT) or 8(XSDT). >=20 > + >=20 > + @retval TableCount The total number of ACPI tables in >=20 > + RSDT or XSDT. >=20 > +**/ >=20 > +UINTN >=20 > +CountTableInSDT ( >=20 > + IN EFI_ACPI_DESCRIPTION_HEADER *Sdt, >=20 > + IN UINTN TablePointerSize >=20 > + ) >=20 > +{ >=20 > + UINTN Index; >=20 > + UINTN TableCount; >=20 > + UINTN EntryCount; >=20 > + UINT64 EntryPtr; >=20 > + UINTN BasePtr; >=20 > + EFI_ACPI_COMMON_HEADER *Table; >=20 > + EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *FadtPtr; >=20 > + >=20 > + EntryCount =3D (Sdt->Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / > TablePointerSize; >=20 > + BasePtr =3D (UINTN)(Sdt + 1); >=20 > + FadtPtr =3D NULL; >=20 > + >=20 > + for (Index =3D 0, TableCount =3D 0; Index < EntryCount; Index++) { >=20 > + EntryPtr =3D 0; >=20 > + Table =3D NULL; >=20 > + CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * TablePointerSize), > TablePointerSize); >=20 > + Table =3D (EFI_ACPI_COMMON_HEADER *)((UINTN)(EntryPtr)); >=20 > + if (Table !=3D NULL) { >=20 > + TableCount++; >=20 > + } >=20 > + >=20 > + if (Table->Signature =3D=3D > EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) { >=20 > + FadtPtr =3D (EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *)Table; >=20 > + if (FadtPtr->FirmwareCtrl || FadtPtr->XFirmwareCtrl) { >=20 > + TableCount++; >=20 > + } >=20 > + >=20 > + if (FadtPtr->Dsdt || FadtPtr->XDsdt) { >=20 > + TableCount++; >=20 > + } >=20 > + } >=20 > + } >=20 > + >=20 > + return TableCount; >=20 > +} >=20 > + >=20 > +/** >=20 > + This function calculates CRC based on each ACPI table. >=20 > + It also calculates CRC and provides as HWSignature filed in FACS. >=20 > **/ >=20 > VOID >=20 > -IsHardwareChange ( >=20 > +IsAcpiTableChange ( >=20 > VOID >=20 > ) >=20 > { >=20 > - EFI_STATUS Status; >=20 > - UINTN Index; >=20 > - UINTN HandleCount; >=20 > - EFI_HANDLE *HandleBuffer; >=20 > - EFI_PCI_IO_PROTOCOL *PciIo; >=20 > - UINT32 CRC; >=20 > - UINT32 *HWChange; >=20 > - UINTN HWChangeSize; >=20 > - UINT32 PciId; >=20 > - UINTN Handle; >=20 > - EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE *FacsPtr; >=20 > - EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *pFADT; >=20 > - >=20 > - HandleCount =3D 0; >=20 > - HandleBuffer =3D NULL; >=20 > - >=20 > - Status =3D gBS->LocateHandleBuffer ( >=20 > - ByProtocol, >=20 > - &gEfiPciIoProtocolGuid, >=20 > - NULL, >=20 > - &HandleCount, >=20 > - &HandleBuffer >=20 > - ); >=20 > - if (EFI_ERROR (Status)) { >=20 > - return; // PciIO protocol not installed yet! >=20 > + EFI_STATUS Status; >=20 > + BOOLEAN IsRsdt; >=20 > + UINTN Index; >=20 > + UINTN AcpiTableCount; >=20 > + UINTN EntryCount; >=20 > + UINTN BasePtr; >=20 > + UINT64 EntryPtr; >=20 > + UINT32 *TableCrcRecord; >=20 > + UINT32 HWSignature; >=20 > + EFI_ACPI_COMMON_HEADER *Table; >=20 > + EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp; >=20 > + EFI_ACPI_DESCRIPTION_HEADER *Rsdt; >=20 > + EFI_ACPI_DESCRIPTION_HEADER *Xsdt; >=20 > + EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *FadtPtr; >=20 > + EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE *FacsPtr; >=20 > + >=20 > + IsRsdt =3D FALSE; >=20 > + Index =3D 0; >=20 > + AcpiTableCount =3D 0; >=20 > + EntryCount =3D 0; >=20 > + BasePtr =3D 0; >=20 > + EntryPtr =3D 0; >=20 > + HWSignature =3D 0; >=20 > + TableCrcRecord =3D NULL; >=20 > + Rsdp =3D NULL; >=20 > + Rsdt =3D NULL; >=20 > + Xsdt =3D NULL; >=20 > + FadtPtr =3D NULL; >=20 > + FacsPtr =3D NULL; >=20 > + >=20 > + DEBUG ((DEBUG_INFO, "%a() - Start\n", __FUNCTION__)); >=20 > + >=20 > + Status =3D EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID > **)&Rsdp); >=20 > + if (EFI_ERROR (Status) || (Rsdp =3D=3D NULL)) { >=20 > + return; >=20 > } >=20 >=20 >=20 > - // >=20 > - // Allocate memory for HWChange and add additional entrie for >=20 > - // pFADT->XDsdt >=20 > - // >=20 > - HWChangeSize =3D HandleCount + 1; >=20 > - HWChange =3D AllocateZeroPool (sizeof(UINT32) * HWChangeSize); >=20 > - ASSERT(HWChange !=3D NULL); >=20 > + Rsdt =3D (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN)Rsdp->RsdtAddress; >=20 > + Xsdt =3D (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN)Rsdp->XsdtAddress; >=20 >=20 >=20 > - if (HWChange =3D=3D NULL) return; >=20 > + if (Xsdt->Signature !=3D > EFI_ACPI_6_5_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) { >=20 > + if (Rsdt->Signature =3D=3D > EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) { >=20 > + IsRsdt =3D TRUE; >=20 > + } else { >=20 > + return; >=20 > + } >=20 > + } >=20 >=20 >=20 > // >=20 > - // add HWChange inputs: PCI devices >=20 > + // Count the ACPI tables found by RSDT/XSDT and FADT. >=20 > // >=20 > - for (Index =3D 0; HandleCount > 0; HandleCount--) { >=20 > - PciId =3D 0; >=20 > - Status =3D gBS->HandleProtocol (HandleBuffer[Index], > &gEfiPciIoProtocolGuid, (VOID **) &PciIo); >=20 > - if (!EFI_ERROR (Status)) { >=20 > - Status =3D PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, 0, 1, &Pci= Id); >=20 > - if (EFI_ERROR (Status)) { >=20 > - continue; >=20 > - } >=20 > - HWChange[Index++] =3D PciId; >=20 > - } >=20 > + if (IsRsdt =3D=3D TRUE) { >=20 > + AcpiTableCount =3D CountTableInSDT (Rsdt, sizeof (UINT32)); >=20 > + } else { >=20 > + AcpiTableCount =3D CountTableInSDT (Xsdt, sizeof (UINT64)); >=20 > } >=20 >=20 >=20 > // >=20 > - // Locate FACP Table >=20 > + // Allocate memory for founded ACPI tables. >=20 > // >=20 > - Handle =3D 0; >=20 > - Status =3D LocateAcpiTableBySignature ( >=20 > - EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, >=20 > - (EFI_ACPI_DESCRIPTION_HEADER **) &pFADT, >=20 > - &Handle >=20 > - ); >=20 > - if (EFI_ERROR (Status) || (pFADT =3D=3D NULL)) { >=20 > - return; //Table not found or out of memory resource for pFADT table >=20 > + TableCrcRecord =3D AllocateZeroPool (sizeof (UINT32) *=20 > + AcpiTableCount); >=20 > + if (TableCrcRecord =3D=3D NULL) { >=20 > + return; >=20 > + } >=20 > + >=20 > + if (IsRsdt =3D=3D TRUE) { >=20 > + // >=20 > + // Search RSDT >=20 > + // >=20 > + AcpiTableCount =3D 0; >=20 > + EntryCount =3D (Rsdt->Length - sizeof (EFI_ACPI_DESCRIPTION_HEAD= ER)) / > sizeof (UINT32); >=20 > + BasePtr =3D (UINTN)(Rsdt + 1); >=20 > + for (Index =3D 0; Index < EntryCount; Index++) { >=20 > + EntryPtr =3D 0; >=20 > + Table =3D NULL; >=20 > + CopyMem ((VOID *)&EntryPtr, (VOID *)(BasePtr + Index * sizeof > (UINT32)), sizeof (UINT32)); >=20 > + Table =3D (EFI_ACPI_COMMON_HEADER *)((UINTN)(EntryPtr)); >=20 > + if (Table !=3D NULL) { >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator=20 > + (Table); >=20 > + } >=20 > + >=20 > + if (Table->Signature =3D=3D > EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) { >=20 > + FadtPtr =3D (EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *)Table; >=20 > + // >=20 > + // Locate FACS in FADT >=20 > + // >=20 > + if (FadtPtr->FirmwareCtrl) { >=20 > + FacsPtr =3D (EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE > *)(UINTN)FadtPtr->FirmwareCtrl; >=20 > + >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->FirmwareCtrl); >=20 > + } >=20 > + >=20 > + // >=20 > + // Locate DSDT in FADT >=20 > + // >=20 > + if (FadtPtr->Dsdt) { >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->Dsdt); >=20 > + } >=20 > + } >=20 > + } >=20 > + } else { >=20 > + // >=20 > + // Search XSDT >=20 > + // >=20 > + AcpiTableCount =3D 0; >=20 > + EntryCount =3D (Xsdt->Length - sizeof (EFI_ACPI_DESCRIPTION_HEAD= ER)) / > sizeof (UINT64); >=20 > + BasePtr =3D (UINTN)(Xsdt + 1); >=20 > + for (Index =3D 0; Index < EntryCount; Index++) { >=20 > + EntryPtr =3D 0; >=20 > + Table =3D NULL; >=20 > + CopyMem ((VOID *)&EntryPtr, (VOID *)(BasePtr + Index * sizeof > (UINT64)), sizeof (UINT64)); >=20 > + Table =3D (EFI_ACPI_COMMON_HEADER *)((UINTN)(EntryPtr)); >=20 > + if (Table !=3D NULL) { >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator=20 > + (Table); >=20 > + } >=20 > + >=20 > + if (Table->Signature =3D=3D > EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) { >=20 > + FadtPtr =3D (EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE *)Table; >=20 > + // >=20 > + // Locate FACS in FADT >=20 > + // >=20 > + CopyMem ((VOID *)&EntryPtr, (VOID *)FadtPtr->XFirmwareCtrl,=20 > + sizeof > (UINT64)); >=20 > + if (EntryPtr !=3D 0) { >=20 > + FacsPtr =3D (EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE > *)(UINTN)FadtPtr->XFirmwareCtrl; >=20 > + >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->XFirmwareCtrl); >=20 > + } else { >=20 > + FacsPtr =3D (EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE > *)(UINTN)FadtPtr->FirmwareCtrl; >=20 > + >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->FirmwareCtrl); >=20 > + } >=20 > + >=20 > + // >=20 > + // Locate DSDT in FADT >=20 > + // >=20 > + CopyMem ((VOID *)&EntryPtr, (VOID *)FadtPtr->XDsdt, sizeof > (UINT64)); >=20 > + if (EntryPtr !=3D 0) { >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->XDsdt); >=20 > + } else { >=20 > + TableCrcRecord[AcpiTableCount++] =3D AcpiTableCrcCalculator > ((EFI_ACPI_COMMON_HEADER *)(UINTN)FadtPtr->Dsdt); >=20 > + } >=20 > + } >=20 > + } >=20 > } >=20 >=20 >=20 > // >=20 > - // add HWChange inputs: others >=20 > + // FACS not found >=20 > // >=20 > - HWChange[Index++] =3D (UINT32)pFADT->XDsdt; >=20 > + if (FacsPtr->Signature !=3D > EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) { >=20 > + return; >=20 > + } >=20 >=20 >=20 > // >=20 > - // Calculate CRC value with HWChange data. >=20 > + // Calculate HWSignature data. >=20 > // >=20 > - Status =3D gBS->CalculateCrc32(HWChange, HWChangeSize, &CRC); >=20 > - DEBUG ((DEBUG_INFO, "CRC =3D %x and Status =3D %r\n", CRC, Status)); >=20 > + Status =3D gBS->CalculateCrc32 (TableCrcRecord, AcpiTableCount, > &HWSignature); >=20 > + DEBUG ((DEBUG_INFO, "HardwareSignature =3D %x and Status =3D %r\n", > HWSignature, Status)); >=20 >=20 >=20 > // >=20 > // Set HardwareSignature value based on CRC value. >=20 > // >=20 > - FacsPtr =3D (EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE > *)(UINTN) pFADT->FirmwareCtrl; >=20 > - FacsPtr->HardwareSignature =3D CRC; >=20 > - FreePool (HWChange); >=20 > + FacsPtr->HardwareSignature =3D HWSignature; >=20 > + FreePool (TableCrcRecord); >=20 > + DEBUG ((DEBUG_INFO, "%a() - End\n", __FUNCTION__)); >=20 > } >=20 >=20 >=20 > VOID >=20 > @@ -1329,7 +1494,7 @@ AcpiEndOfDxeEvent ( > // >=20 > // Calculate Hardware Signature value based on current platform=20 > configurations >=20 > // >=20 > - IsHardwareChange (); >=20 > + IsAcpiTableChange (); >=20 > } >=20 >=20 >=20 > /** >=20 > diff --git=20 > a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > index 694492112b..f47cc3908d 100644 > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > @@ -128,6 +128,7 @@ > gEfiGlobalVariableGuid ## CONSUMES >=20 > gEfiHobListGuid ## CONSUMES >=20 > gEfiEndOfDxeEventGroupGuid ## CONSUMES >=20 > + gEfiAcpiTableGuid ## CONSUMES >=20 >=20 >=20 > [Depex] >=20 > gEfiAcpiTableProtocolGuid AND >=20 > -- > 2.39.2.windows.1 -=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 (#118899): https://edk2.groups.io/g/devel/message/118899 Mute This Topic: https://groups.io/mt/99009355/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-