From 0d8657dd3056063fb115946b10157477b5c70451 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 20 Nov 2023 09:09:45 +0000
Subject: [PATCH] enable lvds 1280x800
---
kernel/drivers/tee/optee/supp.c | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/kernel/drivers/tee/optee/supp.c b/kernel/drivers/tee/optee/supp.c
index 43626e1..3e644a1 100644
--- a/kernel/drivers/tee/optee/supp.c
+++ b/kernel/drivers/tee/optee/supp.c
@@ -91,6 +91,9 @@
struct optee_supp_req *req = kzalloc(sizeof(*req), GFP_KERNEL);
bool interruptable;
u32 ret;
+ unsigned long timeleft;
+ int id;
+ struct optee_supp_req *get_req;
if (!req)
return TEEC_ERROR_OUT_OF_MEMORY;
@@ -115,8 +118,17 @@
* exclusive access again.
*/
while (wait_for_completion_interruptible(&req->c)) {
+ pr_err("Warning, Interrupting an RPC to supplicant!\n");
+ timeleft = wait_for_completion_timeout(&req->c, msecs_to_jiffies(2000));
+ if (timeleft) {
+ /* get completion, it means tee-supplicant is alive. */
+ break;
+ } else {
+ /* timeout, it means tee-supplicant is dead, interrupting an RPC. */
+ interruptable = true;
+ }
+
mutex_lock(&supp->mutex);
- interruptable = !supp->ctx;
if (interruptable) {
/*
* There's no supplicant available and since the
@@ -135,6 +147,14 @@
list_del(&req->link);
req->in_queue = false;
}
+
+ idr_for_each_entry(&supp->idr, get_req, id) {
+ if (get_req == req) {
+ idr_remove(&supp->idr, id);
+ supp->req_id = -1;
+ break;
+ }
+ }
}
mutex_unlock(&supp->mutex);
--
Gitblit v1.6.2