From nobody Mon Feb 9 08:55:37 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25D6B3358C0 for ; Mon, 26 Jan 2026 12:26:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769430403; cv=none; b=O6yH/vZLGSdQWnDDNuqmmncmRHragQdTzvDag15AneWVKYQYV/+iWbAE1N8J7NtUz5xinavQshwrC7skDLmneyISDjQz6jxYqBd1a2vzTbFFegXD+IDnMPaNVAE/DHUoRNbyjPJgg8Nl/kzn1afOH88d8htwDxT3gJ0VrweLYWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769430403; c=relaxed/simple; bh=LisLM8o2IrxdYcIIO9+hL3LVsKTwWPx/Vp9uhneXL6E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CSOKHY6MoJ/3EhdDAhPDbE0CE/suc0JUw0N34p6gElKGW5tCLYoM4Cq3tdAxowJ9SD1DIwKy3u5fZcSwFMDagCaAI02ahHGE4ojO7hFz/Czq+L3WZDqs7eN/ZXUCSlyK77Y8vG9CLDbjL37F4FEJw09cz40hACiXtETHp2Riib0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BXv9ysV9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fY4kkcHp; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BXv9ysV9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fY4kkcHp" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60Q8xLRL2478397 for ; Mon, 26 Jan 2026 12:26:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= pUt1hiMnVbf8G3WXvMrybBKWWZSAdzLDBYLcaYIhNMA=; b=BXv9ysV99eCh4hQ9 YAdh3KJEhaq1e1wKPUKNcqD3YBVoFLgJnXbPpL1yHo0DdHzBHW1SrC+MHOR+H71H t9tIpgSf/yi8KSfVpVMviAGNfcGt1DTtZQYAeQUG+d0/KCMEzbXCUhlCmkjiA+cI y5hd5cD8MmHL1+vyhLZJIHs5MY2sOAIilYGOGqBJLW0fApcw/kGkgmMJJK1fvLMh BYWu7RQRwe/jjjboDdzShpPryYIO/CHoBkzUYk2B0dRCAedMY/xP6egQGlBUQ+O9 Gdt9JQbPMsK0sbAXZQMUvQRpExTfxVu9zL7fdUaMqJDLA0gKrubjsbHlIO2LvQ5+ 5pKb3Q== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bvq8dmgxg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 26 Jan 2026 12:26:41 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c629a3276e9so308498a12.2 for ; Mon, 26 Jan 2026 04:26:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769430401; x=1770035201; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pUt1hiMnVbf8G3WXvMrybBKWWZSAdzLDBYLcaYIhNMA=; b=fY4kkcHpeC6OOdd7VKZ4AMWgv/4hmtejI2JiG72bo94tnA3ngVi55dOzZ8Il5UG4vV kRfKZR/TlKoZFJjFDWWdul26/NClP52+u0dyePt7uqzVGGs4g7O/fDAN2oIHkFLQrb3m eWITxBkzbu2b7IWwqGQqxAtCs6LR5ZKrS8SaqlWutMbN6A/esOGw3osDSO56YWbVWGvh Y7PU5nbI0MxgJM7ZGI5LksKi7gegnXPiFEG5PT6jnIWa+cn94vVGAL5wmokhouQzgh1v qGqk1Mt090TzzYPDjUZonGx0O2H0+6kE56c+qRnw0pmE7hAM2fG5HoYMvBdWcB1XAX5R UktQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769430401; x=1770035201; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pUt1hiMnVbf8G3WXvMrybBKWWZSAdzLDBYLcaYIhNMA=; b=rKL6rjMKjoOa1RvUoG4cZj4toxjAecv/TGf2DSGWmKcuArR9eXqSSIeLoIM46l0Qfk 4j+itqgslWE0PikK2LlNyVYkS5e313HPX4r+DF+8bs71SUq+06/WOu9Vh5FoUkxiZ7RG AAjyCI4zMrMBdmTsw0v4Z/BmDFTUWXN3aYhdq6VAAY+1iOL6tBexcXKXpMVm3je05Wp0 LDRO/tQ2pDWzjjv1mqOJZ0D1o5N31VCIpwIJo1Xnap4NyWPt97uHriDCnoIguH7gsAk9 nv4kCBpMoGFDGdxXDAo6XRX1pbbo+zKNihFwHErqNhQGNRTlZGo3F2ZYGVcjHZleHShv NHRQ== X-Forwarded-Encrypted: i=1; AJvYcCX6DKO0SgLTqItiy/fJ9hjVVdru4IPNu9DzcvXZ6aRLZTQ5VjmjksPYQNXqtswDEiXDVkrrFWEelp3xpZU=@vger.kernel.org X-Gm-Message-State: AOJu0YyLLXwHkE/Aej9wP4HyBwamvKfspqkqsYgkolWHFpSjx7Oqr9HG /k83yWd+Bt2goDFuiCry6ZPVdrBUDHz6+L+2tKYGrzaYRuedQUQ8HRXNF9xMM8cXMljbSAeeNur eU8DWruZB/ItmYZE7OiAZdvOdpsvNOPKhDWKapJYeZl0K8/OCQ1uAz4OCouIOx53QazM= X-Gm-Gg: AZuq6aKwmDVyIi/CK1XmVsfCDSSS6NWHfcf2jD2cedMJePQlZlsp9LODKH8pvBrufzu vzbTYc/IC4bldOanwjo7bnOqgk/gSCpZceA2qDZcoNkIGmquCKpNWtvEfDCvDfxbya4LJvCvVlm SfiUWGuqosw0QQxSZ2BdA9f8s/w8LLBno1h7twLKjfw2zeBF0uCwxl1L68X2qJuHAcUOzgxku79 leMl4Swl8MW1DuYSScJbNAnYJmo7FxJnK6DSKBHPuhNVR5AdSMgIapgigGGYzXQsWiJErtmg5mH 7Q2XtlLvued1OZmePJTAsFUizEBQtAWkXgJrnxW9wxpvHXg9hTZete1mviR4V2G/+gjEjCOiII5 9qZDClbDBVYyQmlAFTTUwmH1oJRgTXmVj7M9H/hvAVgxV X-Received: by 2002:a05:6300:2209:b0:34d:d030:6739 with SMTP id adf61e73a8af0-38e9f15357amr4026329637.31.1769430400648; Mon, 26 Jan 2026 04:26:40 -0800 (PST) X-Received: by 2002:a05:6300:2209:b0:34d:d030:6739 with SMTP id adf61e73a8af0-38e9f15357amr4026310637.31.1769430400178; Mon, 26 Jan 2026 04:26:40 -0800 (PST) Received: from hu-vgarodia-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6366644379sm6076022a12.33.2026.01.26.04.26.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Jan 2026 04:26:39 -0800 (PST) From: Vikash Garodia Date: Mon, 26 Jan 2026 17:55:45 +0530 Subject: [PATCH 2/7] of: factor out of_map_id() code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260126-kaanapali-iris-v1-2-e2646246bfc1@oss.qualcomm.com> References: <20260126-kaanapali-iris-v1-0-e2646246bfc1@oss.qualcomm.com> In-Reply-To: <20260126-kaanapali-iris-v1-0-e2646246bfc1@oss.qualcomm.com> To: Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Saravana Kannan , Joerg Roedel , Will Deacon , Robin Murphy , Stefan Schmidt , Hans Verkuil , Krzysztof Kozlowski , Vishnu Reddy , Hans Verkuil Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Bryan O'Donoghue , Vikash Garodia , Charan Teja Kalla , Vijayanand Jitta X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769430381; l=3666; i=vikash.garodia@oss.qualcomm.com; s=20241104; h=from:subject:message-id; bh=ZpTj9qWsLnyN4rxo95Da1e9fz3tnEJ1IHU8Y7c6eY7s=; b=Xs61KGtP1xf6/QohXdv+2+qgdPqJTXd0nbCPTYqLgi/wUjzCUtxlAhw+hcGQVNKmohUSqdQ0l 8b7uE2KjS/xA/BKlfbI7ATmoLurwn1QlBp3+hVQ32r+OYOunyv8lJrx X-Developer-Key: i=vikash.garodia@oss.qualcomm.com; a=ed25519; pk=LY9Eqp4KiHWxzGNKGHbwRFEJOfRCSzG/rxQNmvZvaKE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI2MDEwNSBTYWx0ZWRfX2+w5LBRO0Z95 T+0p/RoaMgGOD5LKpbwEQd3CQg0oYV1TYrt5TtElIOTLOPKfOQKEWojBko6sDUNGPciqnp4S+f/ 1bt9WYqErLAu06TA6zeP+Lc0C5y7d5m5A3BZEbHdtLNNN5fprBuoPW4u1M6ziIUffpEuJTG9dSJ UPUd4ejuvSVKL7ewAqwnTKG2ulaJwulBy9DDI76bI8jHimLozVpZJpoDr6YKOT6F9cvyaPGLopa owwA77aYi652EbNCWjjVNI8Vn609/czAOldc5W3GaDlyWoyar4xGBzM6q6pAUlci9PMVnjSMXgC F+NO0nYzTMye43OftRd07yBbVg3/FeVQquVT3qx8lK1xX6ZYd/OFgzysa4EU0yfYX2ykpnJ7dX4 KyzHHDeq7JvV44gfvHcpU43KGCv8MDc67PQaBE3Qe8XT3qXg3t2tOGjR5UrqCUPbVfHlZb9kI47 58raNbN3GVftBGKlt6g== X-Authority-Analysis: v=2.4 cv=RIq+3oi+ c=1 sm=1 tr=0 ts=69775d81 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=WfhCwlpBSbr3wMVQJZIA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: q1rlTHlHOyNM8isSIMB8WQuVglTjsnaO X-Proofpoint-GUID: q1rlTHlHOyNM8isSIMB8WQuVglTjsnaO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-26_02,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 adultscore=0 clxscore=1015 phishscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601260105 From: Charan Teja Kalla Linux interprets multiple mappings for the same input ID as a set of equivalent choices to pick one. There exists usecases where these set must be maintained in parallel, ex: on ARM, a dynamically created child device(s) is referencing multiple input id's in parent iommu-map. Factor out the code where multiple mappings needs to be maintained in parallel can be achieved through callback from this factored out code. Signed-off-by: Charan Teja Kalla Signed-off-by: Vijayanand Jitta Signed-off-by: Vikash Garodia --- drivers/of/base.c | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 0825f3dc93f2472e9947af09acdde72031ab85bc..606bef4f90e7d13bae4f7b0c45a= cd1755ad89826 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2122,6 +2122,32 @@ static bool of_check_bad_map(const __be32 *map, int = len) return true; } =20 +static int of_map_id_fill_output(struct of_map_id_arg *arg, + struct device_node *phandle_node, u32 id_or_offset, + const __be32 *out_base, u32 cells, + bool bypass) +{ + if (bypass) { + arg->map_args.args[0] =3D id_or_offset; + return 0; + } + + if (arg->map_args.np) + of_node_put(phandle_node); + else + arg->map_args.np =3D phandle_node; + + if (arg->map_args.np !=3D phandle_node) + return -EAGAIN; + + for (int i =3D 0; i < cells; i++) + arg->map_args.args[i] =3D (id_or_offset + be32_to_cpu(out_base[i])); + + arg->map_args.args_count =3D cells; + + return 0; +} + /** * of_map_id - Translate an ID through a downstream mapping. * @np: root complex device node. @@ -2162,8 +2188,7 @@ int of_map_id(const struct device_node *np, u32 id, c= onst char *map_name, if (arg->map_args.np) return -ENODEV; /* Otherwise, no map implies no translation */ - arg->map_args.args[0] =3D id; - return 0; + goto bypass_translation; } =20 if (map_bytes % sizeof(*map)) @@ -2185,6 +2210,7 @@ int of_map_id(const struct device_node *np, u32 id, c= onst char *map_name, struct device_node *phandle_node; u32 id_base, phandle, id_len, id_off, cells =3D 0; const __be32 *out_base; + int ret; =20 if (map_len - offset < 2) goto err_map_len; @@ -2238,19 +2264,10 @@ int of_map_id(const struct device_node *np, u32 id,= const char *map_name, if (masked_id < id_base || id_off >=3D id_len) continue; =20 - if (arg->map_args.np) - of_node_put(phandle_node); - else - arg->map_args.np =3D phandle_node; - - if (arg->map_args.np !=3D phandle_node) + ret =3D of_map_id_fill_output(arg, phandle_node, id_off, out_base, cells= , false); + if (ret =3D=3D -EAGAIN) continue; =20 - for (int i =3D 0; i < cells; i++) - arg->map_args.args[i] =3D (id_off + be32_to_cpu(out_base[i])); - - arg->map_args.args_count =3D cells; - pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, leng= th: %08x, id: %08x -> %08x\n", np, map_name, map_mask, id_base, be32_to_cpup(out_base), id_len, id, id_off + be32_to_cpup(out_base)); @@ -2260,9 +2277,9 @@ int of_map_id(const struct device_node *np, u32 id, c= onst char *map_name, pr_info("%pOF: no %s translation for id 0x%x on %pOF\n", np, map_name, id, arg->map_args.np ? arg->map_args.np : NULL); =20 +bypass_translation: /* Bypasses translation */ - arg->map_args.args[0] =3D id; - return 0; + return of_map_id_fill_output(arg, NULL, id, 0, 0, true); =20 err_map_len: pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes); --=20 2.34.1