From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by mx.groups.io with SMTP id smtpd.web10.10603.1677540635720224145 for ; Mon, 27 Feb 2023 15:30:36 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=pHfcZNgq; spf=pass (domain: gmail.com, ip: 209.85.208.175, mailfrom: mike.maslenkin@gmail.com) Received: by mail-lj1-f175.google.com with SMTP id g18so6153974ljl.3 for ; Mon, 27 Feb 2023 15:30:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3JEsa6czp46g2J13cpLKOUyFj5jDABSXlxz+cAXNBYQ=; b=pHfcZNgqRc8csBLg/AG+NqknY5FLQn9+i92alKg9tyLKapzaT+SmjizWd1cbbwBjHo bunOZWKkIrMcIyZbdWD3SIYcLplsVFcF50lqxvbD8kUoxyoSfwzkeT6q+AsX98jtyjJq ZgHiXKPriH+1j6tmOO/VyfG/qEwpZa0NdKLxtndgpsFX71/yrCn4185urHYCX3MB9cEw BriHN4M1zhInWRDkKsS2c/beQ0cBFFVpk+S1Ll5d8wTjkI5BesGiMzAdxWwgAYMD0EoV 2xwumZzKtIcnuhOd231dA65poMaVQuM0XnPpexp826FSdz4sBRIX6kLxRjOL6/Z0XlGo t3YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3JEsa6czp46g2J13cpLKOUyFj5jDABSXlxz+cAXNBYQ=; b=gqmsbSPmdKByLT20xmF/x17HHLrUSCFFuIz/XZ+tgK8hM6svCIz4m3wvbC9+bLX8Pd v8M07gDFCFThutUxgOXWfqDJNZJcpA2drh03TMCvn6fLeOUFH8OD+uh2LLCT+55W6jP9 rMnnoXEUbcSLsMgGs8UIvpcgi/mtOKDAAMJb0IdTY19M5FZKFcujK89ei+3Gx3/ap2CC vObs394shxB2UtU34nL9ena8QiZmV6ZZ8zApi5xdo17jeJzUDHz1zux5yn/eDDX5UH01 CNRuRECVoDHOiN6HmyiBGmjFlYVSasmnBz1asllUySrVHfJGBHHL6ZskNwcfu6z/2fN4 kiGg== X-Gm-Message-State: AO0yUKVsnvJHmA2L/sfWlQA8yDKTkKXh8outv3kA7sCDHxRCVcUWvUoc CmHoSsb9nPR/j37QgBdSHZIGZniZ4453slm1gAqDvA== X-Google-Smtp-Source: AK7set/cbx/tWiFdmm9QFjD68M3WVngM80DlQVlfgiq75l13++zjxBycV6J9Eh7CbNWNmMYKfGwaUA== X-Received: by 2002:a2e:c49:0:b0:294:7643:d686 with SMTP id o9-20020a2e0c49000000b002947643d686mr117880ljd.22.1677540633952; Mon, 27 Feb 2023 15:30:33 -0800 (PST) Return-Path: Received: from localhost.localdomain ([195.91.209.163]) by smtp.gmail.com with ESMTPSA id r8-20020a2eb608000000b002935006e487sm908453ljn.122.2023.02.27.15.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Feb 2023 15:30:33 -0800 (PST) From: "Mike Maslenkin" To: devel@edk2.groups.io Cc: Mike Maslenkin , Isaac Oram , Nate DeSimone , Liming Gao Subject: [PATCH edk2-platforms 2/3] IpmiFeaturePkg: remove buffer temporary buffer from BMC instance structure Date: Tue, 28 Feb 2023 02:27:56 +0300 Message-Id: <20230227232757.9312-3-mike.maslenkin@gmail.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230227232757.9312-1-mike.maslenkin@gmail.com> References: <20230227232757.9312-1-mike.maslenkin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable There is no point to have temporary buffer in BMC instance data used only for synchronous IPMI command as a transfer buffer. Using local variables make things much simpler. Signed-off-by: Mike Maslenkin --- .../GenericIpmi/Common/IpmiBmc.c | 5 ++- .../GenericIpmi/Common/IpmiBmcCommon.h | 1 - .../IpmiFeaturePkg/GenericIpmi/Dxe/IpmiInit.c | 39 ++++++++++--------- .../GenericIpmi/Pei/PeiGenericIpmi.c | 11 +++--- .../GenericIpmi/Pei/PeiIpmiBmc.c | 5 ++- .../GenericIpmi/Pei/PeiIpmiBmcDef.h | 1 - 6 files changed, 33 insertions(+), 29 deletions(-) diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Common/IpmiBmc.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Generi= cIpmi/Common/IpmiBmc.c index 03b8174e3786..a6be2f46e84e 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/= IpmiBmc.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/= IpmiBmc.c @@ -101,6 +101,7 @@ Returns: IPMI_RESPONSE *IpmiResponse;=0D UINT8 RetryCnt =3D IPMI_SEND_COMMAND_MAX_RETRY;=0D UINT8 Index;=0D + UINT8 TempData[MAX_TEMP_DATA];=0D =0D IpmiInstance =3D INSTANCE_FROM_SM_IPMI_BMC_THIS (This);=0D =0D @@ -110,8 +111,8 @@ Returns: // response data. Since the command format is different from the resp= onse=0D // format, the buffer is cast to both structure definitions.=0D //=0D - IpmiCommand =3D (IPMI_COMMAND*) IpmiInstance->TempData;=0D - IpmiResponse =3D (IPMI_RESPONSE*) IpmiInstance->TempData;=0D + IpmiCommand =3D (IPMI_COMMAND*) TempData;=0D + IpmiResponse =3D (IPMI_RESPONSE*) TempData;=0D =0D //=0D // Send IPMI command to BMC=0D diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Common/IpmiBmcCommon.h b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/= GenericIpmi/Common/IpmiBmcCommon.h index 1e5dfd81f1fb..06eab62aaec9 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/= IpmiBmcCommon.h +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/= IpmiBmcCommon.h @@ -50,7 +50,6 @@ typedef struct { UINTN Signature;=0D UINT64 KcsTimeoutPeriod;=0D UINT8 SlaveAddress;=0D - UINT8 TempData[MAX_TEMP_DATA];=0D BMC_STATUS BmcStatus;=0D UINT64 ErrorStatus;=0D UINT8 SoftErrorCount;=0D diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Dxe/IpmiInit.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericI= pmi/Dxe/IpmiInit.c index aeaefaad642e..8a0c596a6434 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Dxe/Ipm= iInit.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Dxe/Ipm= iInit.c @@ -84,6 +84,7 @@ Returns: UINT8 *TempPtr;=0D UINT32 Retries;=0D BOOLEAN bResultFlag =3D FALSE;=0D + UINT8 TempData[MAX_TEMP_DATA];=0D =0D //=0D // Get the SELF TEST Results.=0D @@ -97,9 +98,9 @@ Returns: Retries =3D PcdGet8 (PcdIpmiBmcReadyDelayTimer);=0D }=0D =0D - DataSize =3D sizeof (IpmiInstance->TempData);=0D + DataSize =3D sizeof (TempData);=0D =0D - IpmiInstance->TempData[1] =3D 0;=0D + TempData[1] =3D 0;=0D =0D do {=0D Status =3D IpmiSendCommand (=0D @@ -109,11 +110,11 @@ Returns: IPMI_APP_GET_SELFTEST_RESULTS,=0D NULL,=0D 0,=0D - IpmiInstance->TempData,=0D + TempData,=0D &DataSize=0D );=0D if (Status =3D=3D EFI_SUCCESS) {=0D - switch (IpmiInstance->TempData[1]) {=0D + switch (TempData[1]) {=0D case IPMI_APP_SELFTEST_NO_ERROR:=0D case IPMI_APP_SELFTEST_NOT_IMPLEMENTED:=0D case IPMI_APP_SELFTEST_ERROR:=0D @@ -146,7 +147,7 @@ Returns: IpmiInstance->BmcStatus =3D BMC_HARDFAIL;=0D return Status;=0D } else {=0D - DEBUG ((EFI_D_INFO, "[IPMI] BMC self-test result: %02X-%02X\n", IpmiIn= stance->TempData[1], IpmiInstance->TempData[2]));=0D + DEBUG ((DEBUG_INFO, "[IPMI] BMC self-test result: %02X-%02X\n", TempDa= ta[1], TempData[2]));=0D //=0D // Copy the Self test results to Error Status. Data will be copied as= long as it=0D // does not exceed the size of the ErrorStatus variable.=0D @@ -155,13 +156,13 @@ Returns: (Index < DataSize) && (Index < sizeof (IpmiInstance->ErrorStatus)= );=0D Index++, TempPtr++=0D ) {=0D - *TempPtr =3D IpmiInstance->TempData[Index];=0D + *TempPtr =3D TempData[Index];=0D }=0D //=0D // Check the IPMI defined self test results.=0D // Additional Cases are device specific test results.=0D //=0D - switch (IpmiInstance->TempData[1]) {=0D + switch (TempData[1]) {=0D case IPMI_APP_SELFTEST_NO_ERROR:=0D case IPMI_APP_SELFTEST_NOT_IMPLEMENTED:=0D IpmiInstance->BmcStatus =3D BMC_OK;=0D @@ -173,7 +174,7 @@ Returns: // BootBlock Firmware corruption, and Operational Firmware Corrupt= ion. All=0D // other errors are BMC soft failures.=0D //=0D - if ((IpmiInstance->TempData[2] & (IPMI_APP_SELFTEST_FRU_CORRUPT | = IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT | IPMI_APP_SELFTEST_FW_CORRUPT)) != =3D 0) {=0D + if ((TempData[2] & (IPMI_APP_SELFTEST_FRU_CORRUPT | IPMI_APP_SELFT= EST_FW_BOOTBLOCK_CORRUPT | IPMI_APP_SELFTEST_FW_CORRUPT)) !=3D 0) {=0D IpmiInstance->BmcStatus =3D BMC_HARDFAIL;=0D } else {=0D IpmiInstance->BmcStatus =3D BMC_SOFTFAIL;=0D @@ -181,7 +182,7 @@ Returns: //=0D // Check if SDR repository is empty and report it if it is.=0D //=0D - if ((IpmiInstance->TempData[2] & IPMI_APP_SELFTEST_SDR_REPOSITORY_= EMPTY) !=3D 0) {=0D + if ((TempData[2] & IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY) !=3D 0)= {=0D if (*ErrorCount < MAX_SOFT_COUNT) {=0D StatusCodeValue[*ErrorCount] =3D EFI_COMPUTING_UNIT_FIRMWARE_P= ROCESSOR | CU_FP_EC_SDR_EMPTY;=0D (*ErrorCount)++;=0D @@ -244,6 +245,8 @@ Returns: SM_CTRL_INFO *pBmcInfo;=0D IPMI_MSG_GET_BMC_EXEC_RSP *pBmcExecContext;=0D UINT32 Retries;=0D + UINT8 TempData[MAX_TEMP_DATA];=0D +=0D #ifdef FAST_VIDEO_SUPPORT=0D EFI_VIDEOPRINT_PROTOCOL *VideoPrintProtocol;=0D EFI_STATUS VideoPrintStatus;=0D @@ -266,16 +269,16 @@ Returns: //=0D // Get the device ID information for the BMC.=0D //=0D - DataSize =3D sizeof (IpmiInstance->TempData);=0D + DataSize =3D sizeof (TempData);=0D while (EFI_ERROR (Status =3D IpmiSendCommand (=0D &IpmiInstance->IpmiTransport,=0D IPMI_NETFN_APP, 0,=0D IPMI_APP_GET_DEVICE_ID,=0D NULL, 0,=0D - IpmiInstance->TempData, &DataSize))=0D + TempData, &DataSize))=0D ) {=0D DEBUG ((DEBUG_ERROR, "[IPMI] BMC does not respond by Get BMC DID (stat= us: %r), %d retries left, ResponseData: 0x%lx\n",=0D - Status, Retries, IpmiInstance->TempData));=0D + Status, Retries, TempData));=0D =0D if (Retries-- =3D=3D 0) {=0D IpmiInstance->BmcStatus =3D BMC_HARDFAIL;=0D @@ -287,7 +290,7 @@ Returns: MicroSecondDelay (1*1000*1000);=0D }=0D =0D - pBmcInfo =3D (SM_CTRL_INFO*)&IpmiInstance->TempData[0];=0D + pBmcInfo =3D (SM_CTRL_INFO*)&TempData[0];=0D DEBUG ((EFI_D_ERROR, "[IPMI] BMC Device ID: 0x%02X, firmware version: %d= .%02X UpdateMode:%x\n", pBmcInfo->DeviceId, pBmcInfo->MajorFirmwareRev, pBm= cInfo->MinorFirmwareRev,pBmcInfo->UpdateMode));=0D //=0D // In OpenBMC, UpdateMode: the bit 7 of byte 4 in get device id command = is used for the BMC status:=0D @@ -303,10 +306,10 @@ Returns: IPMI_NETFN_FIRMWARE, 0,=0D IPMI_GET_BMC_EXECUTION_CONTEXT,=0D NULL, 0,=0D - IpmiInstance->TempData, &DataSize=0D + TempData, &DataSize=0D );=0D =0D - pBmcExecContext =3D (IPMI_MSG_GET_BMC_EXEC_RSP*)&IpmiInstance->TempDat= a[0];=0D + pBmcExecContext =3D (IPMI_MSG_GET_BMC_EXEC_RSP*)&TempData[0];=0D DEBUG ((DEBUG_INFO, "[IPMI] Operational status of BMC: 0x%x\n", pBmcEx= ecContext->CurrentExecutionContext));=0D if ((pBmcExecContext->CurrentExecutionContext =3D=3D IPMI_BMC_IN_FORCE= D_UPDATE_MODE) &&=0D !EFI_ERROR (Status)) {=0D @@ -324,12 +327,12 @@ Returns: IPMI_NETFN_APP, 0,=0D IPMI_APP_GET_DEVICE_ID,=0D NULL, 0,=0D - IpmiInstance->TempData, &DataSize=0D + TempData, &DataSize=0D );=0D =0D if (!EFI_ERROR (Status)) {=0D - pBmcInfo =3D (SM_CTRL_INFO*)&IpmiInstance->TempData[0];=0D - DEBUG ((EFI_D_ERROR, "[IPMI] UpdateMode Retries: %d pBmcInfo->= UpdateMode:%x, Status: %r, Response Data: 0x%lx\n",Retries, pBmcInfo->Updat= eMode, Status, IpmiInstance->TempData));=0D + pBmcInfo =3D (SM_CTRL_INFO*)&TempData[0];=0D + DEBUG ((DEBUG_ERROR, "[IPMI] UpdateMode Retries: %d pBmcInfo->= UpdateMode:%x, Status: %r, Response Data: 0x%lx\n",Retries, pBmcInfo->Updat= eMode, Status, TempData));=0D if (pBmcInfo->UpdateMode =3D=3D BMC_READY) {=0D mIpmiInstance->BmcStatus =3D BMC_OK;=0D return EFI_SUCCESS;=0D diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Pei/PeiGenericIpmi.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Ge= nericIpmi/Pei/PeiGenericIpmi.c index 3efb772b684f..e8b99b6900c5 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= GenericIpmi.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= GenericIpmi.c @@ -288,6 +288,7 @@ Returns: UINT32 DataSize;=0D SM_CTRL_INFO *pBmcInfo;=0D UINTN Retries;=0D + UINT8 TempData[MAX_TEMP_DATA];=0D =0D //=0D // Set up a loop to retry for up to PcdIpmiBmcReadyDelayTimer seconds. C= alculate retries not timeout=0D @@ -298,7 +299,7 @@ Returns: //=0D // Get the device ID information for the BMC.=0D //=0D - DataSize =3D sizeof (mIpmiInstance->TempData);=0D + DataSize =3D sizeof (TempData);=0D while (EFI_ERROR (Status =3D PeiIpmiSendCommand (=0D &mIpmiInstance->IpmiTransportPpi,=0D IPMI_NETFN_APP,=0D @@ -306,7 +307,7 @@ Returns: IPMI_APP_GET_DEVICE_ID,=0D NULL,=0D 0,=0D - mIpmiInstance->TempData,=0D + TempData,=0D &DataSize=0D ))) {=0D DEBUG ((EFI_D_ERROR, "[IPMI] BMC does not respond (status: %r), %d ret= ries left\n",=0D @@ -322,7 +323,7 @@ Returns: //=0D MicroSecondDelay (1*1000*1000);=0D }=0D - pBmcInfo =3D (SM_CTRL_INFO*) &mIpmiInstance->TempData[0];=0D + pBmcInfo =3D (SM_CTRL_INFO*) &TempData[0];=0D DEBUG ((DEBUG_INFO, "[IPMI PEI] BMC Device ID: 0x%02X, firmware version:= %d.%02X UpdateMode:%x\n",=0D pBmcInfo->DeviceId, pBmcInfo->MajorFirmwareRev, pBmcInfo->MinorF= irmwareRev, pBmcInfo->UpdateMode));=0D //=0D @@ -347,11 +348,11 @@ Returns: IPMI_APP_GET_DEVICE_ID,=0D NULL,=0D 0,=0D - mIpmiInstance->TempData,=0D + TempData,=0D &DataSize=0D );=0D if (!EFI_ERROR (Status)) {=0D - pBmcInfo =3D (SM_CTRL_INFO*) &mIpmiInstance->TempData[0];=0D + pBmcInfo =3D (SM_CTRL_INFO*) &TempData[0];=0D DEBUG ((DEBUG_INFO, "[IPMI PEI] UpdateMode Retries:%x pBmcInfo->= UpdateMode:%x\n", Retries, pBmcInfo->UpdateMode));=0D if (pBmcInfo->UpdateMode =3D=3D BMC_READY) {=0D mIpmiInstance->BmcStatus =3D BMC_OK;=0D diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Pei/PeiIpmiBmc.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Generi= cIpmi/Pei/PeiIpmiBmc.c index 32665b3e2244..dbe25421ae49 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= IpmiBmc.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= IpmiBmc.c @@ -99,6 +99,7 @@ Returns: IPMI_COMMAND *IpmiCommand;=0D IPMI_RESPONSE *IpmiResponse;=0D UINT8 Index;=0D + UINT8 TempData[MAX_TEMP_DATA];=0D =0D IpmiInstance =3D INSTANCE_FROM_PEI_SM_IPMI_BMC_THIS (This);=0D =0D @@ -107,8 +108,8 @@ Returns: // response data. Since the command format is different from the respon= se=0D // format, the buffer is cast to both structure definitions.=0D //=0D - IpmiCommand =3D (IPMI_COMMAND*) IpmiInstance->TempData;=0D - IpmiResponse =3D (IPMI_RESPONSE*) IpmiInstance->TempData;=0D + IpmiCommand =3D (IPMI_COMMAND*) TempData;=0D + IpmiResponse =3D (IPMI_RESPONSE*) TempData;=0D =0D //=0D // Send IPMI command to BMC=0D diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/= Pei/PeiIpmiBmcDef.h b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Gen= ericIpmi/Pei/PeiIpmiBmcDef.h index 3fbe70ce629d..fc9fbacf1a2b 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= IpmiBmcDef.h +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Pei/Pei= IpmiBmcDef.h @@ -49,7 +49,6 @@ typedef struct { UINTN Signature;=0D UINT64 KcsTimeoutPeriod;=0D UINT8 SlaveAddress;=0D - UINT8 TempData[MAX_TEMP_DATA];=0D BMC_STATUS BmcStatus;=0D UINT64 ErrorStatus;=0D UINT8 SoftErrorCount;=0D --=20 2.35.3