On 7/9/25 7:52 AM, Ling Xu wrote: > 在 7/9/2025 1:47 PM, Ling Xu 写道: >> The fastrpc driver has support for 5 types of remoteprocs. There are >> some products which support GDSP remoteprocs. GDSP is General Purpose >> DSP where tasks can be offloaded. This patch extends the driver to >> support GDSP remoteprocs. >> > > sorry, please ignore this patch. > I haven't change commit message here. > "Extend the driver to support GDSP remoteprocs."
How about this instead: Some platforms (like SMabcd) feature one or more GPDSPs (General Purpose DSPs). Similar to other kinds of Hexagon DSPs, they provide a FastRPC implementation, allowing code execution in both signed and unsigned protection domains. Extend the checks to allow domain names starting with "gdsp" (possibly followed by an index). Konrad > >> Signed-off-by: Ling Xu <[email protected]> >> --- >> drivers/misc/fastrpc.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c >> index 85b6eb16b616..d05969de406e 100644 >> --- a/drivers/misc/fastrpc.c >> +++ b/drivers/misc/fastrpc.c >> @@ -27,6 +27,7 @@ >> #define MDSP_DOMAIN_ID (1) >> #define SDSP_DOMAIN_ID (2) >> #define CDSP_DOMAIN_ID (3) >> +#define GDSP_DOMAIN_ID (4) >> #define FASTRPC_MAX_SESSIONS 14 >> #define FASTRPC_MAX_VMIDS 16 >> #define FASTRPC_ALIGN 128 >> @@ -2249,6 +2250,8 @@ static int fastrpc_get_domain_id(const char *domain) >> return MDSP_DOMAIN_ID; >> else if (!strncmp(domain, "sdsp", 4)) >> return SDSP_DOMAIN_ID; >> + else if (!strncmp(domain, "gdsp", 4)) >> + return GDSP_DOMAIN_ID; >> >> return -EINVAL; >> } >> @@ -2323,13 +2326,14 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device >> *rpdev) >> case ADSP_DOMAIN_ID: >> case MDSP_DOMAIN_ID: >> case SDSP_DOMAIN_ID: >> - /* Unsigned PD offloading is only supported on CDSP */ >> + /* Unsigned PD offloading is only supported on CDSP and GDSP */ >> data->unsigned_support = false; >> err = fastrpc_device_register(rdev, data, secure_dsp, domain); >> if (err) >> goto err_free_data; >> break; >> case CDSP_DOMAIN_ID: >> + case GDSP_DOMAIN_ID: >> data->unsigned_support = true; >> /* Create both device nodes so that we can allow both Signed >> and Unsigned PD */ >> err = fastrpc_device_register(rdev, data, true, domain); >
