From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web08.37024.1639546995476711680 for ; Tue, 14 Dec 2021 21:43:15 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.com header.s=intel header.b=Oan/TMxZ; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1639546995; x=1671082995; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=puCf31yq8kUU05/308dxDjgUdFjj/q+Gt29QpZS2vRo=; b=Oan/TMxZWmovxUs4u8hGwoWQLdTtcEZ/pdtlFXqk7798+6v3xjsPY2XJ QLT8uQP+USfhOBVXcOy83OUQJLBsDZYYcjioJC5R8LaVoMTDldB/bWMV8 Beeiwdmw6TFqso6ZP9KkC6UtfukkRWsLIZU94iwSWxXntGL7WOuSCsrHw Zcv72f7UYXezWIQqoq5SDqaDTwXSYpbTsLujeNBqAXz4YbkiVMrdLTSzU 9MJT/h4gtlyB7FtgxWm2SZ8oTaKdjBnmXInyG+uwS9qnZow1loSdneKdt phpi4LNwUAJ8LeEVeANVgV8EdNelvzWFj/RDQc7NGelOwf/K1TOrcVxw+ Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10198"; a="226434800" X-IronPort-AV: E=Sophos;i="5.88,207,1635231600"; d="jpg'145?scan'145,208,217,145";a="226434800" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2021 21:43:14 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,207,1635231600"; d="jpg'145?scan'145,208,217,145";a="661744572" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 14 Dec 2021 21:43:14 -0800 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.2308.20; Tue, 14 Dec 2021 21:43:14 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) 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.2308.20; Tue, 14 Dec 2021 21:43:13 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 14 Dec 2021 21:43:13 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 14 Dec 2021 21:43:13 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QLlvOiD9T87Dx3S5q++sPr7AuJRZ7vL9sn946jxrpkQRjPPn0y4d3scDdPIBUC3vGmi4krDfUSIPEgcjNaYPivhR7enW0op+73bAHOWqTqN1HwMNN5/Io34u81kMTCl/ru8muJdz0t9/RZavQ+8a1W4N67C0HUgy7KRc7ILeFo9lDwHZ0qQsCLE8XJdeTj9nDRSHYeWwPRHfKShT+13UuNXTBITohfT6IY4p9/ViN3c5MWkRZkb+pNiXrr4jhxcEn5/AUYBj5Jjd2/3YPLzibV6gs0U4XqP9FOMU7mR1zERKTKZ2H50BevqGMI/4uz+Q5AqfKX+SvNZvCRnTaemZtw== 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=nsiQttAxeenqyEOju//3PMPYZX/RXhZy7yDkg2k7lVA=; b=Rfsd2XaftaVrKPC0EkrnWW0jx8i+6kguKfEDNnb5axwGHdo7DYb0kzDRjD2CNniYOhDoXaIcqKvKYQOmgW36IBc6ak7eeEB0NURssLJxHUPS9PABvRIr8f8LgfVb9jmluqA/XimBXzPvG6HHI4yiv9yPvVp0g8ew9BJ/zFu3sX9MQ4TsiCle7I+JG7wSdiRJ9hcUtOa+VcfIQgevrDKx6L8ARaGonHrZz5v/poKxkDbetRrLCG5mzlqWd1UhgVypkWGD+uXVOZYd42BCvszcHFMN+tlFElUCQHtdYGmi1Vg+QK6isxBF4g28LfvbPcCW1wlh+YfMJx7PAEZ0HKs1Bw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nsiQttAxeenqyEOju//3PMPYZX/RXhZy7yDkg2k7lVA=; b=HrCyDDCoQGihhZVy3VM0ZEgbFlXR++GZiq4hL5aKqevZQHv1dcfXlcMwo8/L4dMxrZL0R12b1xykZPWn11Cq6qPKQCJcaZp/zpBwB6npDCmp1JOMOPbvf2FiI/bUz2R0Qqc0zhDWRZIsMgc2U0yCwUcrcyykmTk4HLON4t5MVSA= Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by MWHPR1101MB2077.namprd11.prod.outlook.com (2603:10b6:301:4d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.14; Wed, 15 Dec 2021 05:43:06 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::447f:7fbc:72f5:fbae]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::447f:7fbc:72f5:fbae%5]) with mapi id 15.20.4778.012; Wed, 15 Dec 2021 05:43:06 +0000 From: "Yao, Jiewen" To: "Reji, RencyX" , "devel@edk2.groups.io" CC: "Zhang, Qi1" , "Kumar, Rahul1" , "Wang, Jian J" , "H, Krishnaprasad" , "Patil, Subhashini" , "Krishnappa, Banuprakash" Subject: Re: [PATCH] SecurityPkg: Debug trace package integration to enable debug message capture on all targets. Thread-Topic: RE: [PATCH] SecurityPkg: Debug trace package integration to enable debug message capture on all targets. Thread-Index: AdftoSIQIrKX/WrxQ1+Y4Q2kk8BfzQD1D+awAABEQlA= Date: Wed, 15 Dec 2021 05:43:06 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e0f67894-0e41-4ca4-f554-08d9bf8dc4f1 x-ms-traffictypediagnostic: MWHPR1101MB2077:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Kyjvbwf3rULYxesBKjB0igkPAzTKCnmp5mWsslpTZKEVmnhYndyj4RVk9EErHGI6AP/WGRQEgW81pzHYkbOwIbBOHOYwBxRD1dvKjXlT5AbvMq/1liOb/gW1AOF0zr+JtwJ9qIm6yIGE7WFRvlV/sqaskEEBiLKcQo8anqS1Ppk/dskF+A+8/+8gqapZWqQrj+OMiwGe5bsA5YsT0yeo0UVg7b1jareQcss11N6XWuozp1Uef7ibY5GLLZ6JDfBwV6DHBudunxctbPnYRR/sipWMMGPxl/TxRC16rvcP3QLUSYe7ceYSIwDhijZCupwTBRJ7lTRf2qhOj/LKI8aHjVwc+p/rebsJLl0CK+aSzHt60076oaHb0qfwFgH7/9uOypXZDaG998KxcpRV/sTPqIBwJAQrMiSCMvUCHNB0t5u+yvG78erkoJVRCghGH3trVfrvzEMXtuhs9YC8TitUAa8l0sJvB0dhCI3nL3W7XUtdfW2FgZ1twmq57J+Fj+IS8rlWHlcevYo6HON3G837eB7pTDNwMJpd7dhgzPyhIxStq/0OeJHoz6pxrHKUtfoOU24YHaOx1v83BQRoE1G21iprsUpAiVLaHH7xANKhC3RPQ53jWQHUkcQNr/rJHA1aRw7SUZwG9VtNOqhIT8kxQ2nftntLbCxG+24l4u1ZLCxe1j8ge25K5nTREDl4Essqz46Y6zAfWY4HiQfSawYV8NYS3zx7IL7LAgCD2UnQegOXr02vA8iSNOJCX6jufgNGo8ADBizRQD3VwBanU3i4NI/3fOsy2B9XdSMavisHXEQ= 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:(366004)(26005)(966005)(66446008)(6506007)(53546011)(5660300002)(110136005)(38070700005)(54906003)(15650500001)(76116006)(4326008)(66476007)(107886003)(66946007)(66556008)(186003)(55016003)(316002)(508600001)(64756008)(83380400001)(71200400001)(7696005)(52536014)(9686003)(19627235002)(2906002)(38100700002)(82960400001)(8676002)(99936003)(166002)(122000001)(8936002)(86362001)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?aMD580BGz/LtkF0zpvd5osrseF8ztRr8l2TOj1wOrMC/RXHHc7mKU/CLJqfl?= =?us-ascii?Q?f4bse0j5ZQU5OIsTdGMvLMqWbBDLNZfAeJugz084xaLVHi7dL0l2dl7IzV3f?= =?us-ascii?Q?n96X3gl0OSovCCsF4Ef/FoVf2MIXb2CT0dFvHRSD1DRHSrF+BbJ87BduEWuS?= =?us-ascii?Q?Zq/hh2QSPrpEx7guBV8ECvozz1IUdjzUmPTO+AmVlYJSoEokim29WghiGJH9?= =?us-ascii?Q?re78zmcxrwV6XESTD8NW08zwYYCjjK86wdoxeAp6L/S/DHjwZFrBagcf0cJp?= =?us-ascii?Q?vQFV81auQpK03qeohUfdYl0ul3u96kBEQN5BDwBRpmn0IWBLzDbacojZPb2s?= =?us-ascii?Q?ApYjPJQvQDA9/F/xrODIZxHhJ41AqyqMCtct80zzbuBwS2F4YyNy6FneGuhq?= =?us-ascii?Q?kFUWStY+eehUC4M08ByhauD4o3DIEt6WAqSaVf59aHZHztSy8Q0cFCpAwGr5?= =?us-ascii?Q?KkLGN6YY7KDKL+gOye0yKfd+bR70fbLUCjjQtndwic9fng3jjsXXYFJTsV8a?= =?us-ascii?Q?oYAwkaIoVZ89c5LH5YVN0kiElPKPZUAn9LGAtuHAX7A18j0/JBoKb67PGR2L?= =?us-ascii?Q?/aSgdr3y/ZsSMUv5/jzPcLMTLcr7XK/wa8ZoOkStFxsAsdA3S1nu3a3OW19i?= =?us-ascii?Q?BrDvpInvoZJhbmUVfYDsCJHxHmLebDUQIqcpvKlSt3Z60aHvAeaSjTObV0HI?= =?us-ascii?Q?ulkbYLwC3EFpw7IcgpyEHYRlkvxg7Gwv2l2Nukad/xqhnLHgAU1TulS1yjz4?= =?us-ascii?Q?9Avf7ubjLydmCna12bSbC9bY9FM9INO/oouv4l96UZitehSSAg0kjh/MYTPb?= =?us-ascii?Q?DpYk6rzrfYPKeJ7waRlrES1f8TCubjYyqU3fP5kycXS5nJpuJ+8HLfvv0sD1?= =?us-ascii?Q?90z5nTl2U2PFWVk4D5bSPPmMO/CrfZd5joQQawDkQKofFnCVjY4fU4jIWt/W?= =?us-ascii?Q?shMuBAH1O7hMfVMARKKANSSxY1ae94nDYmBI+Mg5w2bLqXMLE+MjrQzbkJJS?= =?us-ascii?Q?AJXjTTg2Grl/3l6JNxBNG6dPZQEaFVH3dnZrcgJ486RhvsbsaKX3PQhowNRB?= =?us-ascii?Q?jAh4l1ppK3+2KS930mo1CbIwdRJPc1a0oZSCewbO5NrJJ9zNqm9iJCRSjp2I?= =?us-ascii?Q?JNcqDBb25GzLynt1iAff8VjyV/A04z89lEZqk+40dbm5T/Tpo5zUTJil8xuA?= =?us-ascii?Q?VDZqGp3bW39c3sC/BOYT3JKIMfQYrxtB8H+noFVA8MXbi2SY3yAmjE+/K3jI?= =?us-ascii?Q?M6z1kA4ISg9P+YnoeOhMtdviQaTGGnpnS6Wn4rDr+/nZTMqru80NUxkU7WV7?= =?us-ascii?Q?XMYM+xSwxHJ+8L5JC9T5sorS1XQCAMojRtc14mZmX4xqN06ZVDkeePykCtCn?= =?us-ascii?Q?b6YiIUfISXUEmSFjHJa2jbRZqSQbb4nY5w/5/CLubZ3XWawCOsJdQr81dE4K?= =?us-ascii?Q?vjGkU3WfCHHUC14apcsTWE6iBIFnfX5TqjG4UEU1gQPANvhp4UFzsjYsuKwk?= =?us-ascii?Q?nj589Jp94vjzSSJpbn/LJyDgqtZFgr2VRK4EurkqMf0yUjr8o4X6GEIGmoqS?= =?us-ascii?Q?Jl/uG2WSgXtfZF5Y9+M8ic2NeQwPncW06QpssfI1/6gGNbVcJsPpvh7D6EHv?= =?us-ascii?Q?YRu2o+c4lLGyjQo8Sdr/9K0=3D?= 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: e0f67894-0e41-4ca4-f554-08d9bf8dc4f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Dec 2021 05:43:06.3715 (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: yWwDp0XOvFZiGqqZnESuiusiP1c0hDNiRl5T4kIoZu9QnXjaTA9Ofpn36I5/X12qX2+YDJ0bNkfaV4yyC/nBmA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2077 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com X-Groupsio-MsgNum: 84856 Content-Language: en-US Content-Type: multipart/related; boundary="_004_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_"; type="multipart/alternative" --_004_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_ Content-Type: multipart/alternative; boundary="_000_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_" --_000_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This solution does not make sense to me. Please start a discussion with MdePkg owner at first. Thank you Yao Jiewen From: Reji, RencyX Sent: Wednesday, December 15, 2021 1:39 PM To: devel@edk2.groups.io; Yao, Jiewen Cc: Zhang, Qi1 ; Kumar, Rahul1 ; Wang, Jian J ; H, Krishnaprasad ; Patil, Subhashini ; Krishnappa, Ban= uprakash Subject: RE: RE: [PATCH] SecurityPkg: Debug trace package integration to en= able debug message capture on all targets. Hi All, Please find the Bugzilla link created for the changes : https://bugzilla.ti= anocore.org/show_bug.cgi?id=3D3772 Thanks, Rency From: Reji, RencyX Sent: Friday, December 10, 2021 2:10 PM To: devel@edk2.groups.io; Yao, Jiewen > Cc: Zhang, Qi1 >; Kumar, Ra= hul1 >; Wang, Jian J = >; H, Krishnaprasad >; Patil, Subhashi= ni >; Krishna= ppa, Banuprakash > Subject: RE: [PATCH] SecurityPkg: Debug trace package integration to enable= debug message capture on all targets. Hi All, We are developing a feature which will enable users to collect debug traces= for all build targets(production & engineering builds). This feature would= work even when no debug interfaces are available on systems. To support th= is feature we are required to extend the capability of the existing DebugLi= b implementation by supplementing it with a library that has the required e= xtensions. We have done this implementation such that it can work with or w= ithout this feature enabled by encapsulating the changes within EXT_DEBUG m= acro. This way we are ensuring that our changes are not effecting the behav= ior of the DebugLib functionality in any way .Enabling this feature would r= equire redefinition of the debug macro defined in debuglib while maintainin= g compatibility on builds without this feature . Since we are extending cap= ability of DebugLib we are required to selectively define/redefine the macr= o definition based on the target of choice. Please find the below flow chart. [cid:image001.jpg@01D7F1B9.AE91E640] @Yao, Jiewen , We have some changes in Platfo= rm package of our Intel folder where we are using ExtDebug null libraries a= s shown below. So we have to add ExtDebuglib under library section in those= inf files. #TPM SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf { DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf !if $(EXT_DBG) =3D=3D TRUE ExtDebugLib|MdePkg/Library/BaseExtDebugLibNull/BaseExtDebugLibNull.in= f !endif } Thanks, Rency -----Original Message----- From: Reji, RencyX rencyx.reji@intel.com Sent: Wednesday, December 8, 2021 5:52 PM To: devel@edk2.groups.io Cc: Reji, RencyX rencyx.reji@intel.com; Zhang= , Qi1 qi1.zhang@intel.com; Kumar, Rahul1 rahul1= .kumar@intel.com; Yao, Jiewen jiewen.yao@int= el.com; Wang, Jian J jian.j.wang@intel.com Subject: [PATCH] SecurityPkg: Debug trace package integration to enable deb= ug message capture on all targets. We are introducing a new feature where we will be using a device to collect= debug messages to extend capability of debug beyond current scope. We are = required to extend capability of debug library by changing debug macro expr= ession and collect debug messages for all target such as Debug, Release and= Silent. Cc: Qi Zhang > Cc: Rahul Kumar > Cc: Jiewen Yao > Cc: Jian J Wang > Signed-off-by: Rency Reji > --- SecurityPkg/SecurityPkg.dsc | 1 + SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf | 1 + SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf | 1 + SecurityPkg/Tcg/TcgPei/TcgPei.inf | 1 + 4 files changed, 4 insertions(+) diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc inde= x 73a93c2285..0f1b3d62e9 100644 --- a/SecurityPkg/SecurityPkg.dsc +++ b/SecurityPkg/SecurityPkg.dsc @@ -72,6 +72,7 @@ MmUnblockMemoryLib|MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibN= ull.inf SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBo= otVariableLib.inf SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariablePro= visionLib/SecureBootVariableProvisionLib.inf + ExtDebugLib|MdePkg/Library/BaseExtDebugLib/BaseExtDebugLib.inf [LibraryClasses.ARM, LibraryClasses.AARCH64] # diff --git a/SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf b/= SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf index 653dc1f64f..0b8c6af3b0 100644 --- a/SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf +++ b/SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf @@ -38,6 +38,7 @@ [LibraryClasses] PeimEntryPoint PeiServicesLib + ExtDebugLib [Ppis] gPeiLockPhysicalPresencePpiGuid ## PRODUCES diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf b/SecurityPkg/Tcg/Tcg2Pei/= Tcg2Pei.inf index 06c26a2904..a11cf661ab 100644 --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf @@ -55,6 +55,7 @@ ReportStatusCodeLib ResetSystemLib PrintLib + ExtDebugLib [Guids] gTcgEventEntryHobGuid ## = PRODUCES ## HOB diff --git a/SecurityPkg/Tcg/TcgPei/TcgPei.inf b/SecurityPkg/Tcg/TcgPei/Tcg= Pei.inf index 2e3e7e0575..90d55e7256 100644 --- a/SecurityPkg/Tcg/TcgPei/TcgPei.inf +++ b/SecurityPkg/Tcg/TcgPei/TcgPei.inf @@ -52,6 +52,7 @@ ReportStatusCodeLib Tpm12CommandLib PerformanceLib + ExtDebugLib [Guids] gTcgEventEntryHobGuid ## P= RODUCES ## HOB -- 2.34.1.windows.1 --_000_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

This solution does not make sense to me.<= /p>

 

Please start a discussion with MdePkg owner at first= .

 

Thank you

Yao Jiewen

 

From: Reji, RencyX <rencyx.reji@intel.com&= gt;
Sent: Wednesday, December 15, 2021 1:39 PM
To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com> Cc: Zhang, Qi1 <qi1.zhang@intel.com>; Kumar, Rahul1 <rahul1= .kumar@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; H, Krishn= aprasad <krishnaprasad.h@intel.com>; Patil, Subhashini <subhashini= .patil@intel.com>; Krishnappa, Banuprakash <banuprakash.krishnappa@in= tel.com>
Subject: RE: RE: [PATCH] SecurityPkg: Debug trace package integratio= n to enable debug message capture on all targets.

 

Hi All,

 

Please find the Bugzilla link created for the change= s : https://bugzilla.tianocore.org/show_bug.cgi?id=3D3772

 

Thanks,

Rency

 

 

From: Reji, RencyX
Sent: Friday, December 10, 2021 2:10 PM
To: devel@edk2.groups.io= ; Yao, Jiewen <jiewen.yao@intel.= com>
Cc: Zhang, Qi1 <qi1.zhang@= intel.com>; Kumar, Rahul1 <Rahul1.Kumar@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; H, Krishnaprasad <krishnaprasad.h@intel.com= >; Patil, Subhashini <subhashini.patil@intel.com>; Krishnappa, Banuprakash <banuprakash.krishnappa@intel.c= om>
Subject: RE: [PATCH] SecurityPkg: Debug trace package integration to= enable debug message capture on all targets.

 

Hi All,

 

 

We are developing a feature which will enable use= rs to collect debug traces for all build targets(production & engineeri= ng builds). This feature would work even when no debug interfaces are avail= able on systems. To support this feature we are required to extend the capability of the existing DebugLib implemen= tation by supplementing it with a library that has the required extensions.= We have done this implementation such that it can work with or without thi= s feature enabled by encapsulating the changes within EXT_DEBUG macro. This way we are ensuring that our chan= ges are not effecting the behavior of the DebugLib functionality in any way= .Enabling this feature would require redefinition of the debug macro defin= ed in debuglib while maintaining compatibility on builds without this feature . Since we are extending capa= bility of DebugLib we are required to selectively define/redefine the macro= definition based on the target of choice.

 

Please find the below flow chart.

 

 

 

 

@Yao, Jiewen  , We= have some changes in Platform package of our Intel folder where we are using ExtDebug null libraries as shown below. So we have to a= dd ExtDebuglib under library section in those inf files.

 

  #TPM

  SecurityPkg/Tcg/PhysicalPresencePei/Physic= alPresencePei.inf {

    <LibraryClasses>

      DebugLib|MdePkg/Li= brary/BaseDebugLibNull/BaseDebugLibNull.inf

!if $(EXT_DBG) =3D=3D TRUE

      ExtDebugLib|MdePkg= /Library/BaseExtDebugLibNull/BaseExtDebugLibNull.inf

!endif

  }

 

 

        &= nbsp;     

Thanks,

Rency

 

-----Original Message-----
From: Reji, RencyX rencyx.reji@int= el.com
Sent: Wednesday, December 8, 2021 5:52 PM
To: devel@edk2.groups.io
Cc: Reji, RencyX rencyx.reji@intel= .com; Zhang, Qi1 qi1.zhang@intel.com; Kumar, Rahu= l1 rahul1.kumar@intel.com; Yao, Jiewen jiewen.yao@intel.com; Wang, Jian J jian.j.wang@intel.com
Subject: [PATCH] SecurityPkg: Debug trace package integration to enable deb= ug message capture on all targets.

 

We are introducing a new feature where we will be= using a device to collect debug messages to extend capability of debug bey= ond current scope. We are required to extend capability of debug library by= changing debug macro expression and collect debug messages for all target such as Debug, Release and Silent.

 

Cc: Qi Zhang <qi1.zhang@inte= l.com>

Cc: Rahul Kumar <rahul1.k= umar@intel.com>

Cc: Jiewen Yao <jiewen.yao@= intel.com>

Cc: Jian J Wang <jian.j.wa= ng@intel.com>

Signed-off-by: Rency Reji <RencyX.Reji@intel.com>

---

SecurityPkg/SecurityPkg.dsc   &nbs= p;            &= nbsp;           &nbs= p;    | 1 +

SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPrese= ncePei.inf | 1 +

SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf  &n= bsp;            = ;          | 1 +

SecurityPkg/Tcg/TcgPei/TcgPei.inf  &nbs= p;            &= nbsp;           | 1 +

4 files changed, 4 insertions(+)

 

diff --git a/SecurityPkg/SecurityPkg.dsc b/Securi= tyPkg/SecurityPkg.dsc index 73a93c2285..0f1b3d62e9 100644

--- a/SecurityPkg/SecurityPkg.dsc

+++ b/SecurityPkg/SecurityPkg.dsc

@@ -72,6 +72,7 @@

   MmUnblockMemoryLib|MdePkg/Library/Mm= UnblockMemoryLib/MmUnblockMemoryLibNull.inf

   SecureBootVariableLib|SecurityPkg/Li= brary/SecureBootVariableLib/SecureBootVariableLib.inf

   SecureBootVariableProvisionLib|Secur= ityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLi= b.inf

+  ExtDebugLib|MdePkg/Library/BaseExtDebugLi= b/BaseExtDebugLib.inf

 

 [LibraryClasses.ARM, LibraryClasses.AARCH64= ]

   #

diff --git a/SecurityPkg/Tcg/PhysicalPresencePei/= PhysicalPresencePei.inf b/SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPrese= ncePei.inf

index 653dc1f64f..0b8c6af3b0 100644

--- a/SecurityPkg/Tcg/PhysicalPresencePei/Physica= lPresencePei.inf

+++ b/SecurityPkg/Tcg/PhysicalPresencePei/Physica= lPresencePei.inf

@@ -38,6 +38,7 @@

[LibraryClasses]

   PeimEntryPoint

   PeiServicesLib

+  ExtDebugLib

 

 [Ppis]

   gPeiLockPhysicalPresencePpiGuid = ;            &n= bsp;         ## PRODUCES=

diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf = b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf

index 06c26a2904..a11cf661ab 100644

--- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf

+++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf

@@ -55,6 +55,7 @@

   ReportStatusCodeLib

   ResetSystemLib

   PrintLib

+  ExtDebugLib

 

 [Guids]

   gTcgEventEntryHobGuid  &nb= sp;            =             &nb= sp;            =         ## PRODUCES   &nb= sp;           ## HOB=

diff --git a/SecurityPkg/Tcg/TcgPei/TcgPei.inf b/= SecurityPkg/Tcg/TcgPei/TcgPei.inf

index 2e3e7e0575..90d55e7256 100644

--- a/SecurityPkg/Tcg/TcgPei/TcgPei.inf

+++ b/SecurityPkg/Tcg/TcgPei/TcgPei.inf

@@ -52,6 +52,7 @@

   ReportStatusCodeLib

   Tpm12CommandLib

   PerformanceLib

+  ExtDebugLib

 

 [Guids]

   gTcgEventEntryHobGuid  &nb= sp;            =             &nb= sp;            =        ## PRODUCES    &nb= sp;          ## HOB=

--

2.34.1.windows.1

 

 

--_000_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_-- --_004_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_ Content-Type: image/jpeg; name="image001.jpg" Content-Description: image001.jpg Content-Disposition: inline; filename="image001.jpg"; size=24196; creation-date="Wed, 15 Dec 2021 05:43:05 GMT"; modification-date="Wed, 15 Dec 2021 05:43:05 GMT" Content-ID: Content-Transfer-Encoding: base64 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 --_004_MW4PR11MB587295A4249E767871D4D5F68C769MW4PR11MB5872namp_--