diff options
author | venkata sateesh <quic_vencher@quicinc.com> | 2022-11-27 22:34:46 -0800 |
---|---|---|
committer | venkata sateesh <quic_vencher@quicinc.com> | 2022-11-28 02:29:05 -0800 |
commit | ac5fff3d4d0c95427918064f6ba1ff09db61dfb7 (patch) | |
tree | dc7ab8b461691a2c9abdfe0e13543e0766cf545e | |
parent | fd4c96da805bdc2788a99bdf22a7e6417787013c (diff) | |
download | securemsm-ac5fff3d4d0c95427918064f6ba1ff09db61dfb7.tar.gz |
securemsm-kernel: Add support for commonlib loaded from host
Add support for qcom,commonlib-loaded-by-hostvm
to use commonlib loaded by host VM.
Change-Id: I3a9f08bb53dde7545f518247ae885411ae8eef64
Signed-off-by: venkata sateesh <quic_vencher@quicinc.com>
Signed-off-by: Nishant Raj <quic_nishraj@quicinc.com>
-rw-r--r-- | qseecom/qseecom.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/qseecom/qseecom.c b/qseecom/qseecom.c index 9aecbe9..cbfd0f9 100644 --- a/qseecom/qseecom.c +++ b/qseecom/qseecom.c @@ -294,6 +294,7 @@ struct qseecom_control { bool whitelist_support; bool commonlib_loaded; bool commonlib64_loaded; + bool commonlib_loaded_by_hostvm; struct ce_hw_usage_info ce_info; int qsee_bw_count; @@ -2766,7 +2767,8 @@ static int qseecom_load_app(struct qseecom_dev_handle *data, void __user *argp) /* Check and load cmnlib */ if (qseecom.qsee_version > QSEEE_VERSION_00) { - if (!qseecom.commonlib_loaded && + if (!(qseecom.commonlib_loaded || + qseecom.commonlib_loaded_by_hostvm) && load_img_req.app_arch == ELFCLASS32) { ret = qseecom_load_commonlib_image(data, "cmnlib"); if (ret) { @@ -2777,7 +2779,8 @@ static int qseecom_load_app(struct qseecom_dev_handle *data, void __user *argp) pr_debug("cmnlib is loaded\n"); } - if (!qseecom.commonlib64_loaded && + if (!(qseecom.commonlib64_loaded || + qseecom.commonlib_loaded_by_hostvm) && load_img_req.app_arch == ELFCLASS64) { ret = qseecom_load_commonlib_image(data, "cmnlib64"); if (ret) { @@ -4738,7 +4741,9 @@ static int __qseecom_load_fw(struct qseecom_dev_handle *data, char *appname, /* Check and load cmnlib */ if (qseecom.qsee_version > QSEEE_VERSION_00) { - if (!qseecom.commonlib_loaded && app_arch == ELFCLASS32) { + if (!(qseecom.commonlib_loaded || + qseecom.commonlib_loaded_by_hostvm) && + app_arch == ELFCLASS32) { ret = qseecom_load_commonlib_image(data, "cmnlib"); if (ret) { pr_err("failed to load cmnlib\n"); @@ -4748,7 +4753,9 @@ static int __qseecom_load_fw(struct qseecom_dev_handle *data, char *appname, pr_debug("cmnlib is loaded\n"); } - if (!qseecom.commonlib64_loaded && app_arch == ELFCLASS64) { + if (!(qseecom.commonlib64_loaded || + qseecom.commonlib_loaded_by_hostvm) && + app_arch == ELFCLASS64) { ret = qseecom_load_commonlib_image(data, "cmnlib64"); if (ret) { pr_err("failed to load cmnlib64\n"); @@ -9436,6 +9443,7 @@ static int qseecom_init_control(void) qseecom.qseos_version = QSEOS_VERSION_14; qseecom.commonlib_loaded = false; qseecom.commonlib64_loaded = false; + qseecom.commonlib_loaded_by_hostvm = false; qseecom.whitelist_support = qseecom_check_whitelist_feature(); return rc; @@ -9457,6 +9465,9 @@ static int qseecom_parse_dt(struct platform_device *pdev) qseecom.commonlib64_loaded = of_property_read_bool((&pdev->dev)->of_node, "qcom,commonlib64-loaded-by-uefi"); + qseecom.commonlib_loaded_by_hostvm = + of_property_read_bool((&pdev->dev)->of_node, + "qcom,commonlib-loaded-by-hostvm"); qseecom.fde_key_size = of_property_read_bool((&pdev->dev)->of_node, "qcom,fde-key-size"); |