From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.103]) by mx.groups.io with SMTP id smtpd.web11.70662.1684085063305473916 for ; Sun, 14 May 2023 10:24:23 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="no key for verify" header.i=@amperemail.onmicrosoft.com header.s=selector1-amperemail-onmicrosoft-com header.b=MmBIu198; spf=pass (domain: os.amperecomputing.com, ip: 40.107.220.103, mailfrom: tinhnguyen@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cPPS5ijAL88/l9SqghpMl5lRTzG3bt/JL6r7ZXcFYJZGz4snM2XuT5Gnrjtz/ZC4kI+bHDRwf1pdx0Y65dEwWR6N/VeIbM5WL+udcimO56zCRqgq2U/7R76Tw2VbMSNCGNlLws9tCQzXYPmn5jaky888Orz8BFCYuhq+cyQVn17eZyGfJSRyxcK4iIGATV6cyqMxLu3PyoNmaQ7DKeVK30BrKhc/rtHOBYYEa7fA8dBN3NdgC8ScKeJAPdjoaBZdLhyrIaF0pCXVdl7KCzUx+ZF4yb3roh5OYoY3bkX9ZSTrfwxYC1TIA19miVy1jGPprkujtoemna0MVQ5DWmE5fg== 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=wmFvgTBZGvFCYTphOdpMYJ0F9XegZpojI0vZmRhEwmA=; b=c6itVNWM8kukAMmODVDIct5d8cLpS7JMkrGF+JvjIONclzIkwQgol3pK6rDcafzvCiJ/Gn8l9P07xnw2A+PwABf/mZeAh5U56w+YDL2KrgxBb6+smDwK3DUrrkgVtVPReFLwGmkMA4ahEg4RKNHc9TJVc/P4RhqdzDbp/5VO0bARTmr214hUOyEwXizbbXAHwY3CymEktJ9+/dfxd4uK9MIF/CizTkPBZo61oZdiJmQaqAnA4VWYoXdYM2zoXf946aPxAo+m+8T8yzjuLoB7FabI0ZzkTST7m8b79RKejIv2Dpl1kT5EKXHhOSehaKcRMzOKHhBbvqxZ4mymuUSjeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=amperemail.onmicrosoft.com; dkim=pass header.d=amperemail.onmicrosoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amperemail.onmicrosoft.com; s=selector1-amperemail-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wmFvgTBZGvFCYTphOdpMYJ0F9XegZpojI0vZmRhEwmA=; b=MmBIu198qMmVuMS5LgIYs5wC6tnoeXVeg5skkvz+KL5PzsY17B6RcxbdbAvMJUxOo1yKYGgcrdKkAkGwZMWG8Qfrk1r0HE0UYsq/cowPUDNNvoE4pj4VaeSm+w9vGtxqWo0ofuyn9bgMswXGybjHf+UnTOhDbTjmYP7HSnyLTGc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amperemail.onmicrosoft.com; Received: from DM5PR0102MB3336.prod.exchangelabs.com (2603:10b6:4:9f::11) by DM6PR01MB5497.prod.exchangelabs.com (2603:10b6:5:151::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.19; Sun, 14 May 2023 17:24:19 +0000 Received: from DM5PR0102MB3336.prod.exchangelabs.com ([fe80::fefc:e2a9:e823:fe42]) by DM5PR0102MB3336.prod.exchangelabs.com ([fe80::fefc:e2a9:e823:fe42%6]) with mapi id 15.20.6387.020; Sun, 14 May 2023 17:24:18 +0000 Message-ID: <4679aff9-60a0-1428-154b-d4a5b63902c6@amperemail.onmicrosoft.com> Date: Mon, 15 May 2023 00:24:10 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: Re: [edk2-platforms][PATCH 1/2] ManageabilityPkg/IpmiBmcElog: IPMI BMC Elog Driver To: abner.chang@amd.com, devel@edk2.groups.io CC: Isaac Oram , Abdul Lateef Attar , Nickle Wang , Tinh Nguyen References: <20230512095819.1898-1-abner.chang@amd.com> From: "Tinh Nguyen" In-Reply-To: <20230512095819.1898-1-abner.chang@amd.com> X-ClientProxiedBy: SI2PR01CA0007.apcprd01.prod.exchangelabs.com (2603:1096:4:191::11) To DM5PR0102MB3336.prod.exchangelabs.com (2603:10b6:4:9f::11) Return-Path: tinhnguyen@os.amperecomputing.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR0102MB3336:EE_|DM6PR01MB5497:EE_ X-MS-Office365-Filtering-Correlation-Id: ba5e1b3d-a34d-42fa-9a6d-08db54a00c7f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y6OEaUrpBIg14tHC3ymNcAkKCUy+yVbeBv1uSM3z94Ivt+99E+nIzshem4mJa7318lHdVI/jl+SKfo9eV6FSsPSK5kMuZXAyBVYijjTJeGgxjaywoXrMlRNQ52r0kdQHIr8b0lkca+Y1r1leTcJM5TCBrXt+PpWmOHGHpdsecSwHtvCq6ywgbXj2CeILiVGib9TkM7amcV61hTiZxz7gC0MeCuGffja96aaI4fFlX0UZ2du1R8bscekY9MKcYtQ0ht77x9JKyoTFvciGKKFV8v8lrgCqIHsAdRZ9VmhiwDa+3sdQv62d4bXbIPSZYXcKJ28K5PsErbmWYk7WR/LzFhwhz3fTHiBMN3fo2HywVzckkRJF7MuBu4CHnhF7LKlTsSQ0H1TRVuPf8yuD6wm+g+hIbGSjXIdx2edLvzXHhs9eCVjBPR8AspDfNxSqyuukf2Z+9RgQEm9JqFgq4AMIw2ResugN/uxjkN2vW0R6a+KfR87pxsDXG6iE4p7K4h8vHbwULq8ceO515DBrx8G1MIXl1uDJU+y8JaMXbXhhF86WKVvh1RGoNAv/Ogbuf5wrnIjSklzHLoextN2nTt3uFfEU6CmJtY/UP1e4k3aT/m5qwMG6GG3e+/+SJzAXCY59 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR0102MB3336.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39840400004)(136003)(346002)(366004)(376002)(396003)(451199021)(2906002)(31696002)(6512007)(53546011)(6506007)(478600001)(26005)(186003)(5660300002)(6666004)(6486002)(83170400001)(107886003)(38100700002)(42882007)(4326008)(66476007)(66946007)(2616005)(41300700001)(316002)(19627235002)(66556008)(54906003)(31686004)(8676002)(83380400001)(8936002)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4nWxf5T3XhwYawcEQG0KkTHdkoe63jORFRZHtL9zbPfpUEyDcJn4wk/O8uKJ?= =?us-ascii?Q?p2U00JnuYyfQBW2RnB36QCsL6UG+zji+6IwIFM35Syk7MZw2Fo2LSiwoSDDh?= =?us-ascii?Q?5GMjBIeYcahfojSA1dDFoeL1EvOkIskjd+QYU4MJSPpMk5LrSWDEYqSBBBG3?= =?us-ascii?Q?xMeXK5OD50zYnBh1l9VoepvWTTYZeJPQLRBENZ0fVDEtK9xp9VVn83z0ncKo?= =?us-ascii?Q?63soYJDvTqq/9oeVJZTuhOLfLO839rK12VpERZGh1f3bpw1LIDWtLqyHnY90?= =?us-ascii?Q?oA1XlE4Ablmh2NLUA3iW2/kAF+G5/1efwzQT6rCDEEqKdM6B3GJGZzhXBOKd?= =?us-ascii?Q?yL+T34b83h/jXYHZS0Kb5KBxiECV4CoTPJlx6hb82Q2+Tm1vEExoeHywfQ4z?= =?us-ascii?Q?j2g/9drzsAqOd6/NQVg6i84I+W53uWuopU/w7IB32w1UEr2XX04/Qq/pIFld?= =?us-ascii?Q?6bz9oUtlfUM9CN3mmy185bQj6wvWjTj1rsMnt4AKR67CroeVC1Lqx0v0GGFm?= =?us-ascii?Q?fTkfWquy14Ay/D57y1WS4PcKdI5RWgsKSJ4A6o4iEA30xGjHaf7FAxBUzMwT?= =?us-ascii?Q?CDRMvF51NJNo+xonaVZ4/plzLi64Beu/Tkv7xnzmfrzODjVkfGnZNflajtmu?= =?us-ascii?Q?lNAdMyI/hsKwClb1pPK/mHl9RG17A3R7gWhXWQh3wwaTLtOD4x+w5k+ec9tQ?= =?us-ascii?Q?2cj/fjLZO5bqVKC519HnEv+O4s86XJEqlzjRlJe1Fhnnma9tTKuoQneJ8/ea?= =?us-ascii?Q?kypfC5S3MYvSpQGiQiLIPGWEIAERiK2XDD5XmgIFUvOUYi04c4ESJ38bF3ES?= =?us-ascii?Q?n8FmkKv21Q3+wVqSvnLbJmfQ1GKpASUA0ixuzsclQaIzrZp8qBWNVmg2SEwt?= =?us-ascii?Q?a1mxdVBp3Ohp/Tz6mVHVfEyuiewKOD9hVmPtqOVA9BsuT162PGD+c4zpocip?= =?us-ascii?Q?oP41YiVBIwPf8DbBIiptq35sFLhssROoes7LrKKCc+yBXUZ39n6cIH2ySbPP?= =?us-ascii?Q?/rAz4zrL+fzhxd11id5L7WQtd192X5veMlqyCemrOGOkmcO4l/SAXon9GK4e?= =?us-ascii?Q?l76+bKF7mbH8OGP7/mdc+0NtwZ8QAvBiFOXKG+uhXncgRQ4Oknj8tYN9/dMh?= =?us-ascii?Q?/4ReG7rqeAqilk5Thj68M9QL0EPd+l7qUaAU5e3kyYaFAY7GSkN9GlkNO+E8?= =?us-ascii?Q?JlczQIZFGdvYtLl0/3U3KFzov9xJ5OwhOHhpvrc1dZ+LJ5lpjEH0/ptpEyNy?= =?us-ascii?Q?U+YKRx7omtJiGMaz24KnPKway2dfSNC6K/54Jp8AqrXsk0eRxDgJeBFJSqZd?= =?us-ascii?Q?rVtC5Nd0kUTWT/bpTEN9yagTsk+NgJqBmjR89O41umtMG/tnx0XNrmr7t0QL?= =?us-ascii?Q?ncidUgvrPxcENlU7JgR4kZI/OKV1vy43bMn8oO3F6VB7QQVF+elXwhVG+kjJ?= =?us-ascii?Q?ArFZVo1mLr0KNwlbZ+0HM/qj3g5VEYPjs2c87CU+RjMzjs24jkIzTqHPStN2?= =?us-ascii?Q?Vsve7Hf8gyK+293HnV3z7FgpYoswvOgaCQMuAm6fwNunf4oOTANpPOYo71nz?= =?us-ascii?Q?vOaWL5zjryHG82JHPmju3Atpuc/pwQwiQtchYAt7rxwOXID2VpTx9MZnNCxS?= =?us-ascii?Q?M27pfX5NphiP9y8Z3BMSbcQ=3D?= X-OriginatorOrg: amperemail.onmicrosoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba5e1b3d-a34d-42fa-9a6d-08db54a00c7f X-MS-Exchange-CrossTenant-AuthSource: DM5PR0102MB3336.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2023 17:24:18.7610 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xgjnMbNPRHoEoWyDvmkkgABLhZBpjkYDEiAYMNS+q5CuJ7v2NhJ/aLnCs9bJ23gFhDb/G1e66kuY/4Eli1xpsZUWAC155gnnDR1VDKiFrbB2ELie4Lw5n7isW1MqbMhb X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR01MB5497 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable There is a minor typo=C2=A0 below Reviewed-by: Tinh Nguyen Regards, - Tinh On 12/05/2023 16:58, abner.chang@amd.com wrote: > From: Abner Chang > > IpmiBmcElog is cloned from > edk2-platforms/Features/Intel/OutOfBandManagement/ > IpmiFeaturePkg/BmcElog in order to consolidate > edk2 system manageability support in one place. > Uncustify is applied to C files and no functionalities > are changed in this patch. > > We will still keep the one under IpmiFeaturePkg/BmcElog > until the reference to this instance are removed from > platforms. > > Signed-off-by: Abner Chang > Cc: Isaac Oram > Cc: Abdul Lateef Attar > Cc: Nickle Wang > Cc: Tinh Nguyen > --- > .../Universal/IpmiBmcElog/BmcElog.inf | 33 +++ > .../Universal/IpmiBmcElog/BmcElog.c | 192 ++++++++++++++++++ > 2 files changed, 225 insertions(+) > create mode 100644 Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcE= log.inf > create mode 100644 Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcE= log.c > > diff --git a/Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.inf = b/Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.inf > new file mode 100644 > index 0000000000..4c28862fe5 > --- /dev/null > +++ b/Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.inf > @@ -0,0 +1,33 @@ > +### @file > +# Component description file for BMC ELOG. > +# > +# Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.
> +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +### > + > +[Defines] > + INF_VERSION =3D 0x00010005 > + BASE_NAME =3D BmcElog > + FILE_GUID =3D A0FF2235-B652-45E3-B3D2-B20F3E714E6F > + MODULE_TYPE =3D DXE_DRIVER > + PI_SPECIFICATION_VERSION =3D 0x0001000A > + VERSION_STRING =3D 1.0 > + ENTRY_POINT =3D InitializeBmcElogLayer > + > +[Sources] > + BmcElog.c > + > +[Packages] > + ManageabilityPkg/ManageabilityPkg.dec > + MdePkg/MdePkg.dec > + > +[LibraryClasses] > + DebugLib > + IpmiCommandLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + > +[Depex] > + TRUE > diff --git a/Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.c b/= Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.c > new file mode 100644 > index 0000000000..ab179e9d49 > --- /dev/null > +++ b/Features/ManageabilityPkg/Universal/IpmiBmcElog/BmcElog.c > @@ -0,0 +1,192 @@ > +/** @file > + BMC Event Log functions. > + > +Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.
> +SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +EFI_STATUS > +EFIAPI > +CheckIfSelIsFull ( > + VOID > + ); > + > +/** > + This function erases event logs and waits unti complete. unti -> until > + > + @param [in] ResvId - Reserved ID > + > + @retval EFI_STATUS EFI_SUCCESS > + EFI_NO_RESPONSE > + > +**/ > +EFI_STATUS > +WaitTillErased ( > + IN UINT8 *ResvId > + ) > +{ > + INTN Counter; > + IPMI_CLEAR_SEL_REQUEST ClearSel; > + IPMI_CLEAR_SEL_RESPONSE ClearSelResponse; > + > + Counter =3D 0x200; > + ZeroMem (&ClearSelResponse, sizeof (ClearSelResponse)); > + > + while (TRUE) { > + ZeroMem (&ClearSel, sizeof (ClearSel)); > + ClearSel.Reserve[0] =3D ResvId[0]; > + ClearSel.Reserve[1] =3D ResvId[1]; > + ClearSel.AscC =3D 0x43; > + ClearSel.AscL =3D 0x4C; > + ClearSel.AscR =3D 0x52; > + ClearSel.Erase =3D 0x00; > + > + IpmiClearSel ( > + &ClearSel, > + &ClearSelResponse > + ); > + > + if ((ClearSelResponse.ErasureProgress & 0xf) =3D=3D 1) { > + return EFI_SUCCESS; > + } > + > + // > + // If there is not a response from the BMC controller we need to re= turn and not hang. > + // > + --Counter; > + if (Counter =3D=3D 0x0) { > + return EFI_NO_RESPONSE; > + } > + } > +} > + > +/** > + This function activates BMC event log. > + > + @param [in] EnableElog Enable/Disable event log > + @param [out] ElogStatus return log status > + > + @retval EFI_STATUS > + > +**/ > +EFI_STATUS > +EfiActivateBmcElog ( > + IN BOOLEAN *EnableElog, > + OUT BOOLEAN *ElogStatus > + ) > +{ > + EFI_STATUS Status; > + UINT8 ElogStat; > + IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST SetBmcGlobalEnables; > + IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE GetBmcGlobalEnables; > + UINT8 CompletionCode; > + > + Status =3D EFI_SUCCESS; > + ElogStat =3D 0; > + > + Status =3D IpmiGetBmcGlobalEnables (&GetBmcGlobalEnables); > + if (EFI_ERROR (Status)) { > + return Status; > + } > + > + if (EnableElog =3D=3D NULL) { > + *ElogStatus =3D GetBmcGlobalEnables.GetEnables.Bits.SystemEventLoggi= ng; > + } else { > + if (Status =3D=3D EFI_SUCCESS) { > + if (*EnableElog) { > + ElogStat =3D 1; > + } > + > + CopyMem (&SetBmcGlobalEnables, (UINT8 *)&GetBmcGlobalEnables + 1, = sizeof (UINT8)); > + SetBmcGlobalEnables.SetEnables.Bits.SystemEventLogging =3D ElogSta= t; > + > + Status =3D IpmiSetBmcGlobalEnables (&SetBmcGlobalEnables, &Complet= ionCode); > + } > + } > + > + return Status; > +} > + > +/** > + > + @retval EFI_STATUS > + > +**/ > +EFI_STATUS > +SetElogRedirInstall ( > + VOID > + ) > +{ > + BOOLEAN EnableElog; > + BOOLEAN ElogStatus; > + > + // > + // Activate the Event Log (This should depend upon Setup). > + // > + EfiActivateBmcElog (&EnableElog, &ElogStatus); > + return EFI_SUCCESS; > +} > + > +/** > + Entry point of BmcElog DXE driver > + > + @param [in] ImageHandle ImageHandle of the loaded driver > + @param [in] SystemTable Pointer to the System Table > + > + @retval EFI_STATUS > + > +**/ > +EFI_STATUS > +EFIAPI > +InitializeBmcElogLayer ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + SetElogRedirInstall (); > + > + CheckIfSelIsFull (); > + > + return EFI_SUCCESS; > +} > + > +/** > + This function verifies the BMC SEL is full and When it is > + reports the error to the Error Manager. > + > + @retval EFI_STATUS > + > +**/ > +EFI_STATUS > +EFIAPI > +CheckIfSelIsFull ( > + VOID > + ) > +{ > + EFI_STATUS Status; > + UINT8 SelIsFull; > + IPMI_GET_SEL_INFO_RESPONSE SelInfo; > + > + Status =3D IpmiGetSelInfo (&SelInfo); > + if (EFI_ERROR (Status)) { > + return EFI_DEVICE_ERROR; > + } > + > + // > + // Check the Bit7 of the OperationByte if SEL is OverFlow. > + // > + SelIsFull =3D (SelInfo.OperationSupport & 0x80); > + DEBUG ((DEBUG_INFO, "SelIsFull - 0x%x\n", SelIsFull)); > + > + return EFI_SUCCESS; > +}