Re: [PATCH v3 8/9] mailbox: mediatek: Add CMDQ secure mailbox driver
From: Jason-JH Lin (林睿祥) <hidden>
Date: 2024-01-03 06:53:44
Also in:
linux-devicetree, linux-media, linux-mediatek, lkml
On Thu, 2023-12-28 at 01:38 +0000, CK Hu (胡俊光) wrote:
On Wed, 2023-12-27 at 07:25 +0000, Jason-JH Lin (林睿祥) wrote:quoted
Hi CK, Thanks for the reviews. On Tue, 2023-12-26 at 08:58 +0000, CK Hu (胡俊光) wrote:quoted
Hi, Jason: On Fri, 2023-12-22 at 12:52 +0800, Jason-JH.Lin wrote:quoted
To support secure video path feature, GCE have to read/write registgers in the secure world. GCE will enable the secure access permission to the HW who wants to access the secure content buffer. Add CMDQ secure mailbox driver to make CMDQ client user is able to sending their HW settings to the secure world. So that GCE can execute all instructions to configure HW in the secure world. Signed-off-by: Jason-JH.Lin <redacted> ---[snip]quoted
+ +static int cmdq_sec_fill_iwc_msg(struct cmdq_sec_context *context, + struct cmdq_sec_task *sec_task, u32 thrd_idx) +{ + struct iwc_cmdq_message_t *iwc_msg = NULL; + struct cmdq_sec_data *data = (struct cmdq_sec_data *)sec_task-quoted
task.pkt->sec_data;+ u32 size = 0, offset = 0, *instr; + + iwc_msg = (struct iwc_cmdq_message_t *)context-quoted
iwc_msg;+ + if (sec_task->task.pkt->cmd_buf_size + 4 * CMDQ_INST_SIZE > CMDQ_TZ_CMD_BLOCK_SIZE) { + pr_err("sec_task:%p size:%zu > %u", + sec_task, sec_task->task.pkt-quoted
cmd_buf_size,CMDQ_TZ_CMD_BLOCK_SIZE); + return -EFAULT; + } + + if (thrd_idx == CMDQ_INVALID_THREAD) { + iwc_msg->command.cmd_size = 0; + iwc_msg->command.metadata.addr_list_length = 0; + return -EINVAL; + } + + iwc_msg->command.thread = thrd_idx; + iwc_msg->command.scenario = sec_task->scenario; + iwc_msg->command.eng_flag = sec_task->engine_flag; + size = sec_task->task.pkt->cmd_buf_size; + memcpy(iwc_msg->command.va_base + offset, sec_task-quoted
task.pkt- va_base, size);I think it's not necessary to copy from normal command buffer to normal command buffer. Just iwc_msg->command.va_base = sec_task->task.pkt->va_base; You have a secure command buffer for secure gce to execute command. If you want to modify command buffer, copy from normal command buffer to secure command buffer, and modify the secure command buffer. Regards, CKI think secure world won't recognize normal world's va, so we nee to copy to iwc_msg->command.va_base, which is a world share memory first.Referring to cmdq_sec_allocate_wsm(), any kernel buffer could use tee_shm_register_kernel_buf() to become share buffer between normal world and secure world. In client driver, use tee_client_open_context() to create tee context and register normal command buffer to be share buffer. This would reduce the redundant memory copy. Regards, CK
OK, I'll try to register normal cmd buffer to share memory. Regards, Jason-JH.Lin
quoted
Regards, Jason-JH.Lin
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel