[{"id":3680159,"web_url":"http://patchwork.ozlabs.org/comment/3680159/","msgid":"<g5jfi6d4e3osqe3255v4fzr3eqduaxss42dodogfsn6rji3znn@dlk3tey3p6un>","list_archive_url":null,"date":"2026-04-22T00:59:41","subject":"Re: [PATCH 4/8] iommu/msm: Look up masters per IOMMU instance","submitter":{"id":90483,"url":"http://patchwork.ozlabs.org/api/people/90483/","name":"Dmitry Baryshkov","email":"dmitry.baryshkov@oss.qualcomm.com"},"content":"On Tue, Apr 21, 2026 at 11:45:10AM +0200, Alexandre MINETTE via B4 Relay wrote:\n> From: Alexandre MINETTE <contact@alex-min.fr>\n> \n> MSM IOMMU stores context descriptors on each IOMMU instance. Looking up\n> the descriptor through dev_iommu_priv_get() is not sufficient because a\n> device can reference multiple IOMMU provider nodes.\n> \n> Look up the master from the target IOMMU ctx_list instead, and use the\n> same helper when probing and attaching devices. This avoids dereferencing\n> a NULL master when an IOMMU already has context entries for another\n> device, and keeps separate context descriptors for separate IOMMU\n> instances.\n> \n> This is required to boot APQ8064 boards using multiple IOMMU contexts.\n\nWhich cores / devices? Could you please add a (trimmed) backtrace? Also\na Fixes tag would be nice.\n\n> \n> Signed-off-by: Alexandre MINETTE <contact@alex-min.fr>\n> ---\n>  drivers/iommu/msm_iommu.c | 28 ++++++++++++++++------------\n>  1 file changed, 16 insertions(+), 12 deletions(-)\n> \n> diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c\n> index 0ad5ff431d5b..9c03878d0d2c 100644\n> --- a/drivers/iommu/msm_iommu.c\n> +++ b/drivers/iommu/msm_iommu.c\n> @@ -357,17 +357,25 @@ static int msm_iommu_domain_config(struct msm_priv *priv)\n>  \treturn 0;\n>  }\n>  \n> +static struct msm_iommu_ctx_dev *find_iommu_master(struct msm_iommu_dev *iommu,\n> +\t\t\t\t\t\t   struct device *dev)\n> +{\n> +\tstruct msm_iommu_ctx_dev *master;\n> +\n> +\tlist_for_each_entry(master, &iommu->ctx_list, list)\n> +\t\tif (master->of_node == dev->of_node)\n> +\t\t\treturn master;\n> +\n> +\treturn NULL;\n> +}\n> +\n>  /* Must be called under msm_iommu_lock */\n>  static struct msm_iommu_dev *find_iommu_for_dev(struct device *dev)\n>  {\n>  \tstruct msm_iommu_dev *iommu, *ret = NULL;\n> -\tstruct msm_iommu_ctx_dev *master;\n>  \n>  \tlist_for_each_entry(iommu, &qcom_iommu_devices, dev_node) {\n> -\t\tmaster = list_first_entry(&iommu->ctx_list,\n> -\t\t\t\t\t  struct msm_iommu_ctx_dev,\n> -\t\t\t\t\t  list);\n> -\t\tif (master->of_node == dev->of_node) {\n> +\t\tif (find_iommu_master(iommu, dev)) {\n>  \t\t\tret = iommu;\n>  \t\t\tbreak;\n>  \t\t}\n> @@ -405,10 +413,7 @@ static int msm_iommu_attach_dev(struct iommu_domain *domain, struct device *dev,\n>  \n>  \tspin_lock_irqsave(&msm_iommu_lock, flags);\n>  \tlist_for_each_entry(iommu, &qcom_iommu_devices, dev_node) {\n> -\t\tmaster = list_first_entry(&iommu->ctx_list,\n> -\t\t\t\t\t  struct msm_iommu_ctx_dev,\n> -\t\t\t\t\t  list);\n> -\t\tif (master->of_node == dev->of_node) {\n> +\t\tif (find_iommu_master(iommu, dev)) {\n>  \t\t\tret = __enable_clocks(iommu);\n>  \t\t\tif (ret)\n>  \t\t\t\tgoto fail;\n> @@ -601,10 +606,10 @@ static int insert_iommu_master(struct device *dev,\n>  \t\t\t\tstruct msm_iommu_dev **iommu,\n>  \t\t\t\tconst struct of_phandle_args *spec)\n>  {\n> -\tstruct msm_iommu_ctx_dev *master = dev_iommu_priv_get(dev);\n> +\tstruct msm_iommu_ctx_dev *master = find_iommu_master(*iommu, dev);\n>  \tint sid;\n>  \n> -\tif (list_empty(&(*iommu)->ctx_list)) {\n> +\tif (!master) {\n>  \t\tmaster = kzalloc_obj(*master, GFP_ATOMIC);\n>  \t\tif (!master) {\n>  \t\t\tdev_err(dev, \"Failed to allocate iommu_master\\n\");\n> @@ -612,7 +617,6 @@ static int insert_iommu_master(struct device *dev,\n>  \t\t}\n>  \t\tmaster->of_node = dev->of_node;\n>  \t\tlist_add(&master->list, &(*iommu)->ctx_list);\n> -\t\tdev_iommu_priv_set(dev, master);\n>  \t}\n>  \n>  \tfor (sid = 0; sid < master->num_mids; sid++)\n> \n> -- \n> 2.43.0\n> \n>","headers":{"Return-Path":"\n <linux-gpio+bounces-35319-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=mHyuQXwW;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=i3VqAByc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35319-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"mHyuQXwW\";\n\tdkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"i3VqAByc\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=205.220.168.131","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0gql2cfNz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 11:00:03 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 8F88D3028657\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 00:59:53 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id EF2C81F8755;\n\tWed, 22 Apr 2026 00:59:49 +0000 (UTC)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id C48101EDA0F\n\tfor <linux-gpio@vger.kernel.org>; Wed, 22 Apr 2026 00:59:47 +0000 (UTC)","from pps.filterd (m0279862.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63LIZlXO4051048\n\tfor <linux-gpio@vger.kernel.org>; Wed, 22 Apr 2026 00:59:47 GMT","from mail-qv1-f70.google.com (mail-qv1-f70.google.com\n [209.85.219.70])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dpenfh0sf-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <linux-gpio@vger.kernel.org>; Wed, 22 Apr 2026 00:59:47 +0000 (GMT)","by mail-qv1-f70.google.com with SMTP id\n 6a1803df08f44-8ae6aa148a7so38381046d6.0\n        for <linux-gpio@vger.kernel.org>;\n Tue, 21 Apr 2026 17:59:46 -0700 (PDT)","from umbar.lan\n (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi.\n [2001:14ba:a073:af00:264b:feff:fe8b:be8a])\n        by smtp.gmail.com with ESMTPSA id\n 2adb3069b0e04-5a4185ad138sm4064885e87.9.2026.04.21.17.59.43\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Tue, 21 Apr 2026 17:59:43 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776819589; cv=none;\n b=XrWgMbZWjzegLhvNej9WtwEa9LtdoZkZmpQkpdrdyhCigMwu/ptZ0RNW2jFBiPcER+bqikuC0md0CiIgnJcBYQbjemqMbNS4k+wrNs25a/3Qgf97tfMFngGYjxl1whh0yGV5CjpKB3buTZvAOWfIZwCVynx0rz33R+kmxV45t0E=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776819589; c=relaxed/simple;\n\tbh=lm+XVm4LjnA8m8Tpd4f94amRR/VqY8aEivvhQWHxa20=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=UVkmtT+PIfQkzfFqM9qgN1KN1eFnE0hR7IzNcjD44XxGh6+AIbWLmnpfagKLTXCAbFdncULBVw8e/QjPYOdNYjUOcA4zqiZmMiEfUHVcSXMcYZT6j2DpI8YhnlGe54yW4O+l3rgtiMYcDF+YSPnz6P52mwKmkc5ABRzk5lkLcv0=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com;\n spf=pass smtp.mailfrom=oss.qualcomm.com;\n dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=mHyuQXwW;\n dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=i3VqAByc; arc=none smtp.client-ip=205.220.168.131","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-type:date:from:in-reply-to:message-id:mime-version\n\t:references:subject:to; s=qcppdkim1; bh=cDtdgFx/StWBvO59JHE0x9HU\n\tNUeMZHcq/ZWbreMj7zI=; b=mHyuQXwWo8yIC8ppdpSmRNIyZiWKlMoXtghSX7Tp\n\tIClA6DEnVPUXlISYKl96XjpgHOb9fF2FZu9AMA1wiu6+M8Mf5zNXerq58LZTMJsw\n\teuL1GszBidd73T8k+czLdYGEatHpRzEzMkSI1xw5JTvnm3T2N0Na35GRGELP2OeV\n\toegcjCFw4m/jyTsVKyGsWhSv6c/hGwvnBI5FU5mVovnJxJIQmmgEuNZvqx84AjZB\n\tvjixcHzzWD7wpXDJozry3BQD0UP7OqPgZ+fAtfsV9flQiYWpoRHzYhnM+85E6Lv3\n\t5bk0QSZI+D8p5SjqXAXV7nwotgCGYjowss8a6YfLl8MI4Q==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=oss.qualcomm.com; s=google; t=1776819586; x=1777424386;\n darn=vger.kernel.org;\n        h=in-reply-to:content-disposition:mime-version:references:message-id\n         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;\n        bh=cDtdgFx/StWBvO59JHE0x9HUNUeMZHcq/ZWbreMj7zI=;\n        b=i3VqABycCsQVBhGWbxuuLrtzoD2NRlZIWtDJ5Ozo/ZzY3h5s0vw0jN+3m0bXSTNk+t\n         2uEg1l5ZFSo60885b12D3qbouDDH+AcQtjJ9gEnJCw+ZsXJXDDAu2s6l0iULOte5NOEi\n         8rTs3heF+TovqsieqHd8jvggg0Lae1qBF/pwk+F4Derl+q8vHX2SSAHhy+d+bheK9AkF\n         djAQzKJO9l8KJzHvIGC5ReRQAzdA9ZL5CjlkdYW+aaukQmdMEpax0yeTWGNLwsgMkMC6\n         4Cb+ndy9/mKxw7Wck10lTOfWMU++7USplOL18G3b5sIRJGT5N+tqxIx7h/EEI/e6KVzq\n         rrFQ=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776819586; x=1777424386;\n        h=in-reply-to:content-disposition:mime-version:references:message-id\n         :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc\n         :subject:date:message-id:reply-to;\n        bh=cDtdgFx/StWBvO59JHE0x9HUNUeMZHcq/ZWbreMj7zI=;\n        b=kO9O6EqkCRCVdyLIqqi3mKPhwT/UUGkXWaeiLlwrQIDAuUnwwCBWgO2jAfwORlkU2B\n         PRsEz2WIMgD61p6wHnG9PP1StpVUy3GgSu5xeXAr4b0cAUc+iBgGokY4f3a44sgZ5MXV\n         5GZiutuhF30JClZTo7dOzIpQ4oKQzWhQIvP0UL7Is3o1YWtZXZyfEuk4i5d3Fy97sKYG\n         bruBkQOnItlUfNmfPQE2eFhrfjbXklGQyz9Mr58+EgK8VrGGnT/ob7SB4K9+8YggFJWq\n         OW+GXQpVSzNytIGQPfdchBOo3pkx+8H/9IiiCKkHQVANXnDIBz7mXEAwnjTluC9sQmYK\n         QiMw==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/E+E4qv5o0+cHej0Tr5jKobpnNSPz1r49EJk+lJVqXDo/AJqicns+i+NfMU0MEWpQikTZxLbU6JOj5@vger.kernel.org","X-Gm-Message-State":"AOJu0YwacF7Z/zAKGPhDBfzr3gdXXeho/QjhnmltKcjyAjsX/TQ6a58f\n\tHexTNA3m81RVToUKATe5sQnECjgcHBA9Yy7E6nMTRYDIVXCS8eRx3qLyqO/nQR4vn7AJHFnQGAI\n\tKr29ozVVgHXgTfi3GtL0sVDFnCLiKKZ4D9UafKIGtY3WxfpHFXNULkIUr3i2bmZPV","X-Gm-Gg":"AeBDies6l8TPMScrjaFxyS3FvEH1IZWnMaMM28HeukqBezYMbzlfCGL7yJl9wtyFOQR\n\tM8aFbRT9t9Ty6wSypR3e+AC5WfX/zgTD8uHZ5Niaw0LXUYnU1HnJh0OpJJliQN2oGrP7KBJns8c\n\tbvPVNgDl3nwHaVjjM/jS0EJ6skdBrMG1E8qtqg5gGUFLpU/UsCYedwT9DBqaE3r5MQaPCKFUh3j\n\tdKnaoMMiyhRZfpERA/E9QKo3Jn7tM/0AIza1CgPrLRB+IuGlSJ90wD+rhVqdM3XcK+Xt4zOv4tm\n\tLCBCd8FffpRQ6/WU7LEbkgeQYNmI/wjaEntsZ8aC5Bm3xhftNLOG4B4RmqdvmuIpr4cxgxgrTTQ\n\tU1l8GV2kgAeTQXhDH7BcLR9kvY/kQasH1PY9r3AsBrczVZZsdH6r9n17NvO5n43iR2rfVrTdOog\n\tFeb6jnd+sEjv8/4quOxjI4oxSDOVA0qEF1f0W2B9moUl4CZQ==","X-Received":["by 2002:a05:6214:4986:b0:8ac:bb62:fe65 with SMTP id\n 6a1803df08f44-8b0287959cdmr316609316d6.23.1776819586092;\n        Tue, 21 Apr 2026 17:59:46 -0700 (PDT)","by 2002:a05:6214:4986:b0:8ac:bb62:fe65 with SMTP id\n 6a1803df08f44-8b0287959cdmr316608956d6.23.1776819585633;\n        Tue, 21 Apr 2026 17:59:45 -0700 (PDT)"],"Date":"Wed, 22 Apr 2026 03:59:41 +0300","From":"Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>","To":"contact@alex-min.fr","Cc":"Bjorn Andersson <andersson@kernel.org>,\n        Konrad Dybcio <konradybcio@kernel.org>, Rob Herring <robh@kernel.org>,\n        Krzysztof Kozlowski <krzk+dt@kernel.org>,\n        Conor Dooley <conor+dt@kernel.org>,\n        MyungJoo Ham <myungjoo.ham@samsung.com>,\n        Chanwoo Choi <cw00.choi@samsung.com>,\n        Guru Das Srinagesh <linux@gurudas.dev>,\n        Linus Walleij <linusw@kernel.org>,\n        Rob Clark <robin.clark@oss.qualcomm.com>,\n        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,\n        Robin Murphy <robin.murphy@arm.com>, Kees Cook <kees@kernel.org>,\n        Tony Luck <tony.luck@intel.com>,\n        \"Guilherme G. Piccoli\" <gpiccoli@igalia.com>,\n        linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,\n        linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n        iommu@lists.linux.dev","Subject":"Re: [PATCH 4/8] iommu/msm: Look up masters per IOMMU instance","Message-ID":"<g5jfi6d4e3osqe3255v4fzr3eqduaxss42dodogfsn6rji3znn@dlk3tey3p6un>","References":"<20260421-mainline-send-v1-sending-v1-0-bcb0857724de@alex-min.fr>\n <20260421-mainline-send-v1-sending-v1-4-bcb0857724de@alex-min.fr>","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260421-mainline-send-v1-sending-v1-4-bcb0857724de@alex-min.fr>","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDAwNyBTYWx0ZWRfX/sTE8hbiZO2z\n 5/H+6KykNdPcTQNlW8q1t7f9KmabkCjex0XNqe2KzzfvdiqSKNh8JCEgFkh6pt+bGqoSV95pD0M\n cxTUFKg1uT43dXtU+L6u0+Y2oM8qJi9SSrDiL0av2X4x4POkMYktfJ1yUDwgxmPFzPnWBJ40nJf\n bzBwqhuUiZEH/fDl3QNyUvY42WZTCQnTwtw8Kqt4HipeTiDlt/p9k66Sx39ukKLU4mGcuJYfcsL\n W0OwxaZEh3rzQWla5w5fr3GKengbT7dsXiAfo89K0fBvMeJ/gSGkqzF4vUq3JQAZjWIsrsOpknG\n q4ZcZFAaJJ2b+R98joH6lLr0Zur/KjeNUGnb52qCzwrVOODmnGIetTm0jaLb6mUX+UFBENJ0MCi\n Y0XcHoIez2uXocTg58VvSiKjp+z2gTF1XT1aIwoFhbV0kNGO3ITBM28Zf2f2VcJMGg5CriZ0Zu4\n 7RsBXJ2PGn6gU3mDdVQ==","X-Authority-Analysis":"v=2.4 cv=VMrtWdPX c=1 sm=1 tr=0 ts=69e81d83 cx=c_pps\n a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=qBQ8OOdg5lpXHOzljU0A:9\n a=CjuIK1q_8ugA:10 a=iYH6xdkBrDN1Jqds4HTS:22","X-Proofpoint-GUID":"ZJ6yIJukKdSZ-8p_TTv6IURCCFkfNb1F","X-Proofpoint-ORIG-GUID":"ZJ6yIJukKdSZ-8p_TTv6IURCCFkfNb1F","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-21_03,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 clxscore=1015 impostorscore=0 bulkscore=0 malwarescore=0\n spamscore=0 phishscore=0 priorityscore=1501 suspectscore=0 adultscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604220007"}}]