From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 01E6A82058 for ; Wed, 8 Feb 2017 08:30:38 -0800 (PST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP; 08 Feb 2017 08:30:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,348,1477983600"; d="scan'208";a="1123833854" Received: from jyao1-mobl.ccr.corp.intel.com ([10.254.185.79]) by fmsmga002.fm.intel.com with ESMTP; 08 Feb 2017 08:30:37 -0800 From: Jiewen Yao To: edk2-devel@lists.01.org Cc: Michael D Kinney , Liming Gao , Feng Tian , Star Zeng , Laszlo Ersek Date: Wed, 8 Feb 2017 08:30:25 -0800 Message-Id: <1486571434-20000-1-git-send-email-jiewen.yao@intel.com> X-Mailer: git-send-email 2.7.4.windows.1 Subject: [PATCH 00/12] Add SmiHandlerProfile feature X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Feb 2017 16:30:38 -0000 This series patch add SMI handler profile. The purpose of SMI handler profile is to add the capability to dump all SMI handlers produced by the firmware in a given boot. The SMI handlers here include 1) Root SMI handlers registered with SMST->SmiHandlerRegister by SmmCore. 2) GUID SMI handlers registered with SMST->SmiHandlerRegister by SmmCore. 3) Hardware SMI handlers registered with SMM_XXX_DISPATCH_PROTOCOL->Register by SmmChildDispatcher module. The final log is an XML format log, including all SMM image name, all SMI handlers name, type, location (source file and line number), and the caller who registeres the handler. We enabled Quark platform to show how to add support in SmmChildDispatcher. NOTE: This SMI handler profile is a *DEBUG* feature only, to help platform developer or test engineer to audit the SMI handlers. Please do not include it in the final *RELEASE* image. Cc: Michael D Kinney Cc: Liming Gao Cc: Feng Tian Cc: Star Zeng Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao Jiewen Yao (12): MdePkg/Include: Add SmiHandlerProfileLib.h MdePkg/SmiHandlerProfileLibNull: Add NULL instance. MdePkg/dsc: add SmiHandlerProfileLib to dsc. MdeModulePkg/include: Add SmiHandlerProfile header file. MdeModulePkg/dec: Add PcdSmiHandlerProfilePropertyMask. MdeModulePkg/SmmSmiHandlerProfileLib: Add SMM instance. MdeModulePkg/PiSmmCore: Add SmiHandlerProfile support. MdeModulePkg/App: Add SmiHandlerProfile dump app. MdeModulePkg/dsc: add SmiHandlerProfile to dsc. BaseTool/Script: Add SmiHandleProfile OS tool to get symbol. QuarkSocPkg/SmmChildDispatch: Add SmiHandlerProfile support. QuarkPlatformPkg: enable SmiHandlerProfile. BaseTools/Scripts/SmiHandlerProfileSymbolGen.py | 351 ++++++ MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c | 685 +++++++++++ MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.inf | 65 + MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.uni | 22 + MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfoExtra.uni | 19 + MdeModulePkg/Core/PiSmmCore/PiSmmCore.c | 4 +- MdeModulePkg/Core/PiSmmCore/PiSmmCore.h | 89 +- MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 17 +- MdeModulePkg/Core/PiSmmCore/Smi.c | 46 +- MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c | 1261 ++++++++++++++++++++ MdeModulePkg/Include/Guid/SmiHandlerProfile.h | 177 +++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.c | 106 ++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf | 46 + MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.uni | 21 + MdeModulePkg/MdeModulePkg.dec | 11 +- MdeModulePkg/MdeModulePkg.dsc | 2 + MdePkg/Include/Library/SmiHandlerProfileLib.h | 81 ++ MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.c | 72 ++ MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.inf | 36 + MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.uni | 21 + MdePkg/MdePkg.dec | 5 +- MdePkg/MdePkg.dsc | 3 +- QuarkPlatformPkg/Quark.dsc | 16 +- QuarkPlatformPkg/Quark.fdf | 3 +- QuarkPlatformPkg/QuarkMin.dsc | 5 +- QuarkPlatformPkg/Readme.md | 29 +- QuarkSocPkg/QuarkNorthCluster/Smm/DxeSmm/QncSmmDispatcher/QNCSmmCore.c | 19 +- QuarkSocPkg/QuarkNorthCluster/Smm/DxeSmm/QncSmmDispatcher/QNCSmmDispatcher.inf | 3 +- 28 files changed, 3159 insertions(+), 56 deletions(-) create mode 100644 BaseTools/Scripts/SmiHandlerProfileSymbolGen.py create mode 100644 MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c create mode 100644 MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.inf create mode 100644 MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.uni create mode 100644 MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfoExtra.uni create mode 100644 MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c create mode 100644 MdeModulePkg/Include/Guid/SmiHandlerProfile.h create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.c create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.uni create mode 100644 MdePkg/Include/Library/SmiHandlerProfileLib.h create mode 100644 MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.c create mode 100644 MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.inf create mode 100644 MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.uni -- 2.7.4.windows.1