From mboxrd@z Thu Jan 1 00:00:00 1970 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 6835639A7EE for ; Tue, 3 Feb 2026 10:14:09 +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=1770113650; cv=none; b=W6dLHl450mOfF66FFiqI962I1RFNJ/ulg3NjT6I3QMUnDHe25xkmLjL3AOiMziT59J5mNkjxSjyiKfD66YPy78u4E5h3hZDMxWa+bb5EISW6pFQ7E2QZkMz/D9WTg6KozOlyVzC7VW0xgr5gC+81VDisQJx0QpCwp0Ogw62xaMI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770113650; c=relaxed/simple; bh=nO4yxC8mGJ7RX1Uvi9dzJ3eun2vtYWKZH59w/kxrhU8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=YDuGZFWMyiV8KDhTYkNd+LG91OB83nfha8leNWGcPdSoC6QppXPG6j3KvReJaOzA3jA192lD7WDYj9yWAgLv2j76Apiz8jnl5kdRSsPJGPXhpSNLUGDolsax+JVAx0n13qRiPyxhuiGSnEcGwKPCX5W3CmB4VXCA+DrwjNeDJgc= 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=lkLpJe9a; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=F65HbZjZ; 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="lkLpJe9a"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="F65HbZjZ" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 613A4C2Q1592011 for ; Tue, 3 Feb 2026 10:14:08 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= GuKTV8pSI5c3CW/T+TdlJ5YvcmLO2ZOzAgr0oyQI9Gs=; b=lkLpJe9auGtWfIzq 6CDk2jHnb0vrjvuauLnki5W/s7dkxvI7mJJNY7PNY6bVYYb8uZFL/Q5kzE/kZXvO YO9ilV8jFgdpr6BAHtRW+6nKp18GqnDPQhsN1GdOccLJTcSgQuBGba+fKyhCBLpE EyZ6kz7jMXhYz0V/7QewkWv5i5iOtGhByH2/gN6aa1nuCoD5quG8ouL7rq3ImaWe iMy/uI/DD37xdcwI6OqqtqBzLv8xFNcjwTI6RU/2KrRB+XpEmEIi2ZdP/CydV81p cER0wuDFQcnZdbiMcJj+3tG72yEHIHM1Jv9/kV6UxSjrBSJqfnUTs/BsLgCr/a7w 7OtZpg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c3exjg11m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 03 Feb 2026 10:14:08 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a7d7b87977so52245385ad.0 for ; Tue, 03 Feb 2026 02:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770113648; x=1770718448; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=GuKTV8pSI5c3CW/T+TdlJ5YvcmLO2ZOzAgr0oyQI9Gs=; b=F65HbZjZFePNXbGSDwnAyIrsxku6qLtEGQ8nAMsIGIrzDfganGC/BSrQ1vNbzWQeLK KOFfVd4epLUDX1iEiu5Fc3/HPJTKuSxdFl6b+jVLbt+zCDtxLyP6UlkoHv3jhtMtWMQs H+C2LVpXBKt0GQ5/r08kUREKyH7uYuZlo82J9zyg+fClx4wvg+IhsxLYNIhwviRXD6wA evQBJBwhUC8qpKKtpRsE1FDNxl6kD23A6EqvUcxnZVFHubBX1ij//dLugIzX9NRXEp5a l7dUgDcYs3a5XQdjoVSh2qyHbZFY0rEwDCiUhCOlx07T+zyWOltEenLvR7FYuour7pWG u2SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770113648; x=1770718448; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=GuKTV8pSI5c3CW/T+TdlJ5YvcmLO2ZOzAgr0oyQI9Gs=; b=Cpw/qpmYY3yknPRCIbjuip8g0ngaHwQXFjPbGlwe48Bvr9c2ir5QfICTDbi9aJd0uX NzbCwuHVwhHhFjtub8ae75nXd8K5YwY/r8GasqA8yVF516kgNd3etAiAuBFKnjLGRIIb WKljaPikidMm1pi1RvmUO4G9JjYXRNRFIHVUGTygtLusBPt9mmi+a1CN79d8I+YeZeZY Axj6ROfzvuH13c2NqQibAoDi/3BE1MkYmOEcTyzwYqossJr5rjE6IVAMygrSNx4BM3tI RN6qjQxeAiDNyTGOZ4T9hdlAVsHKOyNZH2rvI1lXJ9BfF72yD9iWvDz77zHc87zLoepi /ftw== X-Forwarded-Encrypted: i=1; AJvYcCV/PwtHX+1+uc+xfAapGa0Pdqp3glYJ3Wv+6ivt3knJvO8ph8NvEbZ00en0+V18bpWtZaIT36d05csl8j8=@vger.kernel.org X-Gm-Message-State: AOJu0YxjvxhxruSqPbH2WuqVjBzRi86qdvnjitnszZNk+6xKqp4bGvVh utaSka220xbHlWs0xSGQm7XLqq5/GA7Nko/w76EL75RNBdSPgrzN6RwfQMoBd2pw+9XXiviTBLe xitl13YKVRcPtQiYtay61RtcQVn4q4Uiyi3J5uI6jCwE3Iqi5Sj/dC2VQWgTWxdYuOlI= X-Gm-Gg: AZuq6aJVvt3w24GnMgI3vGu+E131TEJFLdT1zGtT3LfiMAZ+0VShZPaUiOCA0ZA/6K5 /KuHjGsv0k2y2nsUvyuCChbG5wlS6Ds0mCJfMaaKo7/ekqGiHueUdZ+1UXvpWT/xjHP8PjPkFxk t0i4QshdPNbHk+m2rNkBsOxMr5Mil6WBqLB3HvxmKVqVCN5rwPigrFtptr24C/4y7XDe89qIl3J pUYZaHh58kBRa3QY6zmUMDaEiyzSR0LFkAUDbu4vuJJL2PnEgzF1ywu+MxnXcuEi556oTb7TTzn CQmAKnVPxcVEzW17G30MtnKAqi5xGaFD58VBuqQe8qq1teCE31FOI/ZTa2EZtskdWwNLNCi9ls/ 430abj1MGiTbFe0HsyI/2uyfjvnZf0kg7e6Uz1RSF7Oki X-Received: by 2002:a17:903:2f8a:b0:2a0:c84f:412c with SMTP id d9443c01a7336-2a8d81bd988mr149332985ad.57.1770113647885; Tue, 03 Feb 2026 02:14:07 -0800 (PST) X-Received: by 2002:a17:903:2f8a:b0:2a0:c84f:412c with SMTP id d9443c01a7336-2a8d81bd988mr149332625ad.57.1770113647328; Tue, 03 Feb 2026 02:14:07 -0800 (PST) Received: from [10.219.57.109] ([202.46.23.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a8bd74e815sm151387755ad.52.2026.02.03.02.14.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Feb 2026 02:14:06 -0800 (PST) Message-ID: <7d1b5897-8f17-4213-b893-d99d96afef94@oss.qualcomm.com> Date: Tue, 3 Feb 2026 15:43:58 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/7] of: factor out of_map_id() code To: Bryan O'Donoghue , Vikash Garodia , 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, Charan Teja Kalla References: <20260126-kaanapali-iris-v1-0-e2646246bfc1@oss.qualcomm.com> <20260126-kaanapali-iris-v1-2-e2646246bfc1@oss.qualcomm.com> <47fbba15-6375-40fc-bd2c-8ebf2788837e@linaro.org> Content-Language: en-US From: Vijayanand Jitta In-Reply-To: <47fbba15-6375-40fc-bd2c-8ebf2788837e@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Authority-Analysis: v=2.4 cv=W8c1lBWk c=1 sm=1 tr=0 ts=6981ca70 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=j4ogTh8yFefVWWEFDRgCtg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=DOsnbD6T1ld7ZXaxHO0A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: DJQxnqJA9sxLWRlxls5fCW-fpSZGls95 X-Proofpoint-ORIG-GUID: DJQxnqJA9sxLWRlxls5fCW-fpSZGls95 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAzMDA4MSBTYWx0ZWRfXwcr2QmoAzQpp cQE4tb2EXz0t8MtT3khv82BEKp3pE3unNM4EORqgGBR6a/JI+yMqzb0e9BT84FIokMepnAqkz14 RKKGpPin8a0o8XQmN7Vg5HOmzvu0Pmquv4JyVW9TkN7NxP855bNjiZwA4Gjuu8NbZztDfFPi4uY XpP190Ui0bxsNWO0lXcRtwrVv2CD//+vKvSDDEobnPp9ufyXLkoqhejx20AJTqHG5BaVqUm/9YR AoJW11MjbkvRZd/gB6ZDPknOcOnPXgyzcnzlaDI8Rh+SuvX6brwvO0W5YNZt3CXUUkRwR9viDvD Y2Zfzy1tnC6rmfCmUQsN1gUSz5+FnROAwjACqPVhpbBYx4W7pT8NUWhhudbhgMwcInznYjwR0kw UZZwbK+F5BswRWfpcvwkwI0uShvFgkm5NFAHaYNfKiID98nOswulyDN1AcbPl/I+CrPrfuEf46d wyEr0P7unwIvFOwt5LQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-03_03,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 phishscore=0 impostorscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602030081 On 2/2/2026 8:22 PM, Bryan O'Donoghue wrote: > On 26/01/2026 12:25, Vikash Garodia wrote: >> From: Charan Teja Kalla > > This commit message is confusing and inaccurate. > > First up, you're not factoring _out_ of_map_id() - factor out of_map_id() means to remove of_map_id() - you are refactoring of_map_id(). > > Your patch title should be something like "refactor of_map_id() to prepare for mapping of multiple IDs to a single device" > Sure, will update the commit. >> 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. > > Which callback ? There is no ->function(pointer, here...); ?! > > Just make some plain and straightforward statements about what you are doing and why. There's no need to resort to dissertation-speak. > The callback in introduced in patch 2 of this series. will update the commit descripition as suggested. Thanks, Vijay >> 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..606bef4f90e7d13bae4f7b0c45acd1755ad89826 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; >>   } >>   +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] = id_or_offset; >> +        return 0; >> +    } >> + >> +    if (arg->map_args.np) >> +        of_node_put(phandle_node); >> +    else >> +        arg->map_args.np = phandle_node; >> + >> +    if (arg->map_args.np != phandle_node) >> +        return -EAGAIN; >> + >> +    for (int i = 0; i < cells; i++) >> +        arg->map_args.args[i] = (id_or_offset + be32_to_cpu(out_base[i])); >> + >> +    arg->map_args.args_count = 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, const char *map_name, >>           if (arg->map_args.np) >>               return -ENODEV; >>           /* Otherwise, no map implies no translation */ >> -        arg->map_args.args[0] = id; >> -        return 0; >> +        goto bypass_translation; >>       } >>         if (map_bytes % sizeof(*map)) >> @@ -2185,6 +2210,7 @@ int of_map_id(const struct device_node *np, u32 id, const char *map_name, >>           struct device_node *phandle_node; >>           u32 id_base, phandle, id_len, id_off, cells = 0; >>           const __be32 *out_base; >> +        int ret; >>             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 >= id_len) >>               continue; >>   -        if (arg->map_args.np) >> -            of_node_put(phandle_node); >> -        else >> -            arg->map_args.np = phandle_node; >> - >> -        if (arg->map_args.np != phandle_node) >> +        ret = of_map_id_fill_output(arg, phandle_node, id_off, out_base, cells, false); >> +        if (ret == -EAGAIN) >>               continue; >>   -        for (int i = 0; i < cells; i++) >> -            arg->map_args.args[i] = (id_off + be32_to_cpu(out_base[i])); >> - >> -        arg->map_args.args_count = cells; >> - >>           pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %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, const 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); >>   +bypass_translation: >>       /* Bypasses translation */ >> -    arg->map_args.args[0] = id; >> -    return 0; >> +    return of_map_id_fill_output(arg, NULL, id, 0, 0, true); >>     err_map_len: >>       pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes); >> >