On Tue, Jul 07, 2026 at 03:12:44AM -0700, Ananthu C V wrote: > SHM bridge creation is required to enable memory protection for both > remoteproc metadata and its memory region on Qualcomm SoCs running > non-Gunyah based Hypervisors. We currently rely on the iommu property > being present in the remoteproc nodes to detect this. > > However, this doesn't cover for cases where the remoteproc does a late > attach, like SoCCP, and for remoteprocs like OOBM SS (Out of Band > Management Sub-system) that doesn't have an iommu in front of it. In the > former case, any attempt to create new mappings would fail with EEXIST > as they are already setup by the bootloader when the SoCCP is brought > out of reset, and unmapping them to create fresh mappings leads to faults > since SoCCP could have active transactions on the bus. In the latter case, > absence of iommu will be caught by the has_iommu flag, and SHM bridge > creation will be skipped. > > Fix this by introducing a needs_tzmem flag which would cover for the > above edge cases by serving as an alternate trigger to the PAS helpers > to ensure that SHM bridge is established. > > Signed-off-by: Ananthu C V <[email protected]> > --- > drivers/remoteproc/qcom_q6v5_pas.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c > b/drivers/remoteproc/qcom_q6v5_pas.c > index 60a4337d9e51..cd7273fbcf98 100644 > --- a/drivers/remoteproc/qcom_q6v5_pas.c > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > @@ -61,6 +61,7 @@ struct qcom_pas_data { > bool region_assign_shared; > int region_assign_vmid; > bool early_boot; > + bool needs_tzmem; > }; > > struct qcom_pas { > @@ -914,8 +915,8 @@ static int qcom_pas_probe(struct platform_device *pdev) > goto remove_ssr_sysmon; > } > > - pas->pas_ctx->use_tzmem = rproc->has_iommu; > - pas->dtb_pas_ctx->use_tzmem = rproc->has_iommu; > + pas->pas_ctx->use_tzmem = desc->needs_tzmem || rproc->has_iommu; > + pas->dtb_pas_ctx->use_tzmem = desc->needs_tzmem || rproc->has_iommu; > > if (desc->early_boot) > pas->rproc->state = RPROC_DETACHED; > @@ -1657,8 +1658,27 @@ static const struct qcom_pas_data > kaanapali_soccp_resource = { > .early_boot = true, > }; > > +static const struct qcom_pas_data glymur_soccp_resource = { > + .crash_reason_smem = 656, > + .firmware_name = "soccp.mbn", > + .dtb_firmware_name = "soccp_dtb.mbn", > + .pas_id = 51, > + .dtb_pas_id = 0x41, > + .proxy_pd_names = (char*[]){ > + "cx", > + "mx", > + NULL > + }, > + .ssr_name = "soccp", > + .sysmon_name = "soccp", > + .auto_boot = true, > + .early_boot = true, > + .needs_tzmem = true, > +}; > + > static const struct of_device_id qcom_pas_of_match[] = { > { .compatible = "qcom,eliza-adsp-pas", .data = &sm8550_adsp_resource }, > + { .compatible = "qcom,glymur-soccp-pas", .data = &glymur_soccp_resource > }, > { .compatible = "qcom,kaanapali-soccp-pas", .data = > &kaanapali_soccp_resource }, > { .compatible = "qcom,milos-adsp-pas", .data = &sm8550_adsp_resource }, > { .compatible = "qcom,milos-cdsp-pas", .data = &milos_cdsp_resource }, >
Reviewed-by: Mukesh Ojha <[email protected]> > -- > 2.43.0 > -- -Mukesh Ojha

