]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
tee: optee: report OP-TEE revision information
authorJérôme Forissier <jerome.forissier@linaro.org>
Fri, 24 Nov 2017 14:47:18 +0000 (15:47 +0100)
committerJens Wiklander <jens.wiklander@linaro.org>
Tue, 6 Mar 2018 10:03:55 +0000 (11:03 +0100)
When the driver initializes, report the following information
about the OP-TEE OS:
- major and minor version,
- build identifier (if available).

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Matthias Brugger <mbruger@suse.com>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
drivers/tee/optee/core.c

index e9843c53fe3141e6d252bbcfbd21a239bbf08ca5..e5fd5ed217dac9562bb7ccf10c2ac96053d7a991 100644 (file)
@@ -356,6 +356,27 @@ static bool optee_msg_api_uid_is_optee_api(optee_invoke_fn *invoke_fn)
        return false;
 }
 
+static void optee_msg_get_os_revision(optee_invoke_fn *invoke_fn)
+{
+       union {
+               struct arm_smccc_res smccc;
+               struct optee_smc_call_get_os_revision_result result;
+       } res = {
+               .result = {
+                       .build_id = 0
+               }
+       };
+
+       invoke_fn(OPTEE_SMC_CALL_GET_OS_REVISION, 0, 0, 0, 0, 0, 0, 0,
+                 &res.smccc);
+
+       if (res.result.build_id)
+               pr_info("revision %lu.%lu (%08lx)", res.result.major,
+                       res.result.minor, res.result.build_id);
+       else
+               pr_info("revision %lu.%lu", res.result.major, res.result.minor);
+}
+
 static bool optee_msg_api_revision_is_compatible(optee_invoke_fn *invoke_fn)
 {
        union {
@@ -547,6 +568,8 @@ static struct optee *optee_probe(struct device_node *np)
                return ERR_PTR(-EINVAL);
        }
 
+       optee_msg_get_os_revision(invoke_fn);
+
        if (!optee_msg_api_revision_is_compatible(invoke_fn)) {
                pr_warn("api revision mismatch\n");
                return ERR_PTR(-EINVAL);