From: Nicolin Chen <nicolinc@nvidia.com>
To: Nilay Shroff <nilay@linux.ibm.com>
Cc: <iommu@lists.linux.dev>, <linuxppc-dev@lists.ozlabs.org>,
<joerg.roedel@amd.com>, <jgg@nvidia.com>,
<baolu.lu@linux.intel.com>, <kevin.tian@intel.com>,
<maddy@linux.ibm.com>, <sbhat@linux.ibm.com>,
<stable@vger.kernel.org>
Subject: Re: [PATCH] powerpc/iommu: fix lockdep warning during PCI enumeration
Date: Thu, 12 Mar 2026 22:45:28 -0700 [thread overview]
Message-ID: <abOkeDSC20afDkoQ@Asurada-Nvidia> (raw)
In-Reply-To: <20260310082129.3630996-1-nilay@linux.ibm.com>
On Tue, Mar 10, 2026 at 01:51:24PM +0530, Nilay Shroff wrote:
> Commit a75b2be249d6 ("iommu: Add iommu_driver_get_domain_for_dev()
> helper") introduced iommu_driver_get_domain_for_dev() for driver
> code paths that hold iommu_group->mutex while attaching a device
> to an IOMMU domain.
>
> The same commit also added a lockdep assertion in
> iommu_get_domain_for_dev() to ensure that callers do not hold
> iommu_group->mutex when invoking it.
>
> On powerpc platforms, when PCI device ownership is switched from
> BLOCKED to the PLATFORM domain, the attach callback
> spapr_tce_platform_iommu_attach_dev() still calls
> iommu_get_domain_for_dev(). This happens while iommu_group->mutex
> is held during domain switching, which triggers the lockdep warning
> below during PCI enumeration:
>
> WARNING: drivers/iommu/iommu.c:2252 at iommu_get_domain_for_dev+0x38/0x80, CPU#2: swapper/0/1
> Modules linked in:
> CPU: 2 UID: 0 PID: 1 Comm: swapper/0 Not tainted 7.0.0-rc2+ #35 PREEMPT
> Hardware name: IBM,9105-22A Power11 (architected) 0x820200 0xf000007 of:IBM,FW1120.00 (RB1120_115) hv:phyp pSeries
> NIP: c000000000c244c4 LR: c00000000005b5a4 CTR: c00000000005b578
> REGS: c00000000a7bf280 TRAP: 0700 Not tainted (7.0.0-rc2+)
> MSR: 8000000002029033 <SF,VEC,EE,ME,IR,DR,RI,LE> CR: 22004422 XER: 0000000a
> CFAR: c000000000c24508 IRQMASK: 0
> GPR00: c00000000005b5a4 c00000000a7bf520 c000000001dc8100 0000000000000001
> GPR04: c00000000f972f10 0000000000000000 0000000000000000 0000000000000001
> GPR08: 0000001ffbc60000 0000000000000001 0000000000000000 0000000000000000
> GPR12: c00000000005b578 c000001fffffe480 c000000000011618 0000000000000000
> GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> GPR20: ffffffffffffefff 0000000000000000 c000000002d30eb0 0000000000000001
> GPR24: c0000000017881f8 0000000000000000 0000000000000001 c00000000f972e00
> GPR28: c00000000bbba0d0 0000000000000000 c00000000bbba0d0 c00000000f972e00
> NIP [c000000000c244c4] iommu_get_domain_for_dev+0x38/0x80
> LR [c00000000005b5a4] spapr_tce_platform_iommu_attach_dev+0x2c/0x98
> Call Trace:
> iommu_get_domain_for_dev+0x68/0x80 (unreliable)
> spapr_tce_platform_iommu_attach_dev+0x2c/0x98
> __iommu_attach_device+0x44/0x220
> __iommu_device_set_domain+0xf4/0x194
> __iommu_group_set_domain_internal+0xec/0x228
> iommu_setup_default_domain+0x5f4/0x6a4
> __iommu_probe_device+0x674/0x724
> iommu_probe_device+0x50/0xb4
> iommu_add_device+0x48/0x198
> pci_dma_dev_setup_pSeriesLP+0x198/0x4f0
> pcibios_bus_add_device+0x80/0x464
> pci_bus_add_device+0x40/0x100
> pci_bus_add_devices+0x54/0xb0
> pcibios_init+0xd8/0x140
> do_one_initcall+0x8c/0x598
> kernel_init_freeable+0x3ec/0x850
> kernel_init+0x34/0x270
> ret_from_kernel_user_thread+0x14/0x1c
>
> Fix this by using iommu_driver_get_domain_for_dev() instead of
> iommu_get_domain_for_dev() in spapr_tce_platform_iommu_attach_dev(),
> which is the appropriate helper for callers holding the group mutex.
>
> Cc: stable@vger.kernel.org
> Fixes: a75b2be249d6 ("iommu: Add iommu_driver_get_domain_for_dev() helper")
> Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
next prev parent reply other threads:[~2026-03-13 5:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 8:21 [PATCH] powerpc/iommu: fix lockdep warning during PCI enumeration Nilay Shroff
2026-03-13 5:41 ` Venkat
2026-03-13 5:45 ` Nicolin Chen [this message]
2026-03-15 4:01 ` Madhavan Srinivasan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=abOkeDSC20afDkoQ@Asurada-Nvidia \
--to=nicolinc@nvidia.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joerg.roedel@amd.com \
--cc=kevin.tian@intel.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=nilay@linux.ibm.com \
--cc=sbhat@linux.ibm.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox