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.web10.2343.1592441144701147538 for ; Wed, 17 Jun 2020 17:45:44 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Xdxqmzbn; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: dandan.bi@intel.com) IronPort-SDR: Qc1XT4FqjvNZxGP2vyO47Eh9OzLrhPRUu3kvJxvVvKHQlXbSB+YUzgyKRXmNFbjPQSNWT83uk0 K2kLyvYXgO1Q== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2020 17:45:44 -0700 IronPort-SDR: MUu3xCOvoCxmIW2qFrZaPIy3L1B+OvWKzzCA/Eu8qKyuW2PWKc8LBpqxV13KfLgexFKW5pT6ip FPtQr8F9NFhg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,524,1583222400"; d="scan'208";a="291601039" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga002.jf.intel.com with ESMTP; 17 Jun 2020 17:45:43 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 17 Jun 2020 17:45:43 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 17 Jun 2020 17:45:42 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 17 Jun 2020 17:45:42 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.171) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 17 Jun 2020 17:45:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e5khrlyWSLOUZEPhdGIeCoEM5Lw2/LVK9T1ugfBYNFZLJDdtl8ZSpScEfv6y/tD/J1dagFSsK5K5thJcJwiIORTKQ6AsCGrwwMcHvK0k0sOwGy0o2zWbYdabW4hPDC0O4sGpIDvq3tEsu9LhNGttGNW7LZzaTCY1S445NPAgGhxcGRJ+81p0S5lEtU16oLUqypGpJ+DD+Lyr15ecQKlXclDVelXPs45xcAb5tHLS3PQWieX29NpROoqgzVtrdLeei/OCv+dML3eVPxn38gwaS8xZd3IRNKxRVVIp6Wz9anReS4x2zjf9x+Op17hz7N6u3apG2bN8U0xnFQNiXPZMGA== 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-SenderADCheck; bh=95N9+99K58NQSvhkUWoYG6jyY03Pn/JA4+6zK50zxfI=; b=beDTG3HpeegNP7mrMFZMzeQkxCg93oas5NessGD7+U7mFAI4q2rmZ5mP6UzjKh6H2sPIbkvCI+7RzCPNZW1G4tR24cnvARZ83lUniuwwbKNjaFrm0HXOJM30hH4wF/+yjx03UZ4cDE9/JTJ+ikbYUrNdkDDsHu9X9zn2WaFEpE2r8U5UZTRad5Q9u3A6rBvcCBkmWDgIAJBwawiQ5EIUjSTNVBdPQyA9UH6RLx+XvWBUm7qIoPLBpNOV87ZH1lOSOotsc1gmQLNzL80BkSHYXqI6TCwT02BZFfFkwWxqLSkeTPOgnoCfi05y23jD3DgkY9qLh0E+GBTn5E6NDXZaxA== 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=95N9+99K58NQSvhkUWoYG6jyY03Pn/JA4+6zK50zxfI=; b=XdxqmzbnW/gGzX4rRyIwMIQJnOaPwqjtLLMOGNsS5j5cmbVrE66Qz+eCRAWgkkqOKIpGY38t58tD1uqbXw00iO05DpJ4DB6yLatA2C28XzkBw9ddRxDV6VihAtLqNFxvQTYmKlwYoeFNdvvkDTAnvwFPh7pIBr5AQiWS4UJ0fZk= Received: from BN6PR11MB1393.namprd11.prod.outlook.com (2603:10b6:404:3c::12) by BN6PR1101MB2195.namprd11.prod.outlook.com (2603:10b6:405:5a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.18; Thu, 18 Jun 2020 00:45:40 +0000 Received: from BN6PR11MB1393.namprd11.prod.outlook.com ([fe80::a1f4:15d6:9a79:de03]) by BN6PR11MB1393.namprd11.prod.outlook.com ([fe80::a1f4:15d6:9a79:de03%11]) with mapi id 15.20.3088.029; Thu, 18 Jun 2020 00:45:40 +0000 From: "Dandan Bi" To: "devel@edk2.groups.io" , "Tan, Ming" CC: "Dong, Eric" , "Gao, Liming" Subject: Re: [edk2-devel] [PATCH v7 1/2] Features/Intel/BeepDebugFeaturePkg: add it. Thread-Topic: [edk2-devel] [PATCH v7 1/2] Features/Intel/BeepDebugFeaturePkg: add it. Thread-Index: AQHWQ9D5fhtJfyWICUqvO9m4x1ZBvajccugwgAEYdLA= Date: Thu, 18 Jun 2020 00:45:40 +0000 Message-ID: References: <20200616112549.50544-1-ming.tan@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7b97c2c2-7d8b-4918-be50-08d81320ecb6 x-ms-traffictypediagnostic: BN6PR1101MB2195: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0438F90F17 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rjggQEZfFUz1tTgB+aj3qqyRMNVcy1zK6V6LZVGG5QgUkjynGhohaWXVMT7fzWLBm2Fh4QfsUsIE9X233+J/+NZhyb5CILkJH0/sWncyx2E3ddJiSz9Fa0BY/YrWMqhg3gfJQpyUaTuROL1A5GvNkZ7MWr0J7KJ1n03B4EG4DpqUbtW5xS6mkDJCDOgCVoeB+BpEBwNdqiKkck0jIOffsbz3GFX8qo9Pq5m06VRL+J/MpyjjC7q2YV5CSB7Ajp76B9o+K508ypzhmSmi+ubVdN42BGeGl88ONc3ihKyPkBuTQ1sYlzRXU1xIWk0eIkNqyVD8uXlzw/1VPB/j7hXRndYHdYsOQTj+GTeDSiTx87n29Y3A9URxwZTQgi+9YwKLVqz8XjFO5a84O7MqqYLw4A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR11MB1393.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(376002)(39860400002)(136003)(396003)(366004)(8936002)(7696005)(30864003)(186003)(5660300002)(6636002)(53546011)(55016002)(8676002)(6506007)(316002)(9686003)(4326008)(966005)(26005)(86362001)(66574015)(54906003)(107886003)(2906002)(83380400001)(478600001)(110136005)(66946007)(33656002)(64756008)(18074004)(66556008)(66446008)(71200400001)(66476007)(19627235002)(76116006)(52536014)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: VdGkbUBwjw3Vs4PDr/dASE0XZDi9ebE3t5F7rSpygYpZ/WFuGwzd/KnZPQPFSyO949faeC7MwFaME6hpDkaII2NLANSypmIM5ZI5x+TYEdRCJ4uZN1k5PNmr69LECCiXmn9rIP7oEs5NUI+IhI9p4JkMEeEXaGB501i1f/Qqz7LspW1xIJfpTQD4swmzY0y6Rz6CsfQGbx8lRBmnyec1ohqBnxAf2l0RBhfA0sn3ut5hOM0fk0Tjnh8C0FqBj4ODENbDP+74uYLbmuGVqJh8cxQYYq1zvkU6WQE86BJrhsL7rbzr4/0NfTRZSlU+N0VVYLr/m5KHASI7OFuHK40X0gZcmqkWztzkCFtZV/OJmvpKfTTKd00k6QC2Bm/joiXWaix1aKrLlq/Kdx8/bSim1lMMFaZSZIPvb2FilZk07USs2B5OVUkXnfwPXc27KqRncWcARfipTk4PEPcRYPliAmkRgZtSXyDcHdakaKOU6OE= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 7b97c2c2-7d8b-4918-be50-08d81320ecb6 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2020 00:45:40.1326 (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: 89fu9rfpDw75rTG7A8LW3gJrqQirA32q3b4uyVefci7ZqX44+H88+pbBFAsX1+G1jbfdMqL5r3FnQJELXDKkKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1101MB2195 Return-Path: dandan.bi@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Please ignore my previous comments. Reviewed-by: Dandan Bi Thanks, Dandan > -----Original Message----- > From: Bi, Dandan > Sent: Wednesday, June 17, 2020 4:25 PM > To: devel@edk2.groups.io; Tan, Ming > Cc: Dong, Eric ; Gao, Liming > Subject: RE: [edk2-devel] [PATCH v7 1/2] > Features/Intel/BeepDebugFeaturePkg: add it. >=20 > Hi Min, >=20 > I have one minor comment about the function name of > RegisterBeepBootTimeHandlers. > Since this is the notification function of installation of status code ha= ndler > protocol, could you help update it to make it more readable? > Same comment for the function RegisterPostCodeBootTimeHandlers in > patch 2. >=20 > Thanks, > Dandan > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of Tan, > > Ming > > Sent: Tuesday, June 16, 2020 7:26 PM > > To: devel@edk2.groups.io > > Cc: Dong, Eric ; Gao, Liming > > Subject: [edk2-devel] [PATCH v7 1/2] > Features/Intel/BeepDebugFeaturePkg: > > add it. > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2792 > > > > The BeepDebugFeaturePkg include some useful beep debug > > libraries, such as get beep value from status code and beep. > > > > It provide a library BeepStatusCodeHandlerLib used by edk2 > > StatusCodeHandler.efi, used to do beep if needed. > > It also provide a library of BeepMap lib, it map the status code > > to beep value. > > A library of Beep lib is needed by platform, and this pkg has a > > Null implementation. > > > > Cc: Eric Dong > > Cc: Liming Gao > > Signed-off-by: Ming Tan > > --- > > V7: Add the dec files in AdvancedFeaturesPcd.dsc. Combine Beep and > > PostCode to 2/2 patchs. > > V6: Modify some bug when include the platform dsc file. And modify > > Readme.md. > > V5: In .inf files, remove some useless library. > > In RuntimeDxeBeepStatusCodeHandlerLib.c, add a variable to indicate > > whether need unregister. > > V4: Change Include/BeepDebugFeature.dsc, make it can be included in > > platform dsc file. > > V3: Modify according the Eric's review comments. > > V2: Delete the last empty line in > > BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf > > .../Include/AdvancedFeaturesPcd.dsc | 83 +++--- > > .../BeepDebugFeaturePkg.dec | 36 +++ > > .../BeepDebugFeaturePkg.dsc | 30 ++ > > .../Include/BeepDebugFeature.dsc | 201 +++++++++++++ > > .../Include/Library/BeepLib.h | 33 +++ > > .../Include/Library/BeepMapLib.h | 32 +++ > > .../Library/BeepLib/BeepLibNull.c | 37 +++ > > .../Library/BeepLib/BeepLibNull.inf | 26 ++ > > .../Library/BeepMapLib/BeepMapLib.c | 116 ++++++++ > > .../Library/BeepMapLib/BeepMapLib.inf | 27 ++ > > .../BeepMapLib/PlatformStatusCodesInternal.h | 270 > > ++++++++++++++++++ > > .../PeiBeepStatusCodeHandlerLib.c | 101 +++++++ > > .../PeiBeepStatusCodeHandlerLib.inf | 49 ++++ > > .../RuntimeDxeBeepStatusCodeHandlerLib.c | 184 ++++++++++++ > > .../RuntimeDxeBeepStatusCodeHandlerLib.inf | 51 ++++ > > .../SmmBeepStatusCodeHandlerLib.c | 138 +++++++++ > > .../SmmBeepStatusCodeHandlerLib.inf | 50 ++++ > > .../Debugging/BeepDebugFeaturePkg/Readme.md | 125 ++++++++ > > 18 files changed, 1548 insertions(+), 41 deletions(-) > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.d > > ec > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.d > > sc > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFeat > > ure.dsc > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLib. > > h > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepMa > > pLib.h > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLib > > Null.c > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLib > > Null.inf > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Bee > > pMapLib.c > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Bee > > pMapLib.inf > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Plat > > formStatusCodesInternal.h > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/PeiBeepStatusCodeHandlerLib.c > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/PeiBeepStatusCodeHandlerLib.inf > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.c > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/SmmBeepStatusCodeHandlerLib.c > > create mode 100644 > > > Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCode > > HandlerLib/SmmBeepStatusCodeHandlerLib.inf > > create mode 100644 > > Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md > > > > diff --git > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc > > index 836da7c944..366b551bd3 100644 > > --- > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc > > +++ > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc > > @@ -1,41 +1,42 @@ > > -## @file > > > > > > -# DSC file for defining Pcd of advanced features. > > > > > > -# > > > > > > -# This file is intended to be included into another package so advanc= ed > > features > > > > > > -# can be conditionally built by enabling the respective feature via i= ts > > FeaturePCD. > > > > > > -# > > > > > > -# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > > > -# > > > > > > -# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > -# > > > > > > -## > > > > > > - > > > > > > -# > > > > > > -# The section references the package DEC files, > > > > > > -# it allow a FeaturePCD to be used in a conditional statement > > > > > > -# > > > > > > -[Packages] > > > > > > - MdePkg/MdePkg.dec > > > > > > - AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec > > > > > > - Usb3DebugFeaturePkg/Usb3DebugFeaturePkg.dec > > > > > > - NetworkFeaturePkg/NetworkFeaturePkg.dec > > > > > > - IpmiFeaturePkg/IpmiFeaturePkg.dec > > > > > > - S3FeaturePkg/S3FeaturePkg.dec > > > > > > - SmbiosFeaturePkg/SmbiosFeaturePkg.dec > > > > > > - UserAuthFeaturePkg/UserAuthFeaturePkg.dec > > > > > > - LogoFeaturePkg/LogoFeaturePkg.dec > > > > > > - > > > > > > -# > > > > > > -# The section below sets all PCDs to FALSE in this DSC file so the fea= ture is > > not enabled by default. > > > > > > -# Board can set PCDs to TRUE in its DSC file to enable a subset of adv= anced > > features > > > > > > -# > > > > > > -[PcdsFeatureFlag] > > > > > > - gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable > > |FALSE > > > > > > - gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable > |FALSE > > > > > > - gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable > > |FALSE > > > > > > - gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable = |FALSE > > > > > > - gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > > |FALSE > > > > > > - gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > > |FALSE > > > > > > - > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl > > e |FALSE > > > > > > - gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > |FALSE > > > > > > - gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE > > > > > > +## @file > > > > +# DSC file for defining Pcd of advanced features. > > > > +# > > > > +# This file is intended to be included into another package so advanc= ed > > features > > > > +# can be conditionally built by enabling the respective feature via i= ts > > FeaturePCD. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +# > > > > +# The section references the package DEC files, > > > > +# it allow a FeaturePCD to be used in a conditional statement > > > > +# > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec > > > > + Usb3DebugFeaturePkg/Usb3DebugFeaturePkg.dec > > > > + NetworkFeaturePkg/NetworkFeaturePkg.dec > > > > + IpmiFeaturePkg/IpmiFeaturePkg.dec > > > > + S3FeaturePkg/S3FeaturePkg.dec > > > > + SmbiosFeaturePkg/SmbiosFeaturePkg.dec > > > > + UserAuthFeaturePkg/UserAuthFeaturePkg.dec > > > > + LogoFeaturePkg/LogoFeaturePkg.dec > > > > + BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec > > > > + > > > > +# > > > > +# The section below sets all PCDs to FALSE in this DSC file so the fea= ture is > > not enabled by default. > > > > +# Board can set PCDs to TRUE in its DSC file to enable a subset of adv= anced > > features > > > > +# > > > > +[PcdsFeatureFlag] > > > > + gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable > > |FALSE > > > > + gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable > > |FALSE > > > > + gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable > > |FALSE > > > > + gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable = |FALSE > > > > + gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > > |FALSE > > > > + gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > > |FALSE > > > > + > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl > > e |FALSE > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > |FALSE > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dec > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dec > > new file mode 100644 > > index 0000000000..4f4b36b091 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dec > > @@ -0,0 +1,36 @@ > > +## @file > > > > +# This package provides Beep Debug feature. > > > > +# This package should only depend on EDK II Core packages, > IntelSiliconPkg, > > and MinPlatformPkg. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + DEC_SPECIFICATION =3D 0x00010017 > > > > + PACKAGE_NAME =3D BeepDebugFeaturePkg > > > > + PACKAGE_GUID =3D DD88CEBB-E68F-4155-B754-D11E4FDF008D > > > > + PACKAGE_VERSION =3D 0.1 > > > > + > > > > +[Includes] > > > > + Include > > > > + > > > > +[LibraryClasses] > > > > + ## @libraryclass Provide the function to map the status code to= beep > > value. > > > > + BeepMapLib|Include/Library/BeepMapLib.h > > > > + > > > > + ## @libraryclass Provide the function to do the real beep. > > > > + BeepLib|Include/Library/BeepLib.h > > > > + > > > > +[Guids] > > > > + gBeepDebugFeaturePkgTokenSpaceGuid =3D {0x54f56fb5, 0xea0e, 0x4518= , > > {0xa0, 0x3e, 0x1b, 0xeb, 0x56, 0x94, 0xd2, 0x16}} > > > > + > > > > +[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, > PcdsDynamicEx] > > > > + # Beep is a legacy feature, disabled it by default > > > > + > > > gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|FALSE|B > > OOLEAN|0x00000001 > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dsc > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dsc > > new file mode 100644 > > index 0000000000..47254f9974 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg > > .dsc > > @@ -0,0 +1,30 @@ > > +## @file > > > > +# This package provides Beep Debug feature. > > > > +# This package should only depend on EDK II Core packages, > IntelSiliconPkg, > > and MinPlatformPkg. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + PLATFORM_NAME =3D BeepDebugFeaturePkg > > > > + PLATFORM_GUID =3D D716EDF2-77BB-4536-9C64-4D7EEF0F3= 896 > > > > + PLATFORM_VERSION =3D 0.1 > > > > + DSC_SPECIFICATION =3D 0x00010005 > > > > + OUTPUT_DIRECTORY =3D Build/$(PLATFORM_NAME) > > > > + SUPPORTED_ARCHITECTURES =3D IA32|X64 > > > > + BUILD_TARGETS =3D DEBUG|RELEASE|NOOPT > > > > + SKUID_IDENTIFIER =3D DEFAULT > > > > + PEI_ARCH =3D IA32 > > > > + DXE_ARCH =3D X64 > > > > + > > > > +# > > > > +# This package always builds the feature. > > > > +# > > > > +!include Include/BeepDebugFeature.dsc > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFe > > ature.dsc > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFe > > ature.dsc > > new file mode 100644 > > index 0000000000..65e00b5979 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFe > > ature.dsc > > @@ -0,0 +1,201 @@ > > +## @file > > > > +# This package provides Beep Debug feature. > > > > +# This file should be included into another package DSC file to build = this > > feature. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > > +######################################################### > > ####################### > > > > +# > > > > +# Defines Section - statements that will be processed to create a Make= file. > > > > +# > > > > > +######################################################### > > ####################### > > > > +[Defines] > > > > +!ifndef $(PEI_ARCH) > > > > + !error "PEI_ARCH must be specified to build this feature!" > > > > +!endif > > > > +!ifndef $(DXE_ARCH) > > > > + !error "DXE_ARCH must be specified to build this feature!" > > > > +!endif > > > > + > > > > > +######################################################### > > ####################### > > > > +# > > > > +# PCD Section - list of PCD Entries modified by the feature. > > > > +# > > > > > +######################################################### > > ####################### > > > > + > > > > +# Unmark the following and StatusCodeHandler.efi to build the .dsc fil= e > > directly > > > > +#[PcdsDynamicDefault] > > > > +# > gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|TRUE > > > > + > > > > > +######################################################### > > ####################### > > > > +# > > > > +# Library Class section - list of all Library Classes needed by this f= eature. > > > > +# > > > > > +######################################################### > > ####################### > > > > +[LibraryClasses] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > + > DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf > > > > + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf > > > > + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf > > > > + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf > > > > + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf > > > > + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf > > > > + > > > TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTem > > plate.inf > > > > + > > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBo > > otServicesTableLib.inf > > > > + > > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry > > Point.inf > > > > + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf > > > > + > > > UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib > > /UefiRuntimeServicesTableLib.inf > > > > + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf > > > > + > > > > +[LibraryClasses.common.PEIM] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf > > > > + > > > MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemory > > AllocationLib.inf > > > > + > > > PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/P > > eiServicesTablePointerLibIdt.inf > > > > + > > > > > +[LibraryClasses.IA32.PEIM,LibraryClasses.IA32.PEI_CORE,LibraryClasses.IA= 32 > > .SEC] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + > > > ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiR > > eportStatusCodeLib.inf > > > > + > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf > > > > + > > > MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo > > ryAllocationLib.inf > > > > + > > > > +[LibraryClasses.common.DXE_RUNTIME_DRIVER] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf > > > > + > > > MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo > > ryAllocationLib.inf > > > > + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf > > > > + > > > ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCod > > eLib/RuntimeDxeReportStatusCodeLib.inf > > > > + > > > > +[LibraryClasses.common.UEFI_DRIVER] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf > > > > + > > > MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo > > ryAllocationLib.inf > > > > + > > > > +[LibraryClasses.X64.DXE_SMM_DRIVER] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + > > > SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesT > > ableLib.inf > > > > + > > > MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMe > > moryAllocationLib.inf > > > > + SmmIoLib|MdePkg/Library/SmmIoLib/SmmIoLib.inf > > > > + SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf > > > > + > > > ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/S > > mmReportStatusCodeLib.inf > > > > + > > > > > +######################################################### > > ####################### > > > > +# > > > > +# Component section - list of all components that need built for this > feature. > > > > +# > > > > +# Note: The EDK II DSC file is not used to specify how compiled binary > > images get placed > > > > +# into firmware volume images. This section is just a list of mo= dules to > > compile from > > > > +# source into UEFI-compliant binaries. > > > > +# It is the FDF file that contains information on combining bina= ry files > into > > firmware > > > > +# volume images, whose concept is beyond UEFI and is described i= n PI > > specification. > > > > +# There may also be modules listed in this section that are not = required > > in the FDF file, > > > > +# When a module listed here is excluded from FDF file, then UEFI= - > > compliant binary will be > > > > +# generated for it, but the binary will not be put into any firm= ware > > volume. > > > > +# > > > > > +######################################################### > > ####################### > > > > +# > > > > +# Feature PEI Components > > > > +# > > > > + > > > > +# @todo: Change below line to [Components.$(PEI_ARCH)] after > > https://bugzilla.tianocore.org/show_bug.cgi?id=3D2308 > > > > +# is completed. > > > > +[Components.IA32] > > > > + ##################################### > > > > + # Beep Debug Feature Package > > > > + ##################################### > > > > + > > > > + # Add library instances here that are not included in package > components > > and should be tested > > > > + # in the package build. > > > > + > > > BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepStatusC > > odeHandlerLib.inf > > > > + > > > > + # The following is an example for used with StatusCodeHandler: > > > > +# > > > MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.in > > f { > > > > +# > > > > +# > > > OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibN > > ull/OemHookStatusCodeLibNull.inf > > > > +# > > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.= in > > f > > > > +# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf > > > > +# > > BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf > > > > +# > > > NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepSt > > atusCodeHandlerLib.inf > > > > +# } > > > > + > > > > + # Add components here that should be included in the package build. > > > > + > > > > +# > > > > +# Feature DXE Components > > > > +# > > > > + > > > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after > > https://bugzilla.tianocore.org/show_bug.cgi?id=3D2308 > > > > +# is completed. > > > > +[Components.X64] > > > > + ##################################### > > > > + # Beep Debug Feature Package > > > > + ##################################### > > > > + > > > > + # Add library instances here that are not included in package > components > > and should be tested > > > > + # in the package build. > > > > + > > > BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxeBee > > pStatusCodeHandlerLib.inf > > > > + > > > BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeepStatus > > CodeHandlerLib.inf > > > > + > > > > + # The following is an example for used with StatusCodeHandler: > > > > +# > > > MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHan > > dlerRuntimeDxe.inf { > > > > +# > > > > +# > > > OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibN > > ull/OemHookStatusCodeLibNull.inf > > > > +# > > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.= in > > f > > > > +# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf > > > > +# > > BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf > > > > +# > > > NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeD > > xeBeepStatusCodeHandlerLib.inf > > > > +# } > > > > + > > > > +# > > > MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSm > > m.inf { > > > > +# > > > > +# > > > OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibN > > ull/OemHookStatusCodeLibNull.inf > > > > +# > > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.= in > > f > > > > +# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf > > > > +# > > BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf > > > > +# > > > NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeep > > StatusCodeHandlerLib.inf > > > > +# } > > > > + > > > > + # Add components here that should be included in the package build. > > > > + > > > > > +######################################################### > > ########################################## > > > > +# > > > > +# BuildOptions Section - Define the module specific tool chain flags t= hat > > should be used as > > > > +# the default flags for a module. These flags a= re appended to > > any > > > > +# standard flags that are defined by the build = process. They > can > > be > > > > +# applied for any modules or only those modules= with the > > specific > > > > +# module style (EDK or EDKII) specified in [Com= ponents] > section. > > > > +# > > > > +# For advanced features, it is recommended to e= nable > > [BuildOptions] in > > > > +# the applicable INF file so it does not affect= the whole board > > package > > > > +# build when this DSC file is active. > > > > +# > > > > > +######################################################### > > ########################################## > > > > +[BuildOptions] > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLi > > b.h > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLi > > b.h > > new file mode 100644 > > index 0000000000..f768acc557 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLi > > b.h > > @@ -0,0 +1,33 @@ > > +/** @file > > > > + Provides services to send progress/error codes to Beep device. > > > > + > > > > + Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#ifndef __BEEP_LIB_H__ > > > > +#define __BEEP_LIB_H__ > > > > + > > > > +/** > > > > + Sends a 32-bit value to Beep device. > > > > + > > > > + Sends the 32-bit value specified by Value to Beep device, and return= s > > Value. > > > > + Some implementations of this library function may perform I/O > operations > > > > + directly to Beep device. Other implementations may send Value to > > > > + ReportStatusCode(), and the status code reporting mechanism will > > eventually > > > > + display the 32-bit value on the status reporting device. > > > > + > > > > + Beep() must actively prevent recursion. If Beep() is called while > > > > + processing another Post Code Library function, then > > > > + Beep() must return Value immediately. > > > > + > > > > + @param Value Beep count. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +Beep ( > > > > + IN UINT32 Value > > > > + ); > > > > + > > > > +#endif > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepM > > apLib.h > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepM > > apLib.h > > new file mode 100644 > > index 0000000000..7600d72ecd > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepM > > apLib.h > > @@ -0,0 +1,32 @@ > > +/** @file > > > > + This library class provides Platform Beep Map. > > > > + > > > > + Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#ifndef __BEEP_MAP_LIB__ > > > > +#define __BEEP_MAP_LIB__ > > > > + > > > > +/** > > > > + Get BeepValue from status code type and value. > > > > + > > > > + @param CodeType Indicates the type of status code being rep= orted. > > > > + @param Value Describes the current status of a hardware = or > > > > + software entity. This includes information = about the class > and > > > > + subclass that is used to classify the entit= y as well as an > > operation. > > > > + For progress codes, the operation is the cu= rrent activity. > > > > + For error codes, it is the exception.For de= bug codes,it is not > > defined at this time. > > > > + > > > > + @return BeepValue > > > > + > > > > +**/ > > > > +UINT32 > > > > +EFIAPI > > > > +GetBeepValueFromStatusCode ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value > > > > + ); > > > > + > > > > +#endif > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.c > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.c > > new file mode 100644 > > index 0000000000..a0bd946b50 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.c > > @@ -0,0 +1,37 @@ > > +/** @file > > > > + BeepLib Null implementation. > > > > + > > > > + Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > +#include > > > > + > > > > +/** > > > > + NULL implemented of Beep() function, just return directly. > > > > + Normal Beep() function will do the following: > > > > + > > > > + Sends a 32-bit value to Beep device. > > > > + > > > > + Sends the 32-bit value specified by Value to Beep device, and return= s > > Value. > > > > + Some implementations of this library function may perform I/O > operations > > > > + directly to Beep device. Other implementations may send Value to > > > > + ReportStatusCode(), and the status code reporting mechanism will > > eventually > > > > + display the 32-bit value on the status reporting device. > > > > + > > > > + Beep() must actively prevent recursion. If Beep() is called while > > > > + processing another Post Code Library function, then > > > > + Beep() must return Value immediately. > > > > + > > > > + @param Value Beep count. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +Beep ( > > > > + IN UINT32 Value > > > > + ) > > > > +{ > > > > + return; > > > > +} > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.inf > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.inf > > new file mode 100644 > > index 0000000000..7f84dad082 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepLib/BeepLi > > bNull.inf > > @@ -0,0 +1,26 @@ > > +## @file > > > > +# Instance of Platform Beep Null Library. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x00010017 > > > > + BASE_NAME =3D BeepLib > > > > + FILE_GUID =3D 319F24D8-9F3E-4BEC-B1C4-C54BE51F3= FC2 > > > > + VERSION_STRING =3D 1.0 > > > > + MODULE_TYPE =3D BASE > > > > + LIBRARY_CLASS =3D BeepLib > > > > +# > > > > +# The following information is for reference only and not required by = the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC > > > > +# > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + > > > > +[Sources] > > > > + BeepLibNull.c > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.c > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.c > > new file mode 100644 > > index 0000000000..26c32dfd9b > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.c > > @@ -0,0 +1,116 @@ > > +/** @file > > > > + BeepMap implementation. > > > > + > > > > + Copyright (c) 2012 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > +#include > > > > + > > > > +#include "PlatformStatusCodesInternal.h" > > > > + > > > > +STATUS_CODE_TO_DATA_MAP mBeepProgressMap[] =3D { > > > > + // > > > > + // PEI > > > > + // > > > > + // Recovery > > > > + { PEI_RECOVERY_STARTED, 2 }, > > > > + > > > > + // > > > > + // DXE > > > > + // > > > > + > > > > + {0,0} > > > > +}; > > > > + > > > > +STATUS_CODE_TO_DATA_MAP mBeepErrorMap[] =3D { > > > > + // > > > > + // PEI > > > > + // > > > > + // Regular boot > > > > + { PEI_MEMORY_NOT_DETECTED, 1 }, > > > > + { PEI_MEMORY_INSTALLED_TWICE, 1 }, > > > > + { PEI_DXEIPL_NOT_FOUND, 3 }, > > > > + { PEI_DXE_CORE_NOT_FOUND, 3 }, > > > > + { PEI_RESET_NOT_AVAILABLE, 7 }, > > > > + // Recovery > > > > + { PEI_RECOVERY_FAILED, 4 }, > > > > + // S3 Resume > > > > + { PEI_S3_RESUME_FAILED, 4 }, > > > > + > > > > + // > > > > + // DXE > > > > + // > > > > + { DXE_ARCH_PROTOCOL_NOT_AVAILABLE, 4 }, > > > > + { DXE_NO_CON_OUT, 5 }, > > > > + { DXE_NO_CON_IN, 5 }, > > > > + { DXE_INVALID_PASSWORD, 1 }, > > > > + { DXE_FLASH_UPDATE_FAILED, 6 }, > > > > + { DXE_RESET_NOT_AVAILABLE, 7 }, > > > > + > > > > + {0,0} > > > > +}; > > > > + > > > > +STATUS_CODE_TO_DATA_MAP *mBeepStatusCodesMap[] =3D { > > > > + //#define EFI_PROGRESS_CODE 0x00000001 > > > > + mBeepProgressMap, > > > > + //#define EFI_ERROR_CODE 0x00000002 > > > > + mBeepErrorMap > > > > + //#define EFI_DEBUG_CODE 0x00000003 > > > > +}; > > > > + > > > > +/** > > > > + Find the beep data from status code value. > > > > + > > > > + @param Map The map used to find in. > > > > + @param Value The status code value. > > > > + > > > > + @return BeepValue 0 for not found. > > > > + > > > > +**/ > > > > +UINT32 > > > > +FindBeepData ( > > > > + IN STATUS_CODE_TO_DATA_MAP *Map, > > > > + IN EFI_STATUS_CODE_VALUE Value > > > > + ) > > > > +{ > > > > + while (Map->Value !=3D 0) { > > > > + if (Map->Value =3D=3D Value) { > > > > + return Map->Data; > > > > + } > > > > + Map++; > > > > + } > > > > + return 0; > > > > +} > > > > + > > > > +/** > > > > + Get BeepValue from status code type and value. > > > > + > > > > + @param CodeType Indicates the type of status code being rep= orted. > > > > + @param Value Describes the current status of a hardware = or > > > > + software entity. This includes information = about the class > and > > > > + subclass that is used to classify the entit= y as well as an > > operation. > > > > + For progress codes, the operation is the cu= rrent activity. > > > > + For error codes, it is the exception.For de= bug codes,it is not > > defined at this time. > > > > + > > > > + @return BeepValue > > > > +**/ > > > > +UINT32 > > > > +EFIAPI > > > > +GetBeepValueFromStatusCode ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value > > > > + ) > > > > +{ > > > > + UINT32 CodeTypeIndex; > > > > + > > > > + CodeTypeIndex =3D STATUS_CODE_TYPE (CodeType) - 1; > > > > + > > > > + if (CodeTypeIndex >=3D sizeof (mBeepStatusCodesMap) / > > sizeof(mBeepStatusCodesMap[0])) { > > > > + return 0; > > > > + } > > > > + > > > > + return FindBeepData (mBeepStatusCodesMap[CodeTypeIndex], Value); > > > > +} > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.inf > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.inf > > new file mode 100644 > > index 0000000000..b957eee07b > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/B > > eepMapLib.inf > > @@ -0,0 +1,27 @@ > > +## @file > > > > +# Instance of Beep Map Library. > > > > +# > > > > +# Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved. > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x00010017 > > > > + BASE_NAME =3D BeepMapLib > > > > + FILE_GUID =3D 8BAFA82F-DA9E-4cce-8FA2-9DA189D72= 46D > > > > + VERSION_STRING =3D 2.0 > > > > + MODULE_TYPE =3D BASE > > > > + LIBRARY_CLASS =3D BeepMapLib > > > > +# > > > > +# The following information is for reference only and not required by = the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC > > > > +# > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + > > > > +[Sources] > > > > + BeepMapLib.c > > > > + PlatformStatusCodesInternal.h > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Pl > > atformStatusCodesInternal.h > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Pl > > atformStatusCodesInternal.h > > new file mode 100644 > > index 0000000000..a36134c933 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepMapLib/Pl > > atformStatusCodesInternal.h > > @@ -0,0 +1,270 @@ > > +/** @file > > > > + Beep status code definition. > > > > + > > > > + Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#ifndef __PLATFORM_STATUS_CODES_INTERNAL_H__ > > > > +#define __PLATFORM_STATUS_CODES_INTERNAL_H__ > > > > + > > > > +#include > > > > + > > > > +typedef struct{ > > > > + EFI_STATUS_CODE_VALUE Value; > > > > + UINT32 Data; > > > > +} STATUS_CODE_TO_DATA_MAP; > > > > + > > > > +// > > > > +// Enable PEI/DXE status code > > > > +// > > > > +#define PEI_STATUS_CODE 1 > > > > +#define DXE_STATUS_CODE 1 > > > > + > > > > +#define STATUS_CODE_TYPE(Type) > > ((Type)&EFI_STATUS_CODE_TYPE_MASK) > > > > +#define STATUS_CODE_CLASS(Value) > > ((Value)&EFI_STATUS_CODE_CLASS_MASK) > > > > + > > > > +//Progress/Error codes > > > > +#define PEI_CORE_STARTED (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PEI_CORE_PC_ENTRY_POINT) > > > > +#define PEI_RESET_NOT_AVAILABLE (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PS_EC_RESET_NOT_AVAILABLE) > > > > +#define PEI_DXEIPL_NOT_FOUND (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PEI_CORE_EC_DXEIPL_NOT_FOUND) > > > > +#define PEI_DXE_CORE_NOT_FOUND (EFI_SOFTWARE_PEI_CORE > | > > EFI_SW_PEI_CORE_EC_DXE_CORRUPT) > > > > +#define PEI_S3_RESUME_ERROR (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PEI_EC_S3_RESUME_FAILED) > > > > +#define PEI_RECOVERY_FAILED (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PEI_EC_RECOVERY_FAILED) > > > > +#define DXE_CORE_STARTED (EFI_SOFTWARE_DXE_CORE | > > EFI_SW_DXE_CORE_PC_ENTRY_POINT) > > > > + > > > > +//#define DXE_EXIT_BOOT_SERVICES_BEGIN 0xF8 > > > > +#define DXE_EXIT_BOOT_SERVICES_END > > (EFI_SOFTWARE_EFI_BOOT_SERVICE | > > EFI_SW_BS_PC_EXIT_BOOT_SERVICES) > > > > + > > > > +// Reported by CPU PEIM > > > > +#define PEI_CAR_CPU_INIT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_PC_POWER_ON_INIT) > > > > + > > > > +// Reported by NB PEIM > > > > +//#define PEI_CAR_NB_INIT (EFI_COMPUTING_UNIT_CH= IPSET > | > > EFI_CU_CHIPSET_NORTH_INIT) > > > > + > > > > +// Reported by SB PEIM > > > > +//#define PEI_CAR_SB_INIT (EFI_COMPUTING_UNIT_CH= IPSET > | > > EFI_CU_CHIPSET_PC_SOUTH_INIT) > > > > + > > > > +//Reported by Memory Detection PEIM > > > > +#define PEI_MEMORY_SPD_READ > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_PC_SPD_READ) > > > > +#define PEI_MEMORY_PRESENCE_DETECT > > (EFI_COMPUTING_UNIT_MEMORY | > > EFI_CU_MEMORY_PC_PRESENCE_DETECT) > > > > +#define PEI_MEMORY_TIMING > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_PC_TIMING) > > > > +#define PEI_MEMORY_CONFIGURING > > (EFI_COMPUTING_UNIT_MEMORY | > EFI_CU_MEMORY_PC_CONFIGURING) > > > > +#define PEI_MEMORY_OPTIMIZING > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_PC_OPTIMIZING) > > > > +#define PEI_MEMORY_INIT > (EFI_COMPUTING_UNIT_MEMORY > > | EFI_CU_MEMORY_PC_INIT) > > > > +#define PEI_MEMORY_TEST > (EFI_COMPUTING_UNIT_MEMORY > > | EFI_CU_MEMORY_PC_TEST) > > > > +#define PEI_MEMORY_INVALID_TYPE > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_INVALID_TYPE) > > > > +#define PEI_MEMORY_INVALID_SPEED > > (EFI_COMPUTING_UNIT_MEMORY | > EFI_CU_MEMORY_EC_INVALID_SPEED) > > > > +#define PEI_MEMORY_SPD_FAIL > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_SPD_FAIL) > > > > +#define PEI_MEMORY_INVALID_SIZE > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_INVALID_SIZE) > > > > +#define PEI_MEMORY_MISMATCH > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_MISMATCH) > > > > +#define PEI_MEMORY_S3_RESUME_FAILED > > (EFI_COMPUTING_UNIT_MEMORY | > > EFI_CU_MEMORY_EC_S3_RESUME_FAIL) > > > > +#define PEI_MEMORY_NOT_DETECTED > > (EFI_COMPUTING_UNIT_MEMORY | > > EFI_CU_MEMORY_EC_NONE_DETECTED) > > > > +#define PEI_MEMORY_NONE_USEFUL > > (EFI_COMPUTING_UNIT_MEMORY | > EFI_CU_MEMORY_EC_NONE_USEFUL) > > > > +#define PEI_MEMORY_ERROR > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_EC_NON_SPECIFIC) > > > > +#define PEI_MEMORY_INSTALLED (EFI_SOFTWARE_PEI_SERVIC= E > | > > EFI_SW_PS_PC_INSTALL_PEI_MEMORY) > > > > +#define PEI_MEMORY_NOT_INSTALLED > > (EFI_SOFTWARE_PEI_SERVICE | > > EFI_SW_PEI_CORE_EC_MEMORY_NOT_INSTALLED) > > > > +#define PEI_MEMORY_INSTALLED_TWICE > > (EFI_SOFTWARE_PEI_SERVICE | > > EFI_SW_PS_EC_MEMORY_INSTALLED_TWICE) > > > > + > > > > +//Reported by CPU PEIM > > > > +#define PEI_CPU_INIT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_PC_INIT_BEGIN) > > > > +#define PEI_CPU_CACHE_INIT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > EFI_CU_HP_PC_CACHE_INIT) > > > > +#define PEI_CPU_BSP_SELECT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_BSP_SELECT) > > > > +#define PEI_CPU_AP_INIT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_AP_INIT) > > > > +#define PEI_CPU_SMM_INIT > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_SMM_INIT) > > > > +#define PEI_CPU_INVALID_TYPE > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_INVALID_TYPE) > > > > +#define PEI_CPU_INVALID_SPEED > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_INVALID_SPEED) > > > > +#define PEI_CPU_MISMATCH > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_MISMATCH) > > > > +#define PEI_CPU_SELF_TEST_FAILED > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_SELF_TEST) > > > > +#define PEI_CPU_CACHE_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_CACHE) > > > > +#define PEI_CPU_MICROCODE_UPDATE_FAILED > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_MICROCODE_UPDATE) > > > > +#define PEI_CPU_NO_MICROCODE > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_NO_MICROCODE_UPDATE) > > > > +//If non of the errors above apply use this one > > > > +#define PEI_CPU_INTERNAL_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_INTERNAL) > > > > +//Generic CPU error. It should only be used if non of the errors above > apply > > > > +#define PEI_CPU_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_EC_NON_SPECIFIC) > > > > + > > > > +// Reported by NB PEIM > > > > +#define PEI_MEM_NB_INIT (EFI_COMPUTING_UNIT_CHIP= SET > | > > EFI_CHIPSET_PC_PEI_MEM_NB_INIT) > > > > +// Reported by SB PEIM > > > > +#define PEI_MEM_SB_INIT (EFI_COMPUTING_UNIT_CHIP= SET > | > > EFI_CHIPSET_PC_PEI_MEM_SB_INIT) > > > > + > > > > +//Reported by PEIM which detected forced or auto recovery condition > > > > +#define PEI_RECOVERY_AUTO (EFI_SOFTWARE_PEI_MODULE= | > > EFI_SW_PEI_PC_RECOVERY_AUTO) > > > > +#define PEI_RECOVERY_USER (EFI_SOFTWARE_PEI_MODULE= | > > EFI_SW_PEI_PC_RECOVERY_USER) > > > > + > > > > +//Reported by DXE IPL > > > > +#define PEI_RECOVERY_PPI_NOT_FOUND > > (EFI_SOFTWARE_PEI_MODULE | > > EFI_SW_PEI_EC_RECOVERY_PPI_NOT_FOUND) > > > > +#define PEI_S3_RESUME_PPI_NOT_FOUND > > (EFI_SOFTWARE_PEI_MODULE | > > EFI_SW_PEI_EC_S3_RESUME_PPI_NOT_FOUND) > > > > +#define PEI_S3_RESUME_FAILED (EFI_SOFTWARE_PEI_MODULE > | > > EFI_SW_PEI_EC_S3_RESUME_FAILED) > > > > + > > > > +//Reported by Recovery PEIM > > > > +#define PEI_RECOVERY_STARTED (EFI_SOFTWARE_PEI_MODULE > | > > EFI_SW_PEI_PC_RECOVERY_BEGIN) > > > > +#define PEI_RECOVERY_CAPSULE_FOUND > > (EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_PC_CAPSULE_LOAD) > > > > +#define PEI_RECOVERY_NO_CAPSULE > > (EFI_SOFTWARE_PEI_MODULE | > EFI_SW_PEI_EC_NO_RECOVERY_CAPSULE) > > > > +#define PEI_RECOVERY_CAPSULE_LOADED > > (EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_PC_CAPSULE_START) > > > > +#define PEI_RECOVERY_INVALID_CAPSULE > > (EFI_SOFTWARE_PEI_MODULE | > > EFI_SW_PEI_EC_INVALID_CAPSULE_DESCRIPTOR) > > > > + > > > > +//Reported by S3 Resume PEIM > > > > +#define PEI_S3_BOOT_SCRIPT (EFI_SOFTWARE_PEI_MODULE= | > > EFI_SW_PEI_PC_S3_BOOT_SCRIPT) > > > > +#define PEI_S3_OS_WAKE (EFI_SOFTWARE_PEI_MODULE= | > > EFI_SW_PEI_PC_OS_WAKE) > > > > +#define PEI_S3_BOOT_SCRIPT_ERROR > > (EFI_SOFTWARE_PEI_MODULE | > EFI_SW_PEI_EC_S3_BOOT_SCRIPT_ERROR) > > > > +#define PEI_S3_OS_WAKE_ERROR > (EFI_SOFTWARE_PEI_MODULE > > | EFI_SW_PEI_EC_S3_OS_WAKE_ERROR) > > > > + > > > > +#define PEI_PEIM_STARTED (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PC_INIT_BEGIN) > > > > +#define PEI_PEIM_ENDED (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PC_INIT_END) > > > > + > > > > +//Reported by DXE IPL > > > > +#define PEI_DXE_IPL_STARTED (EFI_SOFTWARE_PEI_CORE | > > EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT) > > > > + > > > > +//Reported by PEIM which installs Reset PPI > > > > +#define PEI_RESET_SYSTEM (EFI_SOFTWARE_PEI_SERVIC= E | > > EFI_SW_PS_PC_RESET_SYSTEM) > > > > + > > > > +//Reported by the PEIM or DXE driver which detected the error > > > > +#define GENERIC_MEMORY_CORRECTABLE_ERROR > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_CORRECTABLE) > > > > +#define GENERIC_MEMORY_UNCORRECTABLE_ERROR > > (EFI_COMPUTING_UNIT_MEMORY | > > EFI_CU_MEMORY_EC_UNCORRECTABLE) > > > > + > > > > +//Reported by Flash Update DXE driver > > > > +#define DXE_FLASH_UPDATE_FAILED > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_UPDATE_FAIL) > > > > + > > > > +//Reported by the PEIM or DXE driver which detected the error > > > > +#define GENERIC_CPU_THERMAL_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_THERMAL) > > > > +#define GENERIC_CPU_LOW_VOLTAGE > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_LOW_VOLTAGE) > > > > +#define GENERIC_CPU_HIGH_VOLTAGE > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_HIGH_VOLTAGE) > > > > +#define GENERIC_CPU_CORRECTABLE_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_CORRECTABLE) > > > > +#define GENERIC_CPU_UNCORRECTABLE_ERROR > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | > > EFI_CU_HP_EC_UNCORRECTABLE) > > > > +#define GENERIC_BAD_DATE_TIME_ERROR > > (EFI_SOFTWARE_UNSPECIFIED | EFI_SW_EC_BAD_DATE_TIME) > > > > +#define GENERIC_MEMORY_SIZE_DECREASE > > (EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_MISMATCH) > > > > + > > > > +//Reported by DXE Core > > > > +#define DXE_DRIVER_STARTED > > (EFI_SOFTWARE_EFI_DXE_SERVICE | EFI_SW_PC_INIT_BEGIN) > > > > +#define DXE_DRIVER_ENED (EFI_SOFTWARE_DXE_CORE | > > EFI_SW_PC_INIT_END) > > > > +#define DXE_ARCH_PROTOCOLS_AVAILABLE > > (EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_ARCH_READY) > > > > +#define DXE_DRIVER_CONNECTED (EFI_SOFTWARE_DXE_CORE | > > EFI_SW_DXE_CORE_PC_START_DRIVER) > > > > +#define DXE_ARCH_PROTOCOL_NOT_AVAILABLE > > (EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_EC_NO_ARCH) > > > > + > > > > +//Reported by DXE CPU driver > > > > +#define DXE_CPU_SELF_TEST_FAILED > > (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_SELF_TEST) > > > > + > > > > +//Reported by PCI Host Bridge driver > > > > +#define DXE_NB_HB_INIT (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_PC_DXE_HB_INIT ) > > > > + > > > > +// Reported by NB Driver > > > > +#define DXE_NB_INIT (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_PC_DXE_NB_INIT ) > > > > +#define DXE_NB_SMM_INIT > (EFI_COMPUTING_UNIT_CHIPSET | > > EFI_CHIPSET_PC_DXE_NB_SMM_INIT ) > > > > +#define DXE_NB_ERROR (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_EC_DXE_NB_ERROR ) > > > > + > > > > +// Reported by SB Driver(s) > > > > +#define DXE_SBRUN_INIT (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_PC_DXE_SB_RT_INIT ) > > > > +#define DXE_SB_INIT (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_PC_DXE_SB_INIT ) > > > > +#define DXE_SB_SMM_INIT (EFI_COMPUTING_UNIT_CHIP= SET > | > > EFI_CHIPSET_PC_DXE_SB_SMM_INIT ) > > > > +#define DXE_SB_DEVICES_INIT > (EFI_COMPUTING_UNIT_CHIPSET > > | EFI_CHIPSET_PC_DXE_SB_DEVICES_INIT ) > > > > +#define DXE_SB_BAD_BATTERY > (EFI_COMPUTING_UNIT_CHIPSET > > | EFI_CHIPSET_EC_BAD_BATTERY) > > > > +#define DXE_SB_ERROR (EFI_COMPUTING_UNIT_CHIP= SET | > > EFI_CHIPSET_EC_DXE_SB_ERROR ) > > > > + > > > > +//Reported by DXE Core > > > > +#define DXE_BDS_STARTED (EFI_SOFTWARE_DXE_CORE | > > EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT) > > > > + > > > > +//Reported by BDS > > > > +//#define DXE_BDS_CONNECT_DRIVERS > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS) > > > > + > > > > +//Reported by Boot Manager > > > > +#define DXE_READY_TO_BOOT > (EFI_SOFTWARE_DXE_BS_DRIVER > > | EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT) > > > > + > > > > +//Reported by DXE Core > > > > +#define DXE_EXIT_BOOT_SERVICES > > (EFI_SOFTWARE_EFI_BOOT_SERVICE | > > EFI_SW_BS_PC_EXIT_BOOT_SERVICES) > > > > +#define DXE_EXIT_BOOT_SERVICES_EVENT > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT) > > > > + > > > > +//Reported by driver that installs Runtime AP > > > > +#define RT_SET_VIRTUAL_ADDRESS_MAP_BEGIN > > (EFI_SOFTWARE_EFI_RUNTIME_SERVICE | > > EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP) > > > > +#define RT_SET_VIRTUAL_ADDRESS_MAP_END > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT) > > > > + > > > > +//Reported by CSM > > > > +#define DXE_LEGACY_OPROM_INIT > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT) > > > > +#define DXE_LEGACY_BOOT (EFI_SOFTWARE_DXE_BS_DRI= VER > | > > EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT) > > > > +#define DXE_LEGACY_OPROM_NO_SPACE > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE) > > > > + > > > > +//Reported by SETUP > > > > +//#define DXE_SETUP_VERIFYING_PASSWORD > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD) > > > > +#define DXE_SETUP_START (EFI_SOFTWARE_DXE_BS_DRI= VER > | > > EFI_SW_PC_USER_SETUP) > > > > +#define DXE_SETUP_INPUT_WAIT > > (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_PC_INPUT_WAIT) > > > > +#define DXE_INVALID_PASSWORD > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_EC_INVALID_PASSWORD) > > > > +#define DXE_INVALID_IDE_PASSWORD > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_EC_INVALID_IDE_PASSWORD) > > > > +#define DXE_BOOT_OPTION_LOAD_ERROR > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR) > > > > +#define DXE_BOOT_OPTION_FAILED > > (EFI_SOFTWARE_DXE_BS_DRIVER | > > EFI_SW_DXE_BS_EC_BOOT_OPTION_FAILED) > > > > + > > > > +//Reported by a Driver that installs Reset AP > > > > +#define DXE_RESET_SYSTEM > > (EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_RESET_SYSTEM) > > > > +#define DXE_RESET_NOT_AVAILABLE > > (EFI_SOFTWARE_EFI_RUNTIME_SERVICE | > > EFI_SW_PS_EC_RESET_NOT_AVAILABLE) > > > > + > > > > +// Reported by PCI bus driver > > > > +#define DXE_PCI_BUS_BEGIN (EFI_IO_BUS_PCI | > > EFI_IOB_PC_INIT) > > > > +#define DXE_PCI_BUS_ENUM (EFI_IO_BUS_PCI | > > EFI_IOB_PCI_PC_BUS_ENUM) > > > > +#define DXE_PCI_BUS_HPC_INIT (EFI_IO_BUS_PCI | > > EFI_IOB_PCI_PC_HPC_INIT) > > > > +#define DXE_PCI_BUS_REQUEST_RESOURCES (EFI_IO_BUS_PCI | > > EFI_IOB_PCI_PC_RES_ALLOC) > > > > +#define DXE_PCI_BUS_ASSIGN_RESOURCES (EFI_IO_BUS_PCI | > > EFI_IOB_PC_ENABLE) > > > > +#define DXE_PCI_BUS_HOTPLUG (EFI_IO_BUS_PCI | > > EFI_IOB_PC_HOTPLUG) > > > > +#define DXE_PCI_BUS_OUT_OF_RESOURCES (EFI_IO_BUS_PCI | > > EFI_IOB_EC_RESOURCE_CONFLICT) > > > > + > > > > +// Reported by USB bus driver > > > > +#define DXE_USB_BEGIN (EFI_IO_BUS_USB | > EFI_IOB_PC_INIT) > > > > +#define DXE_USB_RESET (EFI_IO_BUS_USB | > > EFI_IOB_PC_RESET) > > > > +#define DXE_USB_DETECT (EFI_IO_BUS_USB | > > EFI_IOB_PC_DETECT) > > > > +#define DXE_USB_ENABLE (EFI_IO_BUS_USB | > > EFI_IOB_PC_ENABLE) > > > > +#define DXE_USB_HOTPLUG (EFI_IO_BUS_USB | > > EFI_IOB_PC_HOTPLUG) > > > > + > > > > +//Reported by IDE bus driver > > > > +#define DXE_IDE_BEGIN (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_PC_INIT) > > > > +#define DXE_IDE_RESET (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_PC_RESET) > > > > +#define DXE_IDE_DETECT (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_PC_DETECT) > > > > +#define DXE_IDE_ENABLE (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_PC_ENABLE) > > > > +#define DXE_IDE_SMART_ERROR (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD) > > > > +#define DXE_IDE_CONTROLLER_ERROR (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_EC_CONTROLLER_ERROR) > > > > +#define DXE_IDE_DEVICE_FAILURE (EFI_IO_BUS_ATA_ATAPI | > > EFI_IOB_EC_INTERFACE_ERROR) > > > > + > > > > +// Reported by SCSI bus driver > > > > +#define DXE_SCSI_BEGIN (EFI_IO_BUS_SCSI | > EFI_IOB_PC_INIT) > > > > +#define DXE_SCSI_RESET (EFI_IO_BUS_SCSI | > > EFI_IOB_PC_RESET) > > > > +#define DXE_SCSI_DETECT (EFI_IO_BUS_SCSI | > > EFI_IOB_PC_DETECT) > > > > +#define DXE_SCSI_ENABLE (EFI_IO_BUS_SCSI | > > EFI_IOB_PC_ENABLE) > > > > + > > > > +// Reported by Super I/O driver > > > > +#define DXE_SIO_INIT (EFI_IO_BUS_LPC | EFI_IO= B_PC_INIT) > > > > + > > > > +// Reported by Keyboard driver > > > > +#define DXE_KEYBOARD_INIT (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_INIT) > > > > +#define DXE_KEYBOARD_RESET (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_RESET) > > > > +#define DXE_KEYBOARD_DISABLE (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_DISABLE) > > > > +#define DXE_KEYBOARD_DETECT (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_PRESENCE_DETECT) > > > > +#define DXE_KEYBOARD_ENABLE (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_ENABLE) > > > > +#define DXE_KEYBOARD_CLEAR_BUFFER > > (EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_CLEAR_BUFFER) > > > > +#define DXE_KEYBOARD_SELF_TEST (EFI_PERIPHERAL_KEYBOARD > | > > EFI_P_KEYBOARD_PC_SELF_TEST) > > > > + > > > > +// Reported by Mouse driver > > > > +#define DXE_MOUSE_INIT (EFI_PERIPHERAL_MOUSE | > > EFI_P_PC_INIT) > > > > +#define DXE_MOUSE_RESET (EFI_PERIPHERAL_MOUSE | > > EFI_P_PC_RESET) > > > > +#define DXE_MOUSE_DISABLE (EFI_PERIPHERAL_MOUSE | > > EFI_P_PC_DISABLE) > > > > +#define DXE_MOUSE_DETECT (EFI_PERIPHERAL_MOUSE | > > EFI_P_PC_PRESENCE_DETECT) > > > > +#define DXE_MOUSE_ENABLE (EFI_PERIPHERAL_MOUSE | > > EFI_P_PC_ENABLE) > > > > + > > > > +// Reported by Mass Storage drivers > > > > +#define DXE_FIXED_MEDIA_INIT > (EFI_PERIPHERAL_FIXED_MEDIA > > | EFI_P_PC_INIT) > > > > +#define DXE_FIXED_MEDIA_RESET > (EFI_PERIPHERAL_FIXED_MEDIA > > | EFI_P_PC_RESET) > > > > +#define DXE_FIXED_MEDIA_DISABLE > > (EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_PC_DISABLE) > > > > +#define DXE_FIXED_MEDIA_DETECT > > (EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_PC_PRESENCE_DETECT) > > > > +#define DXE_FIXED_MEDIA_ENABLE > > (EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_PC_ENABLE) > > > > +#define DXE_REMOVABLE_MEDIA_INIT > > (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_INIT) > > > > +#define DXE_REMOVABLE_MEDIA_RESET > > (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_RESET) > > > > +#define DXE_REMOVABLE_MEDIA_DISABLE > > (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_DISABLE) > > > > +#define DXE_REMOVABLE_MEDIA_DETECT > > (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_PRESENCE_DETECT) > > > > +#define DXE_REMOVABLE_MEDIA_ENABLE > > (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_ENABLE) > > > > + > > > > + > > > > +// Reported by BDS > > > > +#define DXE_CON_OUT_CONNECT > > (EFI_PERIPHERAL_LOCAL_CONSOLE | EFI_P_PC_INIT) > > > > +#define DXE_CON_IN_CONNECT (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_PC_INIT) > > > > +#define DXE_NO_CON_OUT > > (EFI_PERIPHERAL_LOCAL_CONSOLE | EFI_P_EC_NOT_DETECTED) > > > > +#define DXE_NO_CON_IN (EFI_PERIPHERAL_KEYBOARD= | > > EFI_P_EC_NOT_DETECTED) > > > > + > > > > +#endif > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.c > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.c > > new file mode 100644 > > index 0000000000..a29d948951 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.c > > @@ -0,0 +1,101 @@ > > +/** @file > > > > + Beep status code implementation. > > > > + > > > > + Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > + > > > > +#include > > > > +#include > > > > + > > > > +/** > > > > + Convert status code value to the times of beep. > > > > + > > > > + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES > table > > published by the PEI Foundation. > > > > + @param CodeType Indicates the type of status code being rep= orted. > > > > + @param Value Describes the current status of a hardware = or > > > > + software entity. This includes information = about the class > and > > > > + subclass that is used to classify the entit= y as well as an > > operation. > > > > + For progress codes, the operation is the cu= rrent activity. > > > > + For error codes, it is the exception.For de= bug codes,it is not > > defined at this time. > > > > + @param Instance The enumeration of a hardware or software e= ntity > > within > > > > + the system. A system may contain multiple e= ntities that > match > > a class/subclass > > > > + pairing. The instance differentiates betwee= n them. An > > instance of 0 indicates > > > > + that instance information is unavailable, n= ot meaningful, or > > not relevant. > > > > + Valid instance numbers start with 1. > > > > + @param CallerId This optional parameter may be used to iden= tify > the > > caller. > > > > + This parameter allows the status code drive= r to apply > different > > rules to > > > > + different callers. > > > > + @param Data This optional parameter may be used to pass > > additional data. > > > > + > > > > + @retval EFI_SUCCESS Status code reported to beep successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +BeepStatusCodeReportWorker ( > > > > + IN CONST EFI_PEI_SERVICES **PeiServices, > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN CONST EFI_GUID *CallerId, > > > > + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > +{ > > > > + UINT32 BeepValue; > > > > + > > > > + BeepValue =3D GetBeepValueFromStatusCode (CodeType, Value); > > > > + if (BeepValue !=3D 0) { > > > > + Beep (BeepValue); > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > +/** > > > > + Constructor function of PeiBeepStatusCodeHandlerLib. > > > > + > > > > + This function is the constructor function of this Beep Status Code H= andler > > Library for PEI Phase. > > > > + It check whether need beep, and register it to gEfiPeiRscHandlerPpiG= uid. > > > > + > > > > + @param FileHandle Handle of the file being invoked. > > > > + @param PeiServices Describes the list of possible PEI Services. > > > > + > > > > + @retval EFI_SUCESS The entry point of DXE IPL PEIM executes > successfully. > > > > + > > > > +**/ > > > > +RETURN_STATUS > > > > +EFIAPI > > > > +PeiBeepStatusCodeHandlerLibConstructor ( > > > > + IN EFI_PEI_FILE_HANDLE FileHandle, > > > > + IN CONST EFI_PEI_SERVICES **PeiServices > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + EFI_PEI_RSC_HANDLER_PPI *RscHandlerPpi; > > > > + > > > > + if (!PcdGetBool (PcdStatusCodeUseBeep)) { > > > > + return RETURN_SUCCESS; > > > > + } > > > > + > > > > + Status =3D PeiServicesLocatePpi ( > > > > + &gEfiPeiRscHandlerPpiGuid, > > > > + 0, > > > > + NULL, > > > > + (VOID **) &RscHandlerPpi > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + Status =3D RscHandlerPpi->Register (BeepStatusCodeReportWorker); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + return RETURN_SUCCESS; > > > > +} > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.inf > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.inf > > new file mode 100644 > > index 0000000000..421b246663 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/PeiBeepStatusCodeHandlerLib.inf > > @@ -0,0 +1,49 @@ > > +## @file > > > > +# Beep status code implementation. > > > > +# > > > > +# Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# vendor. This file may not be modified, except as allowed by > > > > +# additional terms of your license agreement. > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x00010005 > > > > + BASE_NAME =3D PeiBeepStatusCodeHandlerLib > > > > + FILE_GUID =3D C4210E71-0A38-4728-8D25-4876348AA= 380 > > > > + MODULE_TYPE =3D PEIM > > > > + CONSTRUCTOR =3D PeiBeepStatusCodeHandlerLibConstr= uctor > > > > + LIBRARY_CLASS =3D StatusCodeHandlerLib|SEC PEIM PEI= _COR > > > > + > > > > +# > > > > +# The following information is for reference only and not required by = the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC (EBC is only for= build) > > > > +# > > > > + > > > > +[Sources] > > > > + PeiBeepStatusCodeHandlerLib.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec > > > > + > > > > +[LibraryClasses] > > > > + PeiServicesLib > > > > + PcdLib > > > > + DebugLib > > > > + ReportStatusCodeLib > > > > + BeepMapLib > > > > + BeepLib > > > > + > > > > +[Pcd] > > > > + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep > > ## CONSUMES > > > > + > > > > +[Ppis] > > > > + gEfiPeiRscHandlerPpiGuid ## CONSUMES > > > > + > > > > +[Depex] > > > > + TRUE > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.c > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.c > > new file mode 100644 > > index 0000000000..631e2eecae > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.c > > @@ -0,0 +1,184 @@ > > +/** @file > > > > + Beep status code implementation. > > > > + > > > > + Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > + > > > > +#include > > > > +#include > > > > + > > > > +EFI_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol =3D NULL; > > > > +EFI_EVENT mExitBootServicesEvent =3D NULL; > > > > +BOOLEAN mRegistered =3D FALSE; > > > > + > > > > +/** > > > > + Convert status code value to the times of beep. > > > > + > > > > + @param CodeType Indicates the type of status code being rep= orted. > > > > + @param Value Describes the current status of a hardware = or > > > > + software entity. This includes information = about the class > and > > > > + subclass that is used to classify the entit= y as well as an > > operation. > > > > + For progress codes, the operation is the cu= rrent activity. > > > > + For error codes, it is the exception.For de= bug codes,it is not > > defined at this time. > > > > + @param Instance The enumeration of a hardware or software e= ntity > > within > > > > + the system. A system may contain multiple e= ntities that > match > > a class/subclass > > > > + pairing. The instance differentiates betwee= n them. An > > instance of 0 indicates > > > > + that instance information is unavailable, n= ot meaningful, or > > not relevant. > > > > + Valid instance numbers start with 1. > > > > + @param CallerId This optional parameter may be used to iden= tify > the > > caller. > > > > + This parameter allows the status code drive= r to apply > different > > rules to > > > > + different callers. > > > > + @param Data This optional parameter may be used to pass > > additional data. > > > > + > > > > + @retval EFI_SUCCESS Status code reported to beep successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +BeepStatusCodeReportWorker ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN EFI_GUID *CallerId, > > > > + IN EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > +{ > > > > + UINT32 BeepValue; > > > > + > > > > + BeepValue =3D GetBeepValueFromStatusCode (CodeType, Value); > > > > + if (BeepValue !=3D 0) { > > > > + Beep (BeepValue); > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > +/** > > > > + Unregister status code callback functions only available at boot tim= e from > > > > + report status code router when exiting boot services. > > > > + > > > > + @param Event Event whose notification function is being inv= oked. > > > > + @param Context Pointer to the notification function's context= , which > is > > > > + always zero in current implementation. > > > > + > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +UnregisterBeepBootTimeHandlers ( > > > > + IN EFI_EVENT Event, > > > > + IN VOID *Context > > > > + ) > > > > +{ > > > > + if (mRegistered) { > > > > + mRscHandlerProtocol->Unregister (BeepStatusCodeReportWorker); > > > > + } > > > > +} > > > > + > > > > +/** > > > > + Register status code callback function only when Report Status Code > > protocol > > > > + is installed. > > > > + > > > > + @param Event Event whose notification function is being inv= oked. > > > > + @param Context Pointer to the notification function's context= , which > is > > > > + always zero in current implementation. > > > > + > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +RegisterBeepBootTimeHandlers ( > > > > + IN EFI_EVENT Event, > > > > + IN VOID *Context > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + > > > > + Status =3D gBS->LocateProtocol ( > > > > + &gEfiRscHandlerProtocolGuid, > > > > + NULL, > > > > + (VOID **) &mRscHandlerProtocol > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + mRscHandlerProtocol->Register (BeepStatusCodeReportWorker, > > TPL_HIGH_LEVEL); > > > > + ASSERT_EFI_ERROR (Status); > > > > + mRegistered =3D TRUE; > > > > + > > > > + Status =3D gBS->CreateEventEx ( > > > > + EVT_NOTIFY_SIGNAL, > > > > + TPL_NOTIFY, > > > > + UnregisterBeepBootTimeHandlers, > > > > + NULL, > > > > + &gEfiEventExitBootServicesGuid, > > > > + &mExitBootServicesEvent > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > +} > > > > + > > > > +/** > > > > + Constructor function of RuntimeDxeBeepStatusCodeHandlerLib. > > > > + > > > > + This function allocates memory for extended status code data, caches > > > > + the report status code service, and registers events. > > > > + > > > > + @param ImageHandle The firmware allocated handle for the EFI imag= e. > > > > + @param SystemTable A pointer to the EFI System Table. > > > > + > > > > + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RuntimeDxeBeepStatusCodeHandlerLibConstructor ( > > > > + IN EFI_HANDLE ImageHandle, > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + EFI_EVENT RegisterStatusCodeHandlerEvent; > > > > + VOID *Registration; > > > > + > > > > + if (!PcdGetBool (PcdStatusCodeUseBeep)) { > > > > + return EFI_SUCCESS; > > > > + } > > > > + > > > > + Status =3D gBS->LocateProtocol ( > > > > + &gEfiRscHandlerProtocolGuid, > > > > + NULL, > > > > + (VOID **) &mRscHandlerProtocol > > > > + ); > > > > + > > > > + if (!EFI_ERROR (Status)) { > > > > + RegisterBeepBootTimeHandlers (NULL, NULL); > > > > + } else { > > > > + Status =3D gBS->CreateEvent ( > > > > + EVT_NOTIFY_SIGNAL, > > > > + TPL_NOTIFY, > > > > + RegisterBeepBootTimeHandlers, > > > > + NULL, > > > > + &RegisterStatusCodeHandlerEvent > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + // > > > > + // Register for protocol notifications on this event > > > > + // > > > > + Status =3D gBS->RegisterProtocolNotify ( > > > > + &gEfiRscHandlerProtocolGuid, > > > > + RegisterStatusCodeHandlerEvent, > > > > + &Registration > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf > > new file mode 100644 > > index 0000000000..b9aae39128 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf > > @@ -0,0 +1,51 @@ > > +## @file > > > > +# Beep status code implementation. > > > > +# > > > > +# Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# vendor. This file may not be modified, except as allowed by > > > > +# additional terms of your license agreement. > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x00010005 > > > > + BASE_NAME =3D RuntimeDxeBeepStatusCodeHandlerLi= b > > > > + FILE_GUID =3D D05F43CE-7C70-4663-848F-8265C311A= 8A5 > > > > + MODULE_TYPE =3D DXE_RUNTIME_DRIVER > > > > + VERSION_STRING =3D 1.0 > > > > + CONSTRUCTOR =3D > > RuntimeDxeBeepStatusCodeHandlerLibConstructor > > > > + LIBRARY_CLASS =3D > StatusCodeHandlerLib|DXE_RUNTIME_DRIVER > > > > + > > > > +# > > > > +# The following information is for reference only and not required by = the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC (EBC is only for= build) > > > > +# > > > > + > > > > +[Sources] > > > > + RuntimeDxeBeepStatusCodeHandlerLib.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec > > > > + > > > > +[LibraryClasses] > > > > + UefiBootServicesTableLib > > > > + UefiRuntimeLib > > > > + PcdLib > > > > + DebugLib > > > > + ReportStatusCodeLib > > > > + BeepMapLib > > > > + BeepLib > > > > + > > > > +[Pcd] > > > > + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep > > ## CONSUMES > > > > + > > > > +[Protocols] > > > > + gEfiRscHandlerProtocolGuid ## CONSUMES > > > > + > > > > +[Depex] > > > > + TRUE > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.c > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.c > > new file mode 100644 > > index 0000000000..6b1125f4c2 > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.c > > @@ -0,0 +1,138 @@ > > +/** @file > > > > + Beep status code implementation. > > > > + > > > > + Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > + > > > > +#include > > > > +#include > > > > + > > > > +/** > > > > + Convert status code value to the times of beep. > > > > + > > > > + @param CodeType Indicates the type of status code being rep= orted. > > > > + @param Value Describes the current status of a hardware = or > > > > + software entity. This includes information = about the class > and > > > > + subclass that is used to classify the entit= y as well as an > > operation. > > > > + For progress codes, the operation is the cu= rrent activity. > > > > + For error codes, it is the exception.For de= bug codes,it is not > > defined at this time. > > > > + @param Instance The enumeration of a hardware or software e= ntity > > within > > > > + the system. A system may contain multiple e= ntities that > match > > a class/subclass > > > > + pairing. The instance differentiates betwee= n them. An > > instance of 0 indicates > > > > + that instance information is unavailable, n= ot meaningful, or > > not relevant. > > > > + Valid instance numbers start with 1. > > > > + @param CallerId This optional parameter may be used to iden= tify > the > > caller. > > > > + This parameter allows the status code drive= r to apply > different > > rules to > > > > + different callers. > > > > + @param Data This optional parameter may be used to pass > > additional data. > > > > + > > > > + @retval EFI_SUCCESS Status code reported to beep successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +BeepStatusCodeReportWorker ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN EFI_GUID *CallerId, > > > > + IN EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > +{ > > > > + UINT32 BeepValue; > > > > + > > > > + BeepValue =3D GetBeepValueFromStatusCode (CodeType, Value); > > > > + if (BeepValue !=3D 0) { > > > > + Beep (BeepValue); > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > +/** > > > > + Register status code callback function only when Report Status Code > > protocol > > > > + is installed. > > > > + > > > > + @param Protocol Points to the protocol's unique identifier. > > > > + @param Interface Points to the interface instance. > > > > + @param Handle The handle on which the interface was installe= d. > > > > + > > > > + @retval EFI_SUCCESS Notification runs successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RegisterBeepBootTimeHandlers ( > > > > + IN CONST EFI_GUID *Protocol, > > > > + IN VOID *Interface, > > > > + IN EFI_HANDLE Handle > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + EFI_SMM_RSC_HANDLER_PROTOCOL *RscHandlerProtocol; > > > > + > > > > + Status =3D gSmst->SmmLocateProtocol ( > > > > + &gEfiSmmRscHandlerProtocolGuid, > > > > + NULL, > > > > + (VOID **) &RscHandlerProtocol > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + RscHandlerProtocol->Register (BeepStatusCodeReportWorker); > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > +/** > > > > + Constructor function of SmmBeepStatusCodeHandlerLib. > > > > + > > > > + This function allocates memory for extended status code data, caches > > > > + the report status code service, and registers events. > > > > + > > > > + @param ImageHandle The firmware allocated handle for the EFI imag= e. > > > > + @param SystemTable A pointer to the EFI System Table. > > > > + > > > > + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmBeepStatusCodeHandlerLibConstructor ( > > > > + IN EFI_HANDLE ImageHandle, > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + VOID *Registration; > > > > + EFI_SMM_RSC_HANDLER_PROTOCOL *RscHandlerProtocol; > > > > + > > > > + if (!PcdGetBool (PcdStatusCodeUseBeep)) { > > > > + return EFI_SUCCESS; > > > > + } > > > > + > > > > + Status =3D gSmst->SmmLocateProtocol ( > > > > + &gEfiSmmRscHandlerProtocolGuid, > > > > + NULL, > > > > + (VOID **) &RscHandlerProtocol > > > > + ); > > > > + if (!EFI_ERROR (Status)) { > > > > + RegisterBeepBootTimeHandlers (NULL, NULL, NULL); > > > > + } else { > > > > + gSmst->SmmRegisterProtocolNotify ( > > > > + &gEfiSmmRscHandlerProtocolGuid, > > > > + RegisterBeepBootTimeHandlers, > > > > + &Registration > > > > + ); > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > diff --git > > > a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.inf > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.inf > > new file mode 100644 > > index 0000000000..caa82264ae > > --- /dev/null > > +++ > > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCod > > eHandlerLib/SmmBeepStatusCodeHandlerLib.inf > > @@ -0,0 +1,50 @@ > > +## @file > > > > +# Beep status code implementation. > > > > +# > > > > +# Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved. > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# vendor. This file may not be modified, except as allowed by > > > > +# additional terms of your license agreement. > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x00010005 > > > > + BASE_NAME =3D SmmBeepStatusCodeHandlerLib > > > > + FILE_GUID =3D 2E2BC2D4-572D-4663-9A1E-FB52FA309= 22A > > > > + MODULE_TYPE =3D DXE_SMM_DRIVER > > > > + VERSION_STRING =3D 1.0 > > > > + CONSTRUCTOR =3D SmmBeepStatusCodeHandlerLibConstr= uctor > > > > + LIBRARY_CLASS =3D StatusCodeHandlerLib|DXE_SMM_DRIV= ER > > > > + > > > > +# > > > > +# The following information is for reference only and not required by = the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC (EBC is only for= build) > > > > +# > > > > + > > > > +[Sources] > > > > + SmmBeepStatusCodeHandlerLib.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec > > > > + > > > > +[LibraryClasses] > > > > + SmmServicesTableLib > > > > + PcdLib > > > > + DebugLib > > > > + ReportStatusCodeLib > > > > + BeepMapLib > > > > + BeepLib > > > > + > > > > +[Pcd] > > > > + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep > > ## CONSUMES > > > > + > > > > +[Protocols] > > > > + gEfiSmmRscHandlerProtocolGuid ## CONSUMES > > > > + > > > > +[Depex] > > > > + TRUE > > > > diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md > > b/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md > > new file mode 100644 > > index 0000000000..ee254d0f99 > > --- /dev/null > > +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md > > @@ -0,0 +1,125 @@ > > +# Overview > > > > +* **Feature Name:** Beep Debug > > > > +* **PI Phase(s) Supported:** PEI, DXE, SMM > > > > +* **SMM Required?** Yes > > > > + > > > > +More Information: > > > > + > > > > +## Purpose > > > > +The BeepDebugFeaturePkg include some useful beep debug libraries, > such > > as get beep value from status code and beep. > > > > +This is an important capability in firmware development to get and ana= lyze > > the early error when there is not serial port. > > > > + > > > > + > > > > +# High-Level Theory of Operation > > > > +It provide a library BeepStatusCodeHandlerLib used by edk2 > > StatusCodeHandler.efi, used to do beep if needed. > > > > +It also provide a library of BeepMap lib, it map the status code to be= ep > value. > > > > +A library of Beep lib is needed by platform, and this pkg has a Null > > implementation. > > > > + > > > > +In the library contstructor function, BeepStatusCodeHandlerLib registe= r > the > > call back function for ReportStatusCode. > > > > +When called, it call GetBeepFromStatusCode() in BeepMapLib to get beep > > value from status code, and call Beep() in BeepLib to beep. > > > > + > > > > +BeepStatusCodeHandlerLib include 3 libraries for PEI, RuntimeDxe, SMM: > > > > +* PeiBeepStatusCodeHandlerLib > > > > +* RuntimeDxeBeepStatusCodeHandlerLib > > > > +* SmmBeepStatusCodeHandlerLib > > > > + > > > > +## Firmware Volumes > > > > +Linked with StatusCodeHandler.efi, and make sure put the > > StatusCodeHandler.efi after the ReportStatusCodeRouter.efi. > > > > + > > > > +## Modules > > > > +* BeepStatusCodeHandlerLib > > > > +* BeepMapLib > > > > +* BeepLibNull > > > > + > > > > +## BeepStatusCodeHandlerLib > > > > +This library register the call back function for ReportStatusCode, and= get > > beep valude from status code, and do beep. > > > > + > > > > +## BeepMapLib > > > > +This library provide a function to get beep value from status code. > > > > + > > > > +## Key Functions > > > > +* In PeiBeepStatusCodeHandlerLib: > > > > + EFI_STATUS > > > > + EFIAPI > > > > + BeepStatusCodeReportWorker ( > > > > + IN CONST EFI_PEI_SERVICES **PeiServices, > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN CONST EFI_GUID *CallerId, > > > > + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > + > > > > +* In RuntimeDxeBeepStatusCodeHandlerLib: > > > > + EFI_STATUS > > > > + EFIAPI > > > > + BeepStatusCodeReportWorker ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN EFI_GUID *CallerId, > > > > + IN EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > + > > > > +* In SmmBeepStatusCodeHandlerLib: > > > > + EFI_STATUS > > > > + EFIAPI > > > > + BeepStatusCodeReportWorker ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value, > > > > + IN UINT32 Instance, > > > > + IN EFI_GUID *CallerId, > > > > + IN EFI_STATUS_CODE_DATA *Data OPTIONAL > > > > + ) > > > > + > > > > +* In BeepMapLib: > > > > + UINT32 > > > > + EFIAPI > > > > + GetBeepValueFromStatusCode ( > > > > + IN EFI_STATUS_CODE_TYPE CodeType, > > > > + IN EFI_STATUS_CODE_VALUE Value > > > > + ) > > > > + > > > > +* In BeepLib: > > > > + VOID > > > > + EFIAPI > > > > + Beep ( > > > > + IN UINT32 Value > > > > + ) > > > > + > > > > +## Configuration > > > > +* Link the library to StatusCodeHandler.efi. > > > > + Example: > > > > + > > > MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHan > > dlerRuntimeDxe.inf { > > > > + > > > > + > > > NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeD > > xeBeepStatusCodeHandlerLib.inf > > > > + } > > > > + Refer to BeepDebugFeature.dsc for other example. > > > > +* Config PCD > > gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep. > > > > + In platform .dsc file, need to config the type of > > gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep. > > > > + Use PcdsFixedAtBuild to save binary size, and use PcdsDynamic if wan= t to > > enable/disable in runtime. > > > > +* Implemented platform's special BeepMapLib if needed. > > > > +* Provide the platform's special BeepLib. > > > > +* Make sure put the StatusCodeHandler.efi after the > > ReportStatusCodeRouter.efi. > > > > + > > > > +## Data Flows > > > > +Status Code (ReportStatusCode) -> Beep Value > > (GetBeepValueFromStatusCode). > > > > + > > > > +## Control Flows > > > > +ReportStatusCode() -> BeepStatusCodeReportWorker() -> > > GetBeepValueFromStatusCode() -> Beep() > > > > + > > > > +## Build Flows > > > > +There is not special build flows. > > > > + > > > > +## Test Point Results > > > > +Verify the post code shown is correct. > > > > + > > > > +## Functional Exit Criteria > > > > +N/A > > > > + > > > > +## Feature Enabling Checklist > > > > +* Set the PCD > > gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep to TRUE. > > > > +* Plug out all the memory, check can here the beep. > > > > + > > > > +## Common Optimizations > > > > +* Implemented platform's special BeepMapLib if needed. > > > > -- > > 2.24.0.windows.2 > > > > > > -=3D-=3D-=3D-=3D-=3D-=3D > > Groups.io Links: You receive all messages sent to this group. > > > > View/Reply Online (#61333): > https://edk2.groups.io/g/devel/message/61333 > > Mute This Topic: https://groups.io/mt/74913971/1768738 > > Group Owner: devel+owner@edk2.groups.io > > Unsubscribe: https://edk2.groups.io/g/devel/unsub > [dandan.bi@intel.com] > > -=3D-=3D-=3D-=3D-=3D-=3D