qseecom: Add a new smc cmd to check RPMB key provision status
A new smc cmd is added to check RPMB key provision status Change-Id: I50411bf9ae7f31589be34d7b5aaf48f2c12f0018 Signed-off-by: Zhen Kong <zkong@codeaurora.org>
This commit is contained in:
parent
5c2bb64a1c
commit
80a9c6a26b
2 changed files with 25 additions and 4 deletions
|
@ -624,6 +624,13 @@ static int qseecom_scm_call2(uint32_t svc_id, uint32_t tz_cmd_id,
|
|||
ret = scm_call2(smc_id, &desc);
|
||||
break;
|
||||
}
|
||||
case QSEOS_RPMB_CHECK_PROV_STATUS_COMMAND: {
|
||||
smc_id = TZ_OS_RPMB_CHECK_PROV_STATUS_ID;
|
||||
desc.arginfo = TZ_OS_RPMB_CHECK_PROV_STATUS_ID_PARAM_ID;
|
||||
__qseecom_reentrancy_check_if_no_app_blocked(smc_id);
|
||||
ret = scm_call2(smc_id, &desc);
|
||||
break;
|
||||
}
|
||||
case QSEOS_GENERATE_KEY: {
|
||||
u32 tzbuflen = PAGE_ALIGN(sizeof
|
||||
(struct qseecom_key_generate_ireq) -
|
||||
|
@ -2338,6 +2345,7 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
|||
switch (req.cmd_id) {
|
||||
case QSEOS_RPMB_PROVISION_KEY_COMMAND:
|
||||
case QSEOS_RPMB_ERASE_COMMAND:
|
||||
case QSEOS_RPMB_CHECK_PROV_STATUS_COMMAND:
|
||||
send_req_ptr = &send_svc_ireq;
|
||||
req_buf_size = sizeof(send_svc_ireq);
|
||||
if (__qseecom_process_rpmb_svc_cmd(data, &req,
|
||||
|
@ -2402,15 +2410,21 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
|||
case QSEOS_RESULT_SUCCESS:
|
||||
break;
|
||||
case QSEOS_RESULT_INCOMPLETE:
|
||||
pr_err("qseos_result_incomplete\n");
|
||||
pr_debug("qseos_result_incomplete\n");
|
||||
ret = __qseecom_process_incomplete_cmd(data, &resp);
|
||||
if (ret) {
|
||||
pr_err("process_incomplete_cmd fail: err: %d\n",
|
||||
ret);
|
||||
pr_err("process_incomplete_cmd fail with result: %d\n",
|
||||
resp.result);
|
||||
}
|
||||
if (req.cmd_id == QSEOS_RPMB_CHECK_PROV_STATUS_COMMAND) {
|
||||
pr_warn("RPMB key status is 0x%x\n", resp.result);
|
||||
*(uint32_t *)req.resp_buf = resp.result;
|
||||
ret = 0;
|
||||
}
|
||||
break;
|
||||
case QSEOS_RESULT_FAILURE:
|
||||
pr_err("process_incomplete_cmd failed err: %d\n", ret);
|
||||
pr_err("scm call failed with resp.result: %d\n", resp.result);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
default:
|
||||
pr_err("Response result %d not supported\n",
|
||||
|
|
|
@ -63,6 +63,7 @@ enum qseecom_qceos_cmd_id {
|
|||
QSEOS_TEE_CLOSE_SESSION,
|
||||
QSEOS_TEE_REQUEST_CANCELLATION,
|
||||
QSEOS_CONTINUE_BLOCKED_REQ_COMMAND,
|
||||
QSEOS_RPMB_CHECK_PROV_STATUS_COMMAND = 0x1B,
|
||||
QSEOS_FSM_LTEOTA_REQ_CMD = 0x109,
|
||||
QSEOS_FSM_LTEOTA_REQ_RSP_CMD = 0x110,
|
||||
QSEOS_FSM_IKE_REQ_CMD = 0x203,
|
||||
|
@ -554,6 +555,12 @@ __packed struct qseecom_continue_blocked_request_ireq {
|
|||
#define TZ_OS_RPMB_ERASE_ID_PARAM_ID \
|
||||
TZ_SYSCALL_CREATE_PARAM_ID_0
|
||||
|
||||
#define TZ_OS_RPMB_CHECK_PROV_STATUS_ID \
|
||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_QSEE_OS, TZ_SVC_RPMB, 0x03)
|
||||
|
||||
#define TZ_OS_RPMB_CHECK_PROV_STATUS_ID_PARAM_ID \
|
||||
TZ_SYSCALL_CREATE_PARAM_ID_0
|
||||
|
||||
#define TZ_OS_KS_GEN_KEY_ID \
|
||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_QSEE_OS, TZ_SVC_KEYSTORE, 0x01)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue