1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2022 Intel Corporation */ 3 /** 4 ***************************************************************************** 5 * @file lac_mem.c Implementation of Memory Functions 6 * 7 * @ingroup LacMem 8 * 9 *****************************************************************************/ 10 11 /* 12 ******************************************************************************* 13 * Include header files 14 ******************************************************************************* 15 */ 16 #include "qat_utils.h" 17 #include "cpa.h" 18 19 #include "icp_accel_devices.h" 20 #include "icp_adf_init.h" 21 #include "icp_adf_transport.h" 22 #include "icp_adf_debug.h" 23 #include "icp_sal_iommu.h" 24 25 #include "lac_mem.h" 26 #include "lac_mem_pools.h" 27 #include "lac_common.h" 28 #include "lac_list.h" 29 #include "icp_qat_fw_la.h" 30 #include "lac_sal_types.h" 31 32 /* 33 ******************************************************************************** 34 * Static Variables 35 ******************************************************************************** 36 */ 37 38 #define MAX_BUFFER_SIZE (LAC_BITS_TO_BYTES(4096)) 39 /**< @ingroup LacMem 40 * Maximum size of the buffers used in the resize function */ 41 42 /* 43 ******************************************************************************* 44 * Define public/global function definitions 45 ******************************************************************************* 46 */ 47 /** 48 * @ingroup LacMem 49 */ 50 CpaStatus 51 icp_LacBufferRestore(Cpa8U *pUserBuffer, 52 Cpa32U userLen, 53 Cpa8U *pWorkingBuffer, 54 Cpa32U workingLen, 55 CpaBoolean copyBuf) 56 { 57 Cpa32U padSize = 0; 58 59 /* NULL is a valid value for working buffer as this function may be 60 * called to clean up in an error case where all the resize operations 61 * were not completed */ 62 if (NULL == pWorkingBuffer) { 63 return CPA_STATUS_SUCCESS; 64 } 65 66 if (workingLen < userLen) { 67 QAT_UTILS_LOG("Invalid buffer sizes\n"); 68 return CPA_STATUS_INVALID_PARAM; 69 } 70 71 if (pUserBuffer != pWorkingBuffer) { 72 73 if (CPA_TRUE == copyBuf) { 74 /* Copy from internal buffer to user buffer */ 75 padSize = workingLen - userLen; 76 memcpy(pUserBuffer, pWorkingBuffer + padSize, userLen); 77 } 78 79 Lac_MemPoolEntryFree(pWorkingBuffer); 80 } 81 return CPA_STATUS_SUCCESS; 82 } 83 84 /** 85 * @ingroup LacMem 86 */ 87 CpaPhysicalAddr 88 SalMem_virt2PhysExternal(void *pVirtAddr, void *pServiceGen) 89 { 90 sal_service_t *pService = (sal_service_t *)pServiceGen; 91 92 if (NULL != pService->virt2PhysClient) { 93 return pService->virt2PhysClient(pVirtAddr); 94 } else { 95 /* Use internal QAT Utils virt to phys */ 96 /* Ok for kernel space probably should not use for user */ 97 return LAC_OS_VIRT_TO_PHYS_INTERNAL(pVirtAddr); 98 } 99 } 100 101 size_t 102 icp_sal_iommu_get_remap_size(size_t size) 103 { 104 return size; 105 } 106 107 CpaStatus 108 icp_sal_iommu_map(Cpa64U phaddr, Cpa64U iova, size_t size) 109 { 110 return CPA_STATUS_SUCCESS; 111 } 112 113 CpaStatus 114 icp_sal_iommu_unmap(Cpa64U iova, size_t size) 115 { 116 return CPA_STATUS_SUCCESS; 117 } 118