msm: eva: fence override mode
Change-Id: I0cd8b3dc234168f365d8664f3a4d0c09094a1da1
Šī revīzija ir iekļauta:

revīziju iesūtīja
Gerrit - the friendly Code Review server

vecāks
2532f316af
revīzija
ab30e5fc6f
@@ -245,6 +245,7 @@ struct msm_cvp_hfi_defs {
|
|||||||
bool checksum_enabled;
|
bool checksum_enabled;
|
||||||
enum hal_command_response resp;
|
enum hal_command_response resp;
|
||||||
char name[PKT_NAME_LEN];
|
char name[PKT_NAME_LEN];
|
||||||
|
bool force_kernel_fence;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cvp_hfi_device {
|
struct cvp_hfi_device {
|
||||||
@@ -303,6 +304,7 @@ void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type,
|
|||||||
struct cvp_hfi_device *hdev);
|
struct cvp_hfi_device *hdev);
|
||||||
|
|
||||||
int get_pkt_index(struct cvp_hal_session_cmd_pkt *hdr);
|
int get_pkt_index(struct cvp_hal_session_cmd_pkt *hdr);
|
||||||
|
int get_pkt_fenceoverride(struct cvp_hal_session_cmd_pkt* hdr);
|
||||||
int get_pkt_index_from_type(u32 pkt_type);
|
int get_pkt_index_from_type(u32 pkt_type);
|
||||||
int get_hfi_version(void);
|
int get_hfi_version(void);
|
||||||
unsigned int get_msg_size(struct cvp_hfi_msg_session_hdr *hdr);
|
unsigned int get_msg_size(struct cvp_hfi_msg_session_hdr *hdr);
|
||||||
|
@@ -603,9 +603,15 @@ static int cvp_populate_fences( struct eva_kmd_hfi_packet *in_pkt,
|
|||||||
struct cvp_fence_queue *q;
|
struct cvp_fence_queue *q;
|
||||||
enum op_mode mode;
|
enum op_mode mode;
|
||||||
struct cvp_buf_type *buf;
|
struct cvp_buf_type *buf;
|
||||||
|
bool override;
|
||||||
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
override = get_pkt_fenceoverride((struct cvp_hal_session_cmd_pkt*)in_pkt);
|
||||||
|
|
||||||
|
dprintk(CVP_SYNX, "%s:Fence Override is %d\n",__func__, override);
|
||||||
|
dprintk(CVP_SYNX, "%s:Kernel Fence is %d\n", __func__, cvp_kernel_fence_enabled);
|
||||||
|
|
||||||
q = &inst->fence_cmd_queue;
|
q = &inst->fence_cmd_queue;
|
||||||
|
|
||||||
mutex_lock(&q->lock);
|
mutex_lock(&q->lock);
|
||||||
@@ -632,24 +638,53 @@ static int cvp_populate_fences( struct eva_kmd_hfi_packet *in_pkt,
|
|||||||
f->output_index = 0;
|
f->output_index = 0;
|
||||||
buf_offset = offset;
|
buf_offset = offset;
|
||||||
|
|
||||||
if (!cvp_kernel_fence_enabled) {
|
if (cvp_kernel_fence_enabled == 0)
|
||||||
for (i = 0; i < num; i++) {
|
{
|
||||||
buf = (struct cvp_buf_type *)&in_pkt->pkt_data[buf_offset];
|
goto soc_fence;
|
||||||
buf_offset += sizeof(*buf) >> 2;
|
}
|
||||||
|
else if (cvp_kernel_fence_enabled == 1)
|
||||||
if (buf->input_handle || buf->output_handle) {
|
{
|
||||||
f->num_fences++;
|
goto kernel_fence;
|
||||||
if (buf->input_handle)
|
}
|
||||||
f->output_index++;
|
else if (cvp_kernel_fence_enabled == 2)
|
||||||
}
|
{
|
||||||
|
if (override == true)
|
||||||
|
goto kernel_fence;
|
||||||
|
else if (override == false)
|
||||||
|
goto soc_fence;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dprintk(CVP_ERR, "%s: invalid params", __func__);
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
f->signature = 0xB0BABABE;
|
}
|
||||||
if (f->num_fences)
|
else
|
||||||
goto fence_cmd_queue;
|
{
|
||||||
|
dprintk(CVP_ERR, "%s: invalid params", __func__);
|
||||||
goto free_exit;
|
rc = -EINVAL;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
soc_fence:
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
buf = (struct cvp_buf_type*)&in_pkt->pkt_data[buf_offset];
|
||||||
|
buf_offset += sizeof(*buf) >> 2;
|
||||||
|
|
||||||
|
if (buf->input_handle || buf->output_handle) {
|
||||||
|
f->num_fences++;
|
||||||
|
if (buf->input_handle)
|
||||||
|
f->output_index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f->signature = 0xB0BABABE;
|
||||||
|
if (f->num_fences)
|
||||||
|
goto fence_cmd_queue;
|
||||||
|
|
||||||
|
goto free_exit;
|
||||||
|
|
||||||
|
|
||||||
|
kernel_fence:
|
||||||
/* First pass to find INPUT synx handles */
|
/* First pass to find INPUT synx handles */
|
||||||
for (i = 0; i < num; i++) {
|
for (i = 0; i < num; i++) {
|
||||||
buf = (struct cvp_buf_type *)&in_pkt->pkt_data[buf_offset];
|
buf = (struct cvp_buf_type *)&in_pkt->pkt_data[buf_offset];
|
||||||
|
@@ -36,7 +36,7 @@ bool msm_cvp_mmrm_enabled = !true;
|
|||||||
#endif
|
#endif
|
||||||
bool msm_cvp_dcvs_disable = !true;
|
bool msm_cvp_dcvs_disable = !true;
|
||||||
int msm_cvp_minidump_enable = !1;
|
int msm_cvp_minidump_enable = !1;
|
||||||
bool cvp_kernel_fence_enabled = true;
|
int cvp_kernel_fence_enabled = 2;
|
||||||
|
|
||||||
#define MAX_DBG_BUF_SIZE 4096
|
#define MAX_DBG_BUF_SIZE 4096
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ struct dentry *msm_cvp_debugfs_init_drv(void)
|
|||||||
&msm_cvp_minidump_enable);
|
&msm_cvp_minidump_enable);
|
||||||
debugfs_create_bool("fw_coverage", 0644, dir, &msm_cvp_fw_coverage);
|
debugfs_create_bool("fw_coverage", 0644, dir, &msm_cvp_fw_coverage);
|
||||||
debugfs_create_bool("auto_pil", 0644, dir, &msm_cvp_auto_pil);
|
debugfs_create_bool("auto_pil", 0644, dir, &msm_cvp_auto_pil);
|
||||||
debugfs_create_bool("kernel_fence", 0644, dir, &cvp_kernel_fence_enabled);
|
debugfs_create_u32("kernel_fence", 0644, dir, &cvp_kernel_fence_enabled);
|
||||||
debugfs_create_bool("disable_thermal_mitigation", 0644, dir,
|
debugfs_create_bool("disable_thermal_mitigation", 0644, dir,
|
||||||
&msm_cvp_thermal_mitigation_disabled);
|
&msm_cvp_thermal_mitigation_disabled);
|
||||||
debugfs_create_bool("enable_cacheop", 0644, dir,
|
debugfs_create_bool("enable_cacheop", 0644, dir,
|
||||||
|
@@ -69,7 +69,7 @@ extern bool msm_cvp_dsp_disable;
|
|||||||
extern bool msm_cvp_mmrm_enabled;
|
extern bool msm_cvp_mmrm_enabled;
|
||||||
extern bool msm_cvp_dcvs_disable;
|
extern bool msm_cvp_dcvs_disable;
|
||||||
extern int msm_cvp_minidump_enable;
|
extern int msm_cvp_minidump_enable;
|
||||||
extern bool cvp_kernel_fence_enabled;
|
extern int cvp_kernel_fence_enabled;
|
||||||
|
|
||||||
#define dprintk(__level, __fmt, arg...) \
|
#define dprintk(__level, __fmt, arg...) \
|
||||||
do { \
|
do { \
|
||||||
|
@@ -359,6 +359,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DFS_FRAME",
|
.name = "DFS_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_SGM_OF_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_SGM_OF_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -375,6 +376,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "SGM_OF_FRAME",
|
.name = "SGM_OF_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -391,6 +393,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "WARP_NCC_FRAME",
|
.name = "WARP_NCC_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_WARP_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_WARP_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -415,6 +418,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "WARP_FRAME",
|
.name = "WARP_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_DMM_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_DMM_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -439,6 +443,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DMM_FRAME",
|
.name = "DMM_FRAME",
|
||||||
|
.force_kernel_fence = true,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -487,6 +492,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "TME_FRAME",
|
.name = "TME_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_CV_ODT_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_CV_ODT_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -535,6 +541,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "NCC_FRAME",
|
.name = "NCC_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_ICA_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_ICA_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -551,6 +558,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "ICA_FRAME",
|
.name = "ICA_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -567,6 +575,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "HCD_FRAME",
|
.name = "HCD_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_DC_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_DC_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -583,6 +592,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DC_FRAME",
|
.name = "DC_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_DCM_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_DCM_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -599,6 +609,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DCM_FRAME",
|
.name = "DCM_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -615,6 +626,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "PYS_HCD_FRAME",
|
.name = "PYS_HCD_FRAME",
|
||||||
|
.force_kernel_fence = true,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -711,6 +723,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "XRA_PATCH_FRAME",
|
.name = "XRA_PATCH_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -727,6 +740,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "XRA_MATCH_FRAME",
|
.name = "XRA_MATCH_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -743,6 +757,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "RGE_FRAME",
|
.name = "RGE_FRAME",
|
||||||
|
.force_kernel_fence = true,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_CVP_RGE_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_CVP_RGE_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -759,6 +774,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "ITOF_FRAME",
|
.name = "ITOF_FRAME",
|
||||||
|
.force_kernel_fence = true,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_EVA_ITOF_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_EVA_ITOF_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -791,6 +807,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DLFL_FRAME",
|
.name = "DLFL_FRAME",
|
||||||
|
.force_kernel_fence = false,
|
||||||
},
|
},
|
||||||
[HFI_CMD_SESSION_EVA_DLFL_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
[HFI_CMD_SESSION_EVA_DLFL_CONFIG - HFI_CMD_SESSION_CVP_START] =
|
||||||
{
|
{
|
||||||
@@ -823,6 +840,7 @@ const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = {
|
|||||||
.is_config_pkt = false,
|
.is_config_pkt = false,
|
||||||
.resp = HAL_NO_RESP,
|
.resp = HAL_NO_RESP,
|
||||||
.name = "DME_FRAME",
|
.name = "DME_FRAME",
|
||||||
|
.force_kernel_fence = true,
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -839,6 +857,13 @@ int get_pkt_index(struct cvp_hal_session_cmd_pkt *hdr)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_pkt_fenceoverride(struct cvp_hal_session_cmd_pkt* hdr)
|
||||||
|
{
|
||||||
|
return cvp_hfi_defs[hdr->packet_type - HFI_CMD_SESSION_CVP_START].force_kernel_fence;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int get_pkt_index_from_type(u32 pkt_type)
|
int get_pkt_index_from_type(u32 pkt_type)
|
||||||
{
|
{
|
||||||
if ((pkt_type < HFI_CMD_SESSION_CVP_START) ||
|
if ((pkt_type < HFI_CMD_SESSION_CVP_START) ||
|
||||||
|
Atsaukties uz šo jaunā problēmā
Block a user