1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 /**
5  ***************************************************************************
6  * @file icp_sal_iommu.h
7  *
8  * @ingroup SalUser
9  *
10  * Sal iommu wrapper functions.
11  *
12  ***************************************************************************/
13 
14 #ifndef ICP_SAL_IOMMU_H
15 #define ICP_SAL_IOMMU_H
16 
17 /*************************************************************************
18   * @ingroup Sal
19   * @description
20   *   Function returns page_size rounded size for iommu remapping
21   *
22   * @assumptions
23   *      None
24   * @sideEffects
25   *      None
26   * @reentrant
27   *      No
28   * @threadSafe
29   *      No
30   *
31   * @param[in] size           Minimum required size.
32   *
33   * @retval    page_size rounded size for iommu remapping.
34   *
35   *************************************************************************/
36 size_t icp_sal_iommu_get_remap_size(size_t size);
37 
38 /*************************************************************************
39   * @ingroup Sal
40   * @description
41   *   Function adds an entry into iommu remapping table
42   *
43   * @assumptions
44   *      None
45   * @sideEffects
46   *      None
47   * @reentrant
48   *      No
49   * @threadSafe
50   *      No
51   *
52   * @param[in] phaddr         Host physical address.
53   * @param[in] iova           Guest physical address.
54   * @param[in] size           Size of the remapped region.
55   *
56   * @retval CPA_STATUS_SUCCESS        No error
57   * @retval CPA_STATUS_FAIL           Operation failed
58   *
59   *************************************************************************/
60 CpaStatus icp_sal_iommu_map(Cpa64U phaddr, Cpa64U iova, size_t size);
61 
62 /*************************************************************************
63   * @ingroup Sal
64   * @description
65   *   Function removes an entry from iommu remapping table
66   *
67   * @assumptions
68   *      None
69   * @sideEffects
70   *      None
71   * @reentrant
72   *      No
73   * @threadSafe
74   *      No
75   *
76   * @param[in] iova           Guest physical address to be removed.
77   * @param[in] size           Size of the remapped region.
78   *
79   * @retval CPA_STATUS_SUCCESS        No error
80   * @retval CPA_STATUS_FAIL           Operation failed
81   *
82   *************************************************************************/
83 CpaStatus icp_sal_iommu_unmap(Cpa64U iova, size_t size);
84 #endif
85