On 27/03/2023 19:42, Dylan Van Assche wrote: > To support FastRPC Context Banks which aren't mapped via the SMMU, > make the whole reserved memory region available to the DSP to allow > access to coherent buffers. > > This is performed by assigning the memory to the DSP via a hypervisor > call to set the correct permissions for the Virtual Machines on the DSP. > This is only necessary when a memory region is provided for SLPI DSPs > so guard this with a domain ID check. > > Signed-off-by: Dylan Van Assche <me@xxxxxxxxxxxxxxxxx> Hi Dylan! Personally pretty excited to LGTM. Please drop the noisy debug prints. With those fixed Reviewed-by: Caleb Connolly <caleb.connolly@xxxxxxxxxx> > --- > drivers/misc/fastrpc.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c > index f48466960f1b..caf2ae556956 100644 > --- a/drivers/misc/fastrpc.c > +++ b/drivers/misc/fastrpc.c > @@ -2231,6 +2231,8 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) > int i, err, domain_id = -1, vmcount; > const char *domain; > bool secure_dsp; > + struct device_node *rmem_node; > + struct reserved_mem *rmem; > unsigned int vmids[FASTRPC_MAX_VMIDS]; > > err = of_property_read_string(rdev->of_node, "label", &domain); > @@ -2274,6 +2276,20 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) > } > } > > + rmem_node = of_parse_phandle(rdev->of_node, "memory-region", 0); > + dev_info(rdev, "ASSIGNING MEMORY\n"); ^^ > + if (domain_id == SDSP_DOMAIN_ID && rmem_node) { > + rmem = of_reserved_mem_lookup(rmem_node); > + if (!rmem) > + return -EINVAL; > + > + dev_info(rdev, "ASSIGNING MEMORY START\n"); ^^ > + qcom_scm_assign_mem(rmem->base, rmem->size, &data->perms, > + data->vmperms, data->vmcount); > + > + dev_info(rdev, "ASSIGNING MEMORY END\n"); ^^ > + } > + > secure_dsp = !(of_property_read_bool(rdev->of_node, "qcom,non-secure-domain")); > data->secure = secure_dsp; > -- Kind Regards, Caleb (they/them)