Merge "msm: camera: smmu: Fix the smmu create_handle function" into camera-kernel.lnx.4.0

Цей коміт міститься в:
Camera Software Integration
2020-10-28 13:27:55 -07:00
зафіксовано Gerrit - the friendly Code Review server
джерело 02d480f026 bf2282bad6
коміт 3da4013942

Переглянути файл

@@ -218,7 +218,7 @@ static struct cam_iommu_cb_set iommu_cb_set;
static enum dma_data_direction cam_smmu_translate_dir(
enum cam_smmu_map_dir dir);
static int cam_smmu_check_handle_unique(int hdl);
static bool cam_smmu_is_hdl_nonunique_or_null(int hdl);
static int cam_smmu_create_iommu_handle(int idx);
@@ -810,13 +810,12 @@ void cam_smmu_reset_iommu_table(enum cam_smmu_init_dir ops)
}
}
static int cam_smmu_check_handle_unique(int hdl)
static bool cam_smmu_is_hdl_nonunique_or_null(int hdl)
{
int i;
if (hdl == HANDLE_INIT) {
CAM_DBG(CAM_SMMU,
"iommu handle is init number. Need to try again");
if ((hdl == HANDLE_INIT) || (!hdl)) {
CAM_DBG(CAM_SMMU, "iommu handle: %d is not valid", hdl);
return 1;
}
@@ -876,11 +875,12 @@ static int cam_smmu_create_add_handle_in_table(char *name,
if (iommu_cb_set.cb_info[i].handle == HANDLE_INIT) {
mutex_lock(&iommu_cb_set.cb_info[i].lock);
/* make sure handle is unique */
/* make sure handle is unique and non-zero*/
do {
handle =
cam_smmu_create_iommu_handle(i);
} while (cam_smmu_check_handle_unique(handle));
} while (cam_smmu_is_hdl_nonunique_or_null(
handle));
/* put handle in the table */
iommu_cb_set.cb_info[i].handle = handle;