summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvenkata sateesh <quic_vencher@quicinc.com>2022-11-27 22:34:46 -0800
committervenkata sateesh <quic_vencher@quicinc.com>2022-11-28 02:29:05 -0800
commitac5fff3d4d0c95427918064f6ba1ff09db61dfb7 (patch)
treedc7ab8b461691a2c9abdfe0e13543e0766cf545e
parentfd4c96da805bdc2788a99bdf22a7e6417787013c (diff)
downloadsecuremsm-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.c19
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");