在 7/17/2025 3:31 AM, Bjorn Andersson 写道: > On Mon, Jul 14, 2025 at 11:11:33AM +0530, Ling Xu wrote: >> Some platforms (like sa8775p) 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). >> > > This was called cdsp1 before patch 3 where you removed it and now the > same id is introduced but this time with the name GDSP. > > Iirc there was a cdsp1 in SA8295P/SA8540P, are you silently dropping > support for that here? Or perhaps just renaming it? > Cdsp1 support is still there. It's instance of cdsp domain, so we merged it in cdsp logic.
else if (!strncmp(domain, "cdsp", 4)) return CDSP_DOMAIN_ID; In fastrpc_get_domain_id, it return CDSP_DOMAIN_ID for cdsp1 because they use same deamon. > Regards, > Bjorn > >> Signed-off-by: Ling Xu <quic_l...@quicinc.com> >> --- >> 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); >> -- >> 2.34.1 >> -- Thx and BRs, Ling Xu