From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web12.9827.1616400590885671393 for ; Mon, 22 Mar 2021 01:09:51 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: dandan.bi@intel.com) IronPort-SDR: +T4Qa+Rup521c1JXXGH0OQE99rSUvIMTia1awV1C2/oA4C7JvrwnuwJEMk0ep5mALElFj7MnMJ 9cft9WwquSoQ== X-IronPort-AV: E=McAfee;i="6000,8403,9930"; a="190316296" X-IronPort-AV: E=Sophos;i="5.81,268,1610438400"; d="scan'208";a="190316296" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2021 01:09:49 -0700 IronPort-SDR: bySKtYWdEGDEggS9kHqNTzOOZHegQprSajpRSNwpJk1VMXl1DwIhVkeCvdrOILxMNDXTOf9gi4 5W8QGwpJGx/g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,268,1610438400"; d="scan'208";a="375616287" Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.154.141]) by orsmga006.jf.intel.com with ESMTP; 22 Mar 2021 01:09:47 -0700 From: "Dandan Bi" To: devel@edk2.groups.io Cc: Andrew Fish , Leif Lindholm , Laszlo Ersek , Michael D Kinney , Liming Gao , Zhiguang Liu Subject: [patch V2 00/29] Add a new library class RegisterFilterLib in edk2 to filter/trace port IO/MMIO/MSR access Date: Mon, 22 Mar 2021 16:09:12 +0800 Message-Id: <20210322080941.6780-1-dandan.bi@intel.com> X-Mailer: git-send-email 2.18.0.windows.1 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3246 RFC: https://edk2.groups.io/g/devel/message/72530 Patch 1 is to add RegisterFilterLib Library Class in edk2 to filter/trace port IO/MMIO/MSR access and add a RegisterFilterLibNull instance. Patch 2 is to add the MdeLibs.dsc.inc file to MdePkg for some default libraries provided by MdePkg and add RegisterFilterLib into it as the first version of MdeLibs.dsc.inc. Last 2 patches are to update APIs in IoLib and BaseLib to filter/trace port IO/MMIO/MSR access. Remaining patches are to update related dsc files to consume MdeLibs.dsc.inc for RegisterFilterLib. Will submit patch 1 and 2 firstly. And then update related dsc files in edk2 and edk2platform repo to consume MdeLibs.dsc.inc for RegisterFilterLib. At last will submit the patches to update IoLib and BaseLib to filter/trace port IO/MMIO/MSR access. -- V2: Introduce MdeLibs.dsc.inc and add RegisterFilterLib into it as the first version of MdeLibs.dsc.inc. Update Platform dsc to consume the MdeLibs.dsc.inc. Add the description for the return flag in FilterBeforeXXXX functions in header file source code. Extend the years for Intel copyright. Add mssing change the dsc files in OvmfPkg. Cc: Andrew Fish Cc: Leif Lindholm Cc: Laszlo Ersek Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Dandan Bi (29): MdePkg: Add RegisterFilterLib class and NULL instance MdePkg: Add MdeLibs.dsc.inc file to MdePkg ArmPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib ArmPlatformPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib ArmVirtPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib CryptoPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib DynamicTablesPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib EmbeddedPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib EmulatorPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib FatPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib FmpDevicePkg: Consume MdeLibs.dsc.inc for RegisterFilterLib IntelFsp2Pkg: Consume MdeLibs.dsc.inc for RegisterFilterLib IntelFsp2WrapperPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib MdeModulePkg: Consume MdeLibs.dsc.inc for RegisterFilterLib MdePkg: Consume MdeLibs.dsc.inc for RegisterFilterLib NetworkPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib OvmfPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib PcAtChipsetPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib RedfishPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib SecurityPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib ShellPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib SignedCapsulePkg: Consume MdeLibs.dsc.inc for RegisterFilterLib SourceLevelDebugPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib StandaloneMmPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib UefiCpuPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib UefiPayloadPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib UnitTestFrameworkPkg: Consume MdeLibs.dsc.inc for RegisterFilterLib MdePkg/IoLib: Filter/trace port IO/MMIO access MdePkg/Baseib: Filter/trace MSR access for IA32/X64 ArmPkg/ArmPkg.dsc | 2 + ArmPlatformPkg/ArmPlatformPkg.dsc | 2 + ArmVirtPkg/ArmVirt.dsc.inc | 4 +- CryptoPkg/CryptoPkg.dsc | 4 +- DynamicTablesPkg/DynamicTablesPkg.dsc | 2 + EmbeddedPkg/EmbeddedPkg.dsc | 4 +- EmulatorPkg/EmulatorPkg.dsc | 4 +- FatPkg/FatPkg.dsc | 4 +- FmpDevicePkg/FmpDevicePkg.dsc | 4 +- IntelFsp2Pkg/IntelFsp2Pkg.dsc | 4 +- IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc | 2 + IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc | 4 +- MdeModulePkg/MdeModulePkg.dsc | 4 +- MdePkg/Include/Library/RegisterFilterLib.h | 243 ++++++++++++++++ .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 3 +- .../BaseIoLibIntrinsicArmVirt.inf | 3 +- .../BaseIoLibIntrinsicInternal.h | 3 +- .../BaseIoLibIntrinsicSev.inf | 3 +- MdePkg/Library/BaseIoLibIntrinsic/IoLib.c | 95 ++++-- .../Library/BaseIoLibIntrinsic/IoLibArmVirt.c | 82 +++++- MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c | 58 +++- MdePkg/Library/BaseIoLibIntrinsic/IoLibMsc.c | 81 ++++-- MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c | 74 ++++- MdePkg/Library/BaseLib/BaseLib.inf | 5 +- MdePkg/Library/BaseLib/Ia32/GccInlinePriv.c | 38 ++- MdePkg/Library/BaseLib/Ia32/ReadMsr64.c | 38 ++- MdePkg/Library/BaseLib/Ia32/WriteMsr64.c | 22 +- MdePkg/Library/BaseLib/X64/GccInlinePriv.c | 43 ++- MdePkg/Library/BaseLib/X64/ReadMsr64.c | 15 +- MdePkg/Library/BaseLib/X64/WriteMsr64.c | 13 +- .../RegisterFilterLibNull.c | 271 ++++++++++++++++++ .../RegisterFilterLibNull.inf | 23 ++ .../RegisterFilterLibNull.uni | 13 + MdePkg/MdeLibs.dsc.inc | 14 + MdePkg/MdePkg.dec | 7 +- MdePkg/MdePkg.dsc | 6 +- NetworkPkg/NetworkPkg.dsc | 4 +- OvmfPkg/AmdSev/AmdSevX64.dsc | 4 +- OvmfPkg/Bhyve/BhyveX64.dsc | 4 +- OvmfPkg/OvmfPkgIa32.dsc | 4 +- OvmfPkg/OvmfPkgIa32X64.dsc | 4 +- OvmfPkg/OvmfPkgX64.dsc | 4 +- OvmfPkg/OvmfXen.dsc | 4 +- PcAtChipsetPkg/PcAtChipsetPkg.dsc | 4 +- RedfishPkg/RedfishPkg.dsc | 4 +- SecurityPkg/SecurityPkg.dsc | 4 +- ShellPkg/ShellPkg.dsc | 4 +- SignedCapsulePkg/SignedCapsulePkg.dsc | 4 +- SourceLevelDebugPkg/SourceLevelDebugPkg.dsc | 4 +- StandaloneMmPkg/StandaloneMmPkg.dsc | 4 +- UefiCpuPkg/UefiCpuPkg.dsc | 4 +- UefiPayloadPkg/UefiPayloadPkg.dsc | 4 +- .../UnitTestFrameworkPkgTarget.dsc.inc | 4 +- 53 files changed, 1120 insertions(+), 145 deletions(-) create mode 100644 MdePkg/Include/Library/RegisterFilterLib.h create mode 100644 MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.c create mode 100644 MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf create mode 100644 MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.uni create mode 100644 MdePkg/MdeLibs.dsc.inc -- 2.18.0.windows.1