From: Lu Baolu <baolu.lu@linux.intel.com>
To: Joerg Roedel <joro@8bytes.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@infradead.org>,
Kevin Tian <kevin.tian@intel.com>, Will Deacon <will@kernel.org>,
iommu@lists.linux.dev, linux-kernel@vger.kernel.org,
Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH v4 0/6] iommu: Extend changing default domain to normal group
Date: Wed, 22 Mar 2023 14:49:50 +0800 [thread overview]
Message-ID: <20230322064956.263419-1-baolu.lu@linux.intel.com> (raw)
The IOMMU group sysfs interface allows users to change the default
domain of a group. The current implementation uses device_lock() to make
sure that the devices in the group are not bound to any driver and won't
be bound during the process of changing the default domain. In order to
avoid a possible deadlock caused by lock order of device_lock and
group->mutex, it limits the functionality to singleton groups only.
The recently implemented DMA ownership framework can be applied here to
replace device_lock(). In addition, use group->mutex to ensure that the
iommu ops of the device are always valid during the process of changing
default domain.
With above replacement and enhancement, the device_lock() could be
removed and the singleton-group-only limitation could be removed.
This series is based on v6.3-rc3, and I also have it on github:
https://github.com/LuBaolu/intel-iommu/commits/iommu-sysfs-default-domain-extension-v4
Change log:
v4:
- Whole series reviewed by Jason.
- Robin suggested further simplification of using
arm_iommu_release_mapping() directly.
https://lore.kernel.org/linux-iommu/7b248ba1-3967-5cd8-82e9-0268c706d320@arm.com/
- Rebase the whole series to v6.3-rc3.
v3:
- https://lore.kernel.org/linux-iommu/20230306025804.13912-1-baolu.lu@linux.intel.com/
- "arm_iommu_detach_device() is a noop" is not entirely right. It is
used to make the iommu driver stop using the domain that it is
about to free. It cannot be a NOP or it is a UAF. [Jason]
- Use Jason's new arm_iommu_release_device() proposal instead.
v2:
- https://lore.kernel.org/linux-iommu/20230217094736.159005-1-baolu.lu@linux.intel.com/
- Use group->mutex instead of an additional rw lock.
v1: initial post
- https://lore.kernel.org/linux-iommu/20230213074941.919324-1-baolu.lu@linux.intel.com/
Lu Baolu (6):
iommu/ipmmu-vmsa: Call arm_iommu_release_mapping() in release path
iommu: Split iommu_group_remove_device() into helpers
iommu: Same critical region for device release and removal
iommu: Move lock from iommu_change_dev_def_domain() to its caller
iommu: Replace device_lock() with group->mutex
iommu: Cleanup iommu_change_dev_def_domain()
drivers/iommu/iommu.c | 273 ++++++++----------
drivers/iommu/ipmmu-vmsa.c | 14 +-
.../ABI/testing/sysfs-kernel-iommu_groups | 1 -
3 files changed, 130 insertions(+), 158 deletions(-)
--
2.34.1
next reply other threads:[~2023-03-22 6:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-22 6:49 Lu Baolu [this message]
2023-03-22 6:49 ` [PATCH v4 1/6] iommu/ipmmu-vmsa: Call arm_iommu_release_mapping() in release path Lu Baolu
2023-03-22 6:49 ` [PATCH v4 2/6] iommu: Split iommu_group_remove_device() into helpers Lu Baolu
2023-03-22 6:49 ` [PATCH v4 3/6] iommu: Same critical region for device release and removal Lu Baolu
2023-03-22 6:49 ` [PATCH v4 4/6] iommu: Move lock from iommu_change_dev_def_domain() to its caller Lu Baolu
2023-03-22 6:49 ` [PATCH v4 5/6] iommu: Replace device_lock() with group->mutex Lu Baolu
2023-03-22 6:49 ` [PATCH v4 6/6] iommu: Cleanup iommu_change_dev_def_domain() Lu Baolu
2023-03-22 14:45 ` [PATCH v4 0/6] iommu: Extend changing default domain to normal group Joerg Roedel
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=20230322064956.263419-1-baolu.lu@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=hch@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=will@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.