adsprpc: Enable fastrpc trusted driver

Fixes to fastrpc trusted driver to run on TVM.
Added a workqueue for receiving kernel packets.
Changed array allocation of kernel sockets to save space.
Original design was allocating static 2-d array glist_session_ctrl
for all possible subsystems and domains.
New implementation is allocating staic 2-d reference array.
Each entry in the array will only be allocated if remote domain
is supported.

Change-Id: I303375822714aa6f8eadf525b09326aa05714fd7
Signed-off-by: Edgar Flores <quic_edgarf@quicinc.com>
This commit is contained in:
Edgar Flores
2023-03-03 17:50:42 -08:00
committed by Gerrit - the friendly Code Review server
parent 557a709244
commit ed0b528087
4 changed files with 286 additions and 134 deletions

View File

@@ -21,7 +21,7 @@ struct frpc_transport_session_control {
static struct frpc_transport_session_control rpmsg_session_control[NUM_CHANNELS];
inline int verify_transport_device(int cid, bool trusted_vm)
inline int verify_transport_device(int cid, int tvm_remote_domain)
{
int err = 0;
struct frpc_transport_session_control *rpmsg_session = &rpmsg_session_control[cid];
@@ -197,7 +197,7 @@ int fastrpc_wait_for_transport_interrupt(int cid,
return err;
}
int fastrpc_transport_send(int cid, void *rpc_msg, uint32_t rpc_msg_size, bool trusted_vm)
int fastrpc_transport_send(int cid, void *rpc_msg, uint32_t rpc_msg_size, int tvm_remote_domain)
{
int err = 0;
struct frpc_transport_session_control *rpmsg_session = &rpmsg_session_control[cid];
@@ -256,6 +256,12 @@ inline void fastrpc_transport_session_deinit(int cid)
mutex_destroy(&rpmsg_session_control[cid].rpmsg_mutex);
}
int fastrpc_set_tvm_remote_domain(struct fastrpc_file *fl, struct fastrpc_ioctl_init *init)
{
fl->tvm_remote_domain = -1;
return 0;
}
int fastrpc_transport_init(void)
{
int err = 0;