Skip to content

Commit a75707d

Browse files
committed
FROMLIST: iommu/arm-smmu-qcom: Fix fastrpc compatible string in ACTLR client match table
The qcom_smmu_actlr_client_of_match table contained "qcom,fastrpc" as the compatible string for applying ACTLR prefetch settings to FastRPC devices. However, "qcom,fastrpc" is the compatible string for the parent rpmsg channel node, which is not an IOMMU client — it carries no "iommus" property in the device tree and is never attached to an SMMU context bank. The actual IOMMU clients are the compute context bank (CB) child nodes, which use the compatible string "qcom,fastrpc-compute-cb". These nodes carry the "iommus" property and are probed by fastrpc_cb_driver via fastrpc_cb_probe(), which sets up the DMA mask and IOMMU mappings for each FastRPC session. The device tree structure is: fastrpc { compatible = "qcom,fastrpc"; /* rpmsg channel, no iommus */ ... compute-cb@3 { compatible = "qcom,fastrpc-compute-cb"; iommus = <&apps_smmu 0x1823 0x0>; /* actual IOMMU client */ }; }; Since qcom_smmu_set_actlr_dev() calls of_match_device() against the device being attached to the SMMU context bank, the "qcom,fastrpc" entry was never matching any device. As a result, the ACTLR prefetch settings (PREFETCH_DEEP | CPRE | CMTLB) were silently never applied for FastRPC compute context banks. Fix this by replacing "qcom,fastrpc" with "qcom,fastrpc-compute-cb" in the match table so that the ACTLR settings are correctly applied to the compute CB devices that are the true IOMMU clients. Link: https://lore.kernel.org/all/20251209052323.1133495-1-bibek.patro@oss.qualcomm.com/ Assisted-by: Anthropic:claude-4-6-sonnet Fixes: 3e35c3e ("iommu/arm-smmu: Add ACTLR data and support for qcom_smmu_500") Signed-off-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
1 parent c9922dc commit a75707d

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static const struct of_device_id qcom_smmu_actlr_client_of_match[] = {
3939
.data = (const void *) (PREFETCH_DEEP | CPRE | CMTLB) },
4040
{ .compatible = "qcom,adreno-smmu",
4141
.data = (const void *) (PREFETCH_DEEP | CPRE | CMTLB) },
42-
{ .compatible = "qcom,fastrpc",
42+
{ .compatible = "qcom,fastrpc-compute-cb",
4343
.data = (const void *) (PREFETCH_DEEP | CPRE | CMTLB) },
4444
{ .compatible = "qcom,qcm2290-mdss",
4545
.data = (const void *) (PREFETCH_SHALLOW | CPRE | CMTLB) },

0 commit comments

Comments
 (0)