summaryrefslogtreecommitdiff
path: root/qseecom/qseecom.c
diff options
context:
space:
mode:
Diffstat (limited to 'qseecom/qseecom.c')
-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");