Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2229089/?format=api
{ "id": 2229089, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2229089/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260427-mainline-send-v1-sending-v2-4-dcaa9178007b@alex-min.fr/", "project": { "id": 42, "url": "http://patchwork.ozlabs.org/api/1.1/projects/42/?format=api", "name": "Linux GPIO development", "link_name": "linux-gpio", "list_id": "linux-gpio.vger.kernel.org", "list_email": "linux-gpio@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260427-mainline-send-v1-sending-v2-4-dcaa9178007b@alex-min.fr>", "date": "2026-04-27T19:34:50", "name": "[v2,4/8] iommu/msm: Look up masters per IOMMU instance", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "64e05716f1692ba29ae33d0889e4ee97fc9177a7", "submitter": { "id": 93203, "url": "http://patchwork.ozlabs.org/api/1.1/people/93203/?format=api", "name": "Alexandre MINETTE via B4 Relay", "email": "devnull+contact.alex-min.fr@kernel.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260427-mainline-send-v1-sending-v2-4-dcaa9178007b@alex-min.fr/mbox/", "series": [ { "id": 501713, "url": "http://patchwork.ozlabs.org/api/1.1/series/501713/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=501713", "date": "2026-04-27T19:34:50", "name": "Add Samsung Galaxy S4 support", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/501713/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2229089/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2229089/checks/", "tags": {}, "headers": { "Return-Path": "\n <linux-gpio+bounces-35617-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=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=UiMm8uar;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35617-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"UiMm8uar\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201" ], "Received": [ "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\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 4g4DKy5l5Sz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 05:35:02 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id ECFFB300ED91\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 19:34:56 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 57C0C4218BD;\n\tMon, 27 Apr 2026 19:34:51 +0000 (UTC)", "from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\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 DD63C391505;\n\tMon, 27 Apr 2026 19:34:50 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPS id B0750C2BCB8;\n\tMon, 27 Apr 2026 19:34:50 +0000 (UTC)", "from aws-us-west-2-korg-lkml-1.web.codeaurora.org\n (localhost.localdomain [127.0.0.1])\n\tby smtp.lore.kernel.org (Postfix) with ESMTP id A96CAFF8868;\n\tMon, 27 Apr 2026 19:34:50 +0000 (UTC)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777318491; cv=none;\n b=AObOLj/u6UjVSYi830DH9upzPI9QLz23h4uOta9O3H4Fy5Omod/uORXgnRMJ5T3LlBHM35tNDMbPEWnxgcghnE44N8jmrz81M8QZzoFPGfBRzZ7S346fOv9oGFp49T/du4yqhxsSswY6Evh5ysKOsF9vhGjNUyED7T7c4hv6bw4=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777318491; c=relaxed/simple;\n\tbh=Djj4DA8V0onSZ02OPE+IzZkuFDVGk+DrM9lo8y2SZSQ=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=GsXooPLwD7BAjsdz/EcIoZr4OiLXKJPlhw9Y+UYy7Fcd1lW9tDJOXc0vgnb439FNAaNa2vC4kSOKkdLhjGaQslxvz/VvL2eP25yN8WZhvZrDjMtM7Xskkas4tI/kJPEE/OelG4iCmNQ2cFM7w0rTYwQDgR6+rC7CKTsHGJQTWgo=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=UiMm8uar; arc=none smtp.client-ip=10.30.226.201", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777318490;\n\tbh=Djj4DA8V0onSZ02OPE+IzZkuFDVGk+DrM9lo8y2SZSQ=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From;\n\tb=UiMm8uar4gP/J6Ql0zKDZUplt4IbcHxODxY+kcc3H5+fMrwocNiMaXgMXW+ySVLa4\n\t f4g2nlSpENWmGFskLbWBbvpEJ3Nw5FGM7jCJi/NVHYR6z4m+z2G+aSHPrbkLiO84me\n\t gTZf5Wa8Hdbt7WeW6sjjRMH61WPWg/x6N/GmAMA8uHvd7HN/JLDIMrdAPsZRFG0MdO\n\t 7R/HBYA1k59ZylMzFj6lrTq5bh4i3X+FZXLnAhUsbJjd/WMuRpRePnOIp0ZLJZspoG\n\t 4BWVdFMrV7YVBA+h4mRB9qlnXqHjNqltgZ+aqJjjNE1Uqr1o0kV6NmouCgqsVSD2Fc\n\t yakWk6LzvHjag==", "From": "Alexandre MINETTE via B4 Relay <devnull+contact.alex-min.fr@kernel.org>", "Date": "Mon, 27 Apr 2026 21:34:50 +0200", "Subject": "[PATCH v2 4/8] iommu/msm: Look up masters per IOMMU instance", "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=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260427-mainline-send-v1-sending-v2-4-dcaa9178007b@alex-min.fr>", "References": "<20260427-mainline-send-v1-sending-v2-0-dcaa9178007b@alex-min.fr>", "In-Reply-To": "<20260427-mainline-send-v1-sending-v2-0-dcaa9178007b@alex-min.fr>", "To": "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>, MyungJoo Ham <myungjoo.ham@samsung.com>,\n Chanwoo Choi <cw00.choi@samsung.com>,\n Guru Das Srinagesh <linux@gurudas.dev>, Linus Walleij <linusw@kernel.org>,\n Rob Clark <robin.clark@oss.qualcomm.com>, Joerg Roedel <joro@8bytes.org>,\n Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>,\n Kees Cook <kees@kernel.org>, Tony Luck <tony.luck@intel.com>,\n \"Guilherme G. Piccoli\" <gpiccoli@igalia.com>", "Cc": "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, phone-devel@vger.kernel.org,\n Alexandre MINETTE <contact@alex-min.fr>", "X-Mailer": "b4 0.13.0", "X-Developer-Signature": "v=1; a=ed25519-sha256; t=1777318488; l=3959;\n i=contact@alex-min.fr; s=20260421; h=from:subject:message-id;\n bh=1JcBVPryARcXpHswW3TvhWpd0BaNOt71q4/rKhmP4NY=;\n b=5XOC2OaldtQ1/p7DoGQyvI4znlWXoVAnNZPpzexhOajp6zxDrNkFAITLPL+f4vcXdeaXvbhPe\n 03Vt1VkOdeyDYdBTlxDWYrwfaA7Z0dHQ9FssH2cQBSuxyXzQlSTm71y", "X-Developer-Key": "i=contact@alex-min.fr; a=ed25519;\n pk=KOCaxY4v16ptaT0uk1FRkuaDF2n1JhmnYwLiqWD76M4=", "X-Endpoint-Received": "by B4 Relay for contact@alex-min.fr/20260421 with\n auth_id=743", "X-Original-From": "Alexandre MINETTE <contact@alex-min.fr>", "Reply-To": "contact@alex-min.fr" }, "content": "From: Alexandre MINETTE <contact@alex-min.fr>\n\nMSM IOMMU stores context descriptors on each IOMMU instance. Looking up\nthe descriptor through dev_iommu_priv_get() is not sufficient because a\ndevice can reference multiple IOMMU provider nodes.\n\nLook up the master from the target IOMMU ctx_list instead, and use the\nsame helper when probing and attaching devices. This avoids\ndereferencing a NULL master when an IOMMU already has context entries\nfor another device, and keeps separate context descriptors for separate\nIOMMU instances.\n\nOn APQ8064 this crashes during IOMMU probe while qcom_iommu_of_xlate()\nadds stream IDs for a device referencing multiple IOMMU provider nodes.\nThe failure comes from insert_iommu_master() dereferencing a NULL master\nafter dev_iommu_priv_get() returns no context descriptor for the current\nIOMMU instance:\n\n Unable to handle kernel NULL pointer dereference at virtual address 00000088\n PC is at qcom_iommu_of_xlate+0x84/0x174\n Call trace:\n qcom_iommu_of_xlate from of_iommu_configure+0x140/0x234\n of_iommu_configure from of_dma_configure_id+0xec/0x3b0\n of_dma_configure_id from platform_dma_configure+0xb0/0xcc\n platform_dma_configure from __iommu_probe_device+0x270/0x450\n __iommu_probe_device from probe_iommu_group+0x24/0x48\n probe_iommu_group from bus_for_each_dev+0x7c/0xcc\n bus_for_each_dev from iommu_device_register+0xcc/0x220\n iommu_device_register from msm_iommu_probe+0x47c/0x578\n\nThis is required to boot APQ8064 boards using multiple IOMMU contexts.\n\nSigned-off-by: Alexandre MINETTE <contact@alex-min.fr>\n---\n drivers/iommu/msm_iommu.c | 28 ++++++++++++++++------------\n 1 file changed, 16 insertions(+), 12 deletions(-)", "diff": "diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c\nindex 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", "prefixes": [ "v2", "4/8" ] }