diff --git a/recipes-bsp/uefi/edk2-firmware-core-tegra-36.4.0.inc b/recipes-bsp/uefi/edk2-firmware-core-tegra-36.4.0.inc index e439d1b6..a2401164 100644 --- a/recipes-bsp/uefi/edk2-firmware-core-tegra-36.4.0.inc +++ b/recipes-bsp/uefi/edk2-firmware-core-tegra-36.4.0.inc @@ -2,9 +2,9 @@ LICENSE .= " & Proprietary" LIC_FILES_CHKSUM = "file://License.txt;md5=2b415520383f7964e96700ae12b4570a" -SRC_URI_EDK2 = "gitsm://github.com/NVIDIA/edk2.git;protocol=https;branch=r36.3.0-updates" +SRC_URI_EDK2 = "gitsm://github.com/NVIDIA/edk2.git;protocol=https;branch=r36.4.0-updates" -SRCREV_edk2 = "36cdf6e1e3a3b5a74f90cb7a5ae2eaf348617a95" +SRCREV_edk2 = "338f5d9e7c525ab2ec0882bb6fc699f62d107b31" SRC_URI = "${SRC_URI_EDK2};name=edk2;destsuffix=edk2-tegra/edk2" diff --git a/recipes-bsp/uefi/edk2-firmware-tegra-36.4.0.inc b/recipes-bsp/uefi/edk2-firmware-tegra-36.4.0.inc index e4ae0de5..97647e4e 100644 --- a/recipes-bsp/uefi/edk2-firmware-tegra-36.4.0.inc +++ b/recipes-bsp/uefi/edk2-firmware-tegra-36.4.0.inc @@ -6,20 +6,20 @@ LICENSE .= " & Proprietary" LIC_FILES_CHKSUM += "file://../edk2-platforms/License.txt;md5=2b415520383f7964e96700ae12b4570a" LIC_FILES_CHKSUM += "file://../edk2-nvidia/LICENSE;md5=52d8683e3d65a77ef84cc863e3f24f25" -LIC_FILES_CHKSUM += "file://../edk2-nvidia-non-osi/Silicon/NVIDIA/Drivers/NvGopDriver/NOTICE.nvgop-chips-platform.efi;md5=549bbaa72578510a18ba3c324465027c" +LIC_FILES_CHKSUM += "file://../edk2-nvidia-non-osi/Silicon/NVIDIA/Drivers/NvGopDriver/NOTICE.nvgop-chips-platform.efi;md5=782048cadee3851a0da2b4a3fdae0d93" inherit python3native DEPENDS += "dtc-native python3-kconfiglib-native" -SRC_URI_EDK2_PLATFORMS = "git://github.com/NVIDIA/edk2-platforms.git;protocol=https;branch=r36.3.0-updates" -SRC_URI_EDK2_NVIDIA = "git://github.com/NVIDIA/edk2-nvidia.git;protocol=https;branch=r36.3.0-updates" -SRC_URI_EDK2_NONOSI = "git://github.com/NVIDIA/edk2-non-osi.git;protocol=https;branch=r36.3.0-updates" -SRC_URI_EDK2_NVIDIA_NONOSI = "git://github.com/NVIDIA/edk2-nvidia-non-osi.git;protocol=https;branch=r36.3.0-updates" +SRC_URI_EDK2_PLATFORMS = "git://github.com/NVIDIA/edk2-platforms.git;protocol=https;branch=r36.4.0-updates" +SRC_URI_EDK2_NVIDIA = "git://github.com/NVIDIA/edk2-nvidia.git;protocol=https;branch=r36.4.0-updates" +SRC_URI_EDK2_NONOSI = "git://github.com/NVIDIA/edk2-non-osi.git;protocol=https;branch=r36.4.0-updates" +SRC_URI_EDK2_NVIDIA_NONOSI = "git://github.com/NVIDIA/edk2-nvidia-non-osi.git;protocol=https;branch=r36.4.0-updates" SRCREV_edk2-non-osi = "8c09bd0955338db38813e0d8ae1faa634f545f73" -SRCREV_edk2-nvidia = "81336553c0720aa3f431f24f10f3b4fb95464af1" -SRCREV_edk2-nvidia-non-osi = "e0852f9942a5591ba5960501a53ad684c172354c" +SRCREV_edk2-nvidia = "5de7ef09811a06475248bf07661f7ae53e1c106d" +SRCREV_edk2-nvidia-non-osi = "7d8b0a5f9e3e9d6cc58ee7f3f4036cfc8f21970c" SRCREV_edk2-platforms = "0b05eaed3d0c624a2084034fcc2bd0721809d041" SRC_URI += "\ @@ -34,7 +34,7 @@ SRCREV_FORMAT = "edk2_edk2-platforms_edk2-non-osi_edk2-nvidia_edk2-nvidia-non-os SRC_URI += "\ file://0001-Update-tools_def.template-for-toolchain-differences.patch \ file://0002-L4TLauncher-allow-for-empty-missing-APPEND-line-in-e.patch;patchdir=../edk2-nvidia \ - file://0003-Remove-BUILD_EPOCH-definitions-from-RTC-inf-files.patch;patchdir=../edk2-nvidia \ + file://0003-XusbControllerDxe-use-BaseMemoryLib-functions.patch;patchdir=../edk2-nvidia \ " S = "${WORKDIR}/edk2-tegra/edk2" diff --git a/recipes-bsp/uefi/files/0001-Update-tools_def.template-for-toolchain-differences.patch b/recipes-bsp/uefi/files/0001-Update-tools_def.template-for-toolchain-differences.patch index 3b2b37c5..be4c0003 100644 --- a/recipes-bsp/uefi/files/0001-Update-tools_def.template-for-toolchain-differences.patch +++ b/recipes-bsp/uefi/files/0001-Update-tools_def.template-for-toolchain-differences.patch @@ -1,6 +1,6 @@ -From 3c436fd0ec658b315edac10a170093f32b73754b Mon Sep 17 00:00:00 2001 +From d96ca1c5f34f352d367e07c92f8e73c091a385f3 Mon Sep 17 00:00:00 2001 From: Matt Madison -Date: Mon, 20 May 2024 10:59:27 -0700 +Date: Sat, 12 Oct 2024 06:43:03 -0700 Subject: [PATCH] Update tools_def.template for toolchain differences * Add support for passing SOURCE_DATE_EPOCH and DEBUG_PREFIX_MAP from environment @@ -45,5 +45,5 @@ index 1395ce9ad0..a41189ba1b 100755 DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) DEFINE GCC48_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS) -- -2.34.1 +2.43.0 diff --git a/recipes-bsp/uefi/files/0002-L4TLauncher-allow-for-empty-missing-APPEND-line-in-e.patch b/recipes-bsp/uefi/files/0002-L4TLauncher-allow-for-empty-missing-APPEND-line-in-e.patch index f0702477..6f6b0463 100644 --- a/recipes-bsp/uefi/files/0002-L4TLauncher-allow-for-empty-missing-APPEND-line-in-e.patch +++ b/recipes-bsp/uefi/files/0002-L4TLauncher-allow-for-empty-missing-APPEND-line-in-e.patch @@ -1,11 +1,11 @@ -From 12f67e4724a2e44659a08a64e01b9eafcd992241 Mon Sep 17 00:00:00 2001 +From 4dcda9f95a724623ce2813d73486324243dc2266 Mon Sep 17 00:00:00 2001 From: Matt Madison -Date: Sat, 4 Feb 2023 06:31:24 -0800 -Subject: [PATCH 2/3] L4TLauncher: allow for empty/missing APPEND line in extlinux.conf +Date: Sat, 12 Oct 2024 06:43:52 -0700 +Subject: [PATCH] L4TLauncher: allow for empty/missing APPEND line in + extlinux.conf Upstream-Status: Pending Signed-off-by: Matt Madison -Signed-off-by: Jose Quaresma --- .../Application/L4TLauncher/L4TLauncher.c | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) @@ -53,5 +53,5 @@ index ab86f3e0..3be26f82 100644 } } -- -2.34.1 +2.43.0 diff --git a/recipes-bsp/uefi/files/0003-Remove-BUILD_EPOCH-definitions-from-RTC-inf-files.patch b/recipes-bsp/uefi/files/0003-Remove-BUILD_EPOCH-definitions-from-RTC-inf-files.patch deleted file mode 100644 index 2b49a25d..00000000 --- a/recipes-bsp/uefi/files/0003-Remove-BUILD_EPOCH-definitions-from-RTC-inf-files.patch +++ /dev/null @@ -1,43 +0,0 @@ -From fe0b1d149762eab19bdd3a8018afdf190364ddf3 Mon Sep 17 00:00:00 2001 -From: Matt Madison -Date: Mon, 20 May 2024 11:09:38 -0700 -Subject: [PATCH 3/3] Remove BUILD_EPOCH definitions from RTC inf files - -as we will pass that flag to all compilations via an environment variable. - -Upstream-Status: Inappropriate [OE specific] - -Signed-off-by: Matt Madison ---- - .../Library/MaximRealTimeClockLib/MaximRealTimeClockLib.inf | 4 ---- - .../NuvotonRealTimeClockLib/NuvotonRealTimeClockLib.inf | 5 ----- - 2 files changed, 9 deletions(-) - -diff --git a/Silicon/NVIDIA/Library/MaximRealTimeClockLib/MaximRealTimeClockLib.inf b/Silicon/NVIDIA/Library/MaximRealTimeClockLib/MaximRealTimeClockLib.inf -index 4a69ad62..64e76bee 100644 ---- a/Silicon/NVIDIA/Library/MaximRealTimeClockLib/MaximRealTimeClockLib.inf -+++ b/Silicon/NVIDIA/Library/MaximRealTimeClockLib/MaximRealTimeClockLib.inf -@@ -52,7 +52,3 @@ - gEfiVariableArchProtocolGuid - AND - gEfiVariableWriteArchProtocolGuid -- --# Current usage of this library expects GCC in a UNIX-like shell environment with the date command --[BuildOptions] -- GCC:*_*_*_CC_FLAGS = -DBUILD_EPOCH=`date +%s` -diff --git a/Silicon/NVIDIA/Library/NuvotonRealTimeClockLib/NuvotonRealTimeClockLib.inf b/Silicon/NVIDIA/Library/NuvotonRealTimeClockLib/NuvotonRealTimeClockLib.inf -index db01f928..f444c2b8 100644 ---- a/Silicon/NVIDIA/Library/NuvotonRealTimeClockLib/NuvotonRealTimeClockLib.inf -+++ b/Silicon/NVIDIA/Library/NuvotonRealTimeClockLib/NuvotonRealTimeClockLib.inf -@@ -52,8 +52,3 @@ - gEfiVariableArchProtocolGuid - AND - gEfiVariableWriteArchProtocolGuid -- --# Current usage of this library expects GCC in a UNIX-like shell environment with the date command --# BUILD_EPOCH will be used as the reference date/time needed for Virtual RTC feature. --[BuildOptions] -- GCC:*_*_*_CC_FLAGS = -DBUILD_EPOCH=`date +%s` --- -2.34.1 - diff --git a/recipes-bsp/uefi/files/0003-XusbControllerDxe-use-BaseMemoryLib-functions.patch b/recipes-bsp/uefi/files/0003-XusbControllerDxe-use-BaseMemoryLib-functions.patch new file mode 100644 index 00000000..40d89745 --- /dev/null +++ b/recipes-bsp/uefi/files/0003-XusbControllerDxe-use-BaseMemoryLib-functions.patch @@ -0,0 +1,270 @@ +From 44c16c2589a1ebd2ae53c7370c9a7c4f51d6b8c0 Mon Sep 17 00:00:00 2001 +From: Matt Madison +Date: Sat, 12 Oct 2024 07:09:37 -0700 +Subject: [PATCH] XusbControllerDxe: use BaseMemoryLib functions + +instead of memcpy/memset from the C runtime library. + +Upstream-Status: Pending +Signed-off-by: Matt Madison +--- + .../XusbControllerDxe/XusbControllerDxe.c | 60 +++++++++---------- + 1 file changed, 28 insertions(+), 32 deletions(-) + +diff --git a/Silicon/NVIDIA/Drivers/XusbControllerDxe/XusbControllerDxe.c b/Silicon/NVIDIA/Drivers/XusbControllerDxe/XusbControllerDxe.c +index 6392401c..c6116f2f 100644 +--- a/Silicon/NVIDIA/Drivers/XusbControllerDxe/XusbControllerDxe.c ++++ b/Silicon/NVIDIA/Drivers/XusbControllerDxe/XusbControllerDxe.c +@@ -26,7 +26,6 @@ + #include "XusbDevControllerPriv.h" + #include + #include "XusbDevControllerDesc.h" +-#include + + #define XUSB_INTERRUPT_POLL_PERIOD 10000 + #define NUM_TRB_EVENT_RING 32U +@@ -252,7 +251,7 @@ XudcQueueTrb ( + + /* If Control EP */ + if (ep_index == EP0_IN) { +- memcpy ( ++ CopyMem ( + (VOID *)p_xusb_dev_context->cntrl_epenqueue_ptr, + (VOID *)p_trb, + sizeof (NORMAL_TRB_STRUCT) +@@ -278,7 +277,7 @@ XudcQueueTrb ( + } + /* Bulk Endpoint */ + else if (ep_index == EP1_OUT) { +- memcpy ( ++ CopyMem ( + (VOID *)p_xusb_dev_context->bulkout_epenqueue_ptr, + (VOID *)p_trb, + sizeof (NORMAL_TRB_STRUCT) +@@ -299,7 +298,7 @@ XudcQueueTrb ( + } + /* Bulk Endpoint */ + else if (ep_index == EP1_IN) { +- memcpy ( ++ CopyMem ( + (VOID *)p_xusb_dev_context->bulkin_epenqueue_ptr, + (VOID *)p_trb, + sizeof (NORMAL_TRB_STRUCT) +@@ -372,7 +371,7 @@ XudcIssueStatusTrb ( + return e; + } + +- memset ((VOID *)&strb, 0, sizeof (STATUS_TRB_STRUCT)); ++ ZeroMem ((VOID *)&strb, sizeof (STATUS_TRB_STRUCT)); + XudcCreateStatusTrb (&strb, direction); + + /* Note EP0_IN is bi-directional. */ +@@ -608,7 +607,7 @@ XudcGetDesc ( + } + + *tx_length = MIN (wlength, desc_length); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); + break; + + case USB_DT_CONFIG: +@@ -631,7 +630,7 @@ XudcGetDesc ( + desc[30] = 0; + } + +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); + break; + + case USB_DT_STRING: +@@ -641,27 +640,27 @@ XudcGetDesc ( + case USB_MANF_ID: + DEBUG ((EFI_D_ERROR, "%a: Get desc. Manf ID\r\n", __FUNCTION__)); + *tx_length = MIN (wlength, (UINT16)sizeof (s_usb_manufacturer_id)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_manufacturer_id[0], *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_manufacturer_id[0], *tx_length); + break; + + case USB_PROD_ID: + DEBUG ((EFI_D_ERROR, "%a: Get desc. Prod ID\r\n", __FUNCTION__)); + desc = (UINT8 *)g_usbconfig->product.desc; + *tx_length = MIN (wlength, g_usbconfig->product.len); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); + break; + + case USB_SERIAL_ID: + DEBUG ((EFI_D_ERROR, "%a: Get desc. Serial ID\r\n", __FUNCTION__)); + desc = (UINT8 *)g_usbconfig->serialno.desc; + *tx_length = MIN (wlength, g_usbconfig->serialno.len); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)desc, *tx_length); + break; + + case USB_LANGUAGE_ID: + DEBUG ((EFI_D_ERROR, "%a: Get desc. Lang ID\r\n", __FUNCTION__)); + *tx_length = MIN (wlength, (UINT16)sizeof (s_usb_language_id)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_language_id[0], *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_language_id[0], *tx_length); + break; + + default: +@@ -674,7 +673,7 @@ XudcGetDesc ( + case USB_DT_DEVICE_QUALIFIER: + DEBUG ((EFI_D_ERROR, "%a: Get desc. Dev qualifier\r\n", __FUNCTION__)); + *tx_length = MIN (wlength, (UINT16)sizeof (s_usb_device_qualifier)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_device_qualifier[0], *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_device_qualifier[0], *tx_length); + break; + + case USB_DT_OTHER_SPEED_CONFIG: +@@ -697,13 +696,13 @@ XudcGetDesc ( + } + + *tx_length = MIN (wlength, (UINT16)sizeof (s_other_speed_config_desc)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_other_speed_config_desc[0], *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_other_speed_config_desc[0], *tx_length); + break; + + case USB_DT_BOS: + DEBUG ((EFI_D_ERROR, "%a: Get BOS\r\n", __FUNCTION__)); + *tx_length = MIN (wlength, (UINT16)sizeof (s_bos_descriptor)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_bos_descriptor[0], *tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_bos_descriptor[0], *tx_length); + break; + + default: +@@ -742,7 +741,7 @@ XudcEpGetStatus ( + } + + *tx_length = (UINT16)sizeof (endpoint_status); +- memcpy ((VOID *)ptr_setup_buffer, (VOID *)&endpoint_status[0], sizeof (endpoint_status)); ++ CopyMem ((VOID *)ptr_setup_buffer, (VOID *)&endpoint_status[0], sizeof (endpoint_status)); + } + + static VOID +@@ -794,7 +793,7 @@ XudcIssueDataTrb ( + return EFI_SUCCESS; + } + +- memset ((VOID *)&dtrb, 0, sizeof (DATA_TRB_STRUCT)); ++ ZeroMem ((VOID *)&dtrb, sizeof (DATA_TRB_STRUCT)); + XudcCreateDataTrb (&dtrb, buffer, bytes, direction); + + /* Note EP0_IN is bi-directional. */ +@@ -1009,13 +1008,13 @@ XudcHandleSetupPkt ( + case GET_STATUS: + DEBUG ((EFI_D_ERROR, "%a: Get status\r\n", __FUNCTION__)); + tx_length = MIN (wlength, (UINT16)sizeof (s_usb_dev_status)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_dev_status[0], tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, (VOID *)&s_usb_dev_status[0], tx_length); + break; + + case GET_CONFIGURATION: + DEBUG ((EFI_D_ERROR, "%a: Get Config\r\n", __FUNCTION__)); + tx_length = MIN (wlength, (UINT16)sizeof (p_xusb_dev_context->config_num)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, &p_xusb_dev_context->config_num, tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, &p_xusb_dev_context->config_num, tx_length); + break; + + case GET_DESCRIPTOR: +@@ -1054,7 +1053,7 @@ XudcHandleSetupPkt ( + UINT8 interface_status[2] = { 0, 0 }; + + tx_length = MIN (wlength, (UINT16)sizeof (interface_status)); +- memcpy ((VOID *)mPrivate->pSetupBuffer, &interface_status[0], tx_length); ++ CopyMem ((VOID *)mPrivate->pSetupBuffer, &interface_status[0], tx_length); + break; + + case GET_INTERFACE: +@@ -1062,7 +1061,7 @@ XudcHandleSetupPkt ( + DEBUG ((EFI_D_ERROR, "%a: Get Interface D2H_I/F\r\n", __FUNCTION__)); + tx_length = MIN (wlength, (UINT16)sizeof (p_xusb_dev_context->interface_num)); + +- memcpy ( ++ CopyMem ( + (VOID *)mPrivate->pSetupBuffer, + &p_xusb_dev_context->interface_num, + tx_length +@@ -1571,7 +1570,7 @@ XudcHandleTxferEvent ( + mPrivate->DataReceivedCallback (ReportReceived, mPrivate->DataPacket); + + /* Prepare next Rx packet */ +- memset (mPrivate->DataPacket, 0, MAX_TFR_LENGTH); ++ ZeroMem (mPrivate->DataPacket, MAX_TFR_LENGTH); + + /* check the data size to put the next TRB */ + if (mPrivate->CurrentRxLength == mPrivate->TotalRxLength) { +@@ -1687,7 +1686,7 @@ XudcPollForEvent ( + #endif + /* Check if we are waiting for setup packet */ + p_setup_event_trb = (SETUP_EVENT_TRB_STRUCT *)p_event_trb; +- memcpy ( ++ CopyMem ( + (VOID *)&mPrivate->usb_setup_data[0], + (VOID *)&p_setup_event_trb->data[0], + 8 +@@ -1900,21 +1899,18 @@ XudcInitTransferRing ( + + /* zero out tx ring */ + if ((ep_index == EP0_IN) || (ep_index == EP0_OUT)) { +- memset ( ++ ZeroMem ( + (VOID *)mPrivate->pTxRingEP0, +- 0, + NUM_TRB_TRANSFER_RING * sizeof (DATA_TRB_STRUCT) + ); + } else if (ep_index == EP1_IN) { +- memset ( ++ ZeroMem ( + (VOID *)mPrivate->pTxRingEP1In, +- 0, + NUM_TRB_TRANSFER_RING * sizeof (DATA_TRB_STRUCT) + ); + } else if (ep_index == EP1_OUT) { +- memset ( ++ ZeroMem ( + (VOID *)mPrivate->pTxRingEP1Out, +- 0, + NUM_TRB_TRANSFER_RING * sizeof (DATA_TRB_STRUCT) + ); + } else { +@@ -2034,7 +2030,7 @@ XudcInitEpContext ( + + /* Control Endpoint 0. */ + if (ep_index == EP0_IN) { +- memset ((VOID *)ep_info, 0, sizeof (EP_CONTEXT)); ++ ZeroMem ((VOID *)ep_info, sizeof (EP_CONTEXT)); + /* Set Endpoint State to running. */ + ep_info->ep_state = EP_RUNNING; + /* Set error count to 3 */ +@@ -2080,7 +2076,7 @@ XudcInitEpContext ( + p_link_trb->trb_type = LINK_TRB; + } else { + if (ep_index == EP1_OUT) { +- memset ((VOID *)ep_info, 0, sizeof (EP_CONTEXT)); ++ ZeroMem ((VOID *)ep_info, sizeof (EP_CONTEXT)); + ep_info->ep_state = EP_RUNNING; + /* Set error count to 3 */ + ep_info->cerr = 3; +@@ -2134,7 +2130,7 @@ XudcInitEpContext ( + p_link_trb->trb_type = LINK_TRB; + } else { + /* EP IN */ +- memset ((VOID *)ep_info, 0, sizeof (EP_CONTEXT)); ++ ZeroMem ((VOID *)ep_info, sizeof (EP_CONTEXT)); + ep_info->ep_state = EP_RUNNING; + /* Set error count to 3 */ + ep_info->cerr = 3; +@@ -2615,7 +2611,7 @@ XudcIssueNormalTrb ( + UINTN BufferSize = bytes; + VOID *Mapping; + +- memset ((void *)&normal_trb, 0, sizeof (NORMAL_TRB_STRUCT)); ++ ZeroMem ((void *)&normal_trb, sizeof (NORMAL_TRB_STRUCT)); + e = DmaMap ( + MapOperationBusMasterCommonBuffer, + (VOID *)buffer, +-- +2.43.0 +