From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 8AF2E7803CF for ; Mon, 27 Nov 2023 18:18:33 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=7fjFrDFOOhTbMGYnUDnFx2+XQKan9TGksqlNZnkxfow=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding; s=20140610; t=1701109112; v=1; b=ZohT8lLIc2CD0P4ZbROK6iQgRG27I3AVjoyUfnNrsCEMG5D28Hxe+7PVJ6KyGbK+5UkCrTDB vLM9FNFpsTllWugYy6kYS3sCFcgG2XkZNk4MluffCC1XzyiEUxrVRf7ZxBL1VRSWw6HhaNwm50y LiR00ii+ilga8mOViEYaEZzQ= X-Received: by 127.0.0.2 with SMTP id DEFAYY7687511xOMFbV2wL9p; Mon, 27 Nov 2023 10:18:32 -0800 X-Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) by mx.groups.io with SMTP id smtpd.web11.102318.1701109111761631163 for ; Mon, 27 Nov 2023 10:18:31 -0800 X-Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-5c230c79c0bso2927148a12.1 for ; Mon, 27 Nov 2023 10:18:31 -0800 (PST) X-Gm-Message-State: c1BvvoLpubJlygQEwEEzh9y6x7686176AA= X-Google-Smtp-Source: AGHT+IFKbw76C7qnS2fx7BGdp40bKY9WePyKj9JPrey0sfjItGe/eTW++apGodwfxYRSnPVmA8/53w== X-Received: by 2002:a17:902:e88d:b0:1cf:c18e:c923 with SMTP id w13-20020a170902e88d00b001cfc18ec923mr6371643plg.45.1701109110956; Mon, 27 Nov 2023 10:18:30 -0800 (PST) X-Received: from localhost.localdomain ([50.46.253.1]) by smtp.gmail.com with ESMTPSA id c6-20020a170902c1c600b001cfd0ed1604sm2013259plc.87.2023.11.27.10.18.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Nov 2023 10:18:30 -0800 (PST) From: "Taylor Beebe" To: devel@edk2.groups.io Cc: Andrew Fish , Ard Biesheuvel , Dandan Bi , Eric Dong , Gerd Hoffmann , Guo Dong , Gua Guo , James Lu , Jian J Wang , Jiewen Yao , Jordan Justen , Leif Lindholm , Liming Gao , Rahul Kumar , Ray Ni , Sami Mujawar , Sean Rhodes , Lazlo Ersek Subject: =?UTF-8?B?W2VkazItZGV2ZWxdIFtQQVRDSCB2NSAwMC8xNl0gQWRkIEltYWdlUHJvcGVydGllc1JlY29yZExpYiBhbmQgRml4IE1BVCBCdWdz4oCL?= Date: Mon, 27 Nov 2023 10:17:58 -0800 Message-ID: <20231127181818.411-1-taylor.d.beebe@gmail.com> MIME-Version: 1.0 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 Reply-To: devel@edk2.groups.io,taylor.d.beebe@gmail.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=ZohT8lLI; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io v5: This version is purely an update of commit messages and orientation. No code changes were made. - Split patch 9 into 3 separate patches so each fix is in its own commit. - Updated the commit comment of patch 11 to add context. v4: - Expose additional functions in the Library API - Add NULL checks to library functions and return a status where applicable. v3: - Refactor patch series so the transition of logic from the DXE MAT logic to the new library is more clear. - Update function headers to improve clarity and follow EDK2 standards. - Add Create and Delete functions for Image Properties Records and redirect some of the SMM and DXE MAT code to use these functions. - Update/Add DumpImageRecords() to print the image name and code sections of each runtime image which will be put in the MAT. The DXE and SMM MAT logic will now invoke the DumpImageRecords() on DEBUG builds at the EndOfDxe event to install the MAT. v2: - A one-line change in patch 3 was moved to patch 9 for correctness. Reference: https://github.com/tianocore/edk2/pull/4590 Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=4492 The UEFI and SMM MAT logic contains duplicate logic for manipulating image properties records which is used to track runtime images. This patch series adds a new library, ImagePropertiesRecordLib, which consolidates this logic and fixes the bugs which currently exist in the MAT logic. The first patch adds the ImagePropertiesRecordLib implementation which is a copy of the UEFI MAT logic with minor modifications to remove the reliance on globabl variables and make the code unit testable. The second patch adds a unit test for the ImagePropertiesRecordLib. The logic tests various potential layouts of the EFI memory map and runtime images. 3/4 of these tests will fail which demonstrates the MAT logic bugs. The third patch fixes the logic in the ImagePropertiesRecordLib so that all of the unit tests pass and the MAT logic can be fixed by using the library. The remaining patches add library instances to DSC files and remove the image properties record logic from the SMM and UEFI MAT logic. Cc: Andrew Fish Cc: Ard Biesheuvel Cc: Dandan Bi Cc: Eric Dong Cc: Gerd Hoffmann Cc: Guo Dong Cc: Gua Guo Cc: James Lu Cc: Jian J Wang Cc: Jiewen Yao Cc: Jordan Justen Cc: Leif Lindholm Cc: Liming Gao Cc: Rahul Kumar Cc: Ray Ni Cc: Sami Mujawar Cc: Sean Rhodes Cc: Lazlo Ersek Taylor Beebe (16): MdeModulePkg: Add ImagePropertiesRecordLib ArmVirtPkg: Add ImagePropertiesRecordLib Instance EmulatorPkg: Add ImagePropertiesRecordLib Instance OvmfPkg: Add ImagePropertiesRecordLib Instance UefiPayloadPkg: Add ImagePropertiesRecordLib Instance MdeModulePkg: Update MemoryAttributesTable.c to Reduce Global Variable Use MdeModulePkg: Move Some DXE MAT Logic to ImagePropertiesRecordLib MdeModulePkg: Add ImagePropertiesRecordLib Host-Based Unit Test MdeModulePkg: Fix MAT Descriptor Count Calculation MdeModulePkg: Fix MAT SplitRecord() Logic MdeModulePkg: Fix MAT SplitTable() Logic MdeModulePkg: Add NULL checks and Return Status to ImagePropertiesRecordLib UefiCpuPkg: Use Attribute From SMM MemoryAttributesTable if Nonzero MdeModulePkg: Transition SMM MAT Logic to Use ImagePropertiesRecordLib MdeModulePkg: Add Logic to Create/Delete Image Properties Records MdeModulePkg: Update DumpImageRecord() in ImagePropertiesRecordLib MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c | 967 +---------------- MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 24 +- MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c | 958 +--------------- MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.c | 1144 ++++++++++++++++++++ MdeModulePkg/Library/ImagePropertiesRecordLib/UnitTest/ImagePropertiesRecordLibUnitTestHost.c | 938 ++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c | 19 +- ArmVirtPkg/ArmVirt.dsc.inc | 1 + EmulatorPkg/EmulatorPkg.dsc | 1 + MdeModulePkg/Core/Dxe/DxeMain.h | 20 - MdeModulePkg/Core/Dxe/DxeMain.inf | 1 + MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 1 + MdeModulePkg/Include/Library/ImagePropertiesRecordLib.h | 234 ++++ MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.inf | 31 + MdeModulePkg/Library/ImagePropertiesRecordLib/UnitTest/ImagePropertiesRecordLibUnitTestHost.inf | 35 + MdeModulePkg/MdeModulePkg.dec | 5 + MdeModulePkg/MdeModulePkg.dsc | 2 + MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 + OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + OvmfPkg/Bhyve/BhyveX64.dsc | 1 + OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + OvmfPkg/Microvm/MicrovmX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfXen.dsc | 1 + OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc | 1 + UefiPayloadPkg/UefiPayloadPkg.dsc | 1 + 28 files changed, 2524 insertions(+), 1874 deletions(-) create mode 100644 MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.c create mode 100644 MdeModulePkg/Library/ImagePropertiesRecordLib/UnitTest/ImagePropertiesRecordLibUnitTestHost.c create mode 100644 MdeModulePkg/Include/Library/ImagePropertiesRecordLib.h create mode 100644 MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.inf create mode 100644 MdeModulePkg/Library/ImagePropertiesRecordLib/UnitTest/ImagePropertiesRecordLibUnitTestHost.inf -- 2.42.0.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111737): https://edk2.groups.io/g/devel/message/111737 Mute This Topic: https://groups.io/mt/102834905/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-