LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Lu Baolu <baolu.lu@linux.intel.com>
To: David Woodhouse <dwmw2@infradead.org>, Joerg Roedel <joro@8bytes.org>
Cc: ashok.raj@intel.com, jacob.jun.pan@intel.com,
kevin.tian@intel.com, jamessewart@arista.com, tmurphy@arista.com,
dima@arista.com, sai.praneeth.prakhya@intel.com,
iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH v4 00/15] iommu/vt-d: Delegate DMA domain to generic iommu
Date: Sat, 25 May 2019 13:41:21 +0800 [thread overview]
Message-ID: <20190525054136.27810-1-baolu.lu@linux.intel.com> (raw)
Hi,
This patchset delegates the iommu DMA domain management to the
generic iommu layer. It avoids the use of find_or_alloc_domain
whose domain assignment is inconsistent with the iommu grouping
as determined by pci_device_group.
The major change is to permit domains of type IOMMU_DOMAIN_DMA
and IOMMU_DOMAIN_IDENTITY to be allocated via the iommu_ops api.
This allows the default_domain of an iommu group to be set in
iommu.c. This domain will be attached to every device that is
brought up with an iommu group, and the devices reserved regions
will be mapped using regions returned by get_resv_regions.
The default domain implementation defines a default domain type
and a domain of the default domain type will be allocated and
attached to devices which belong to a same group. Unfortunately,
this doesn't work for some quirky devices which is known to only
work with a specific domain type. PATCH 1/15 adds an iommu ops
which allows the IOMMU driver to request a dma domain if the
default identity domain doesn't match the device. Together with
iommu_request_dm_for_dev(), we can handle the mismatching cases
in a nice way.
Other changes are limited within the Intel IOMMU driver. They
mainly allow the driver to adapt to allocating domains, attaching
domains, applying and direct mapping reserved memory regions,
deferred domain attachment, and so on, via the iommu_ops api's.
This patchset was initiated by James Sewart. The v1 and v2 were
posted here [1] [2] for discussion. Lu Baolu took over the work
for testing and bug fixing with permission from James Sewart.
This version of implementation depends on the patchset of "RMRR
related fixes and enhancements". The latest version is under
discussion at [3]. It allows the iommu_alloc_resv_region() to
be called in a non preemptible section.
Reference:
[1] https://lkml.org/lkml/2019/3/4/644
[2] https://lkml.org/lkml/2019/3/14/299
[3] https://lkml.org/lkml/2019/5/16/237
Best regards,
Lu Baolu
Change log:
v3->v4:
- Add code to probe the DMA-capable devices through ACPI
name space.
- Remove the callbacks for pci hot-plug devices in Intel
IOMMU driver.
- Remove the code to prepare static identity map during
boot.
- Add iommu_request_dma_domain_for_dev() to request dma
domain in case the default identity domain doesn't match
the device.
v2->v3:
- https://lkml.org/lkml/2019/4/28/284
- Add supported default domain type callback.
- Make the iommu map() callback work even the domain is not
attached.
- Add domain deferred attach when iommu is pre-enabled in
kdump kernel.
v1->v2:
- https://lkml.org/lkml/2019/3/14/299
- Refactored ISA direct mappings to be returned by
iommu_get_resv_regions.
- Integrated patch by Lu to defer turning on DMAR until iommu.c
has mapped reserved regions.
- Integrated patches by Lu to remove more unused code in cleanup.
v1:
-Original post https://lkml.org/lkml/2019/3/4/644
James Sewart (1):
iommu/vt-d: Implement apply_resv_region iommu ops entry
Lu Baolu (14):
iommu: Add API to request DMA domain for device
iommu/vt-d: Expose ISA direct mapping region via
iommu_get_resv_regions
iommu/vt-d: Enable DMA remapping after rmrr mapped
iommu/vt-d: Add device_def_domain_type() helper
iommu/vt-d: Delegate the identity domain to upper layer
iommu/vt-d: Delegate the dma domain to upper layer
iommu/vt-d: Identify default domains replaced with private
iommu/vt-d: Handle 32bit device with identity default domain
iommu/vt-d: Probe DMA-capable ACPI name space devices
iommu/vt-d: Implement is_attach_deferred iommu ops entry
iommu/vt-d: Cleanup get_valid_domain_for_dev()
iommu/vt-d: Remove startup parameter from device_def_domain_type()
iommu/vt-d: Remove duplicated code for device hotplug
iommu/vt-d: Remove static identity map code
drivers/iommu/intel-iommu.c | 608 +++++++++++++++++-------------------
drivers/iommu/iommu.c | 36 ++-
include/linux/intel-iommu.h | 1 -
include/linux/iommu.h | 6 +
4 files changed, 324 insertions(+), 327 deletions(-)
--
2.17.1
next reply other threads:[~2019-05-25 5:48 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-25 5:41 Lu Baolu [this message]
2019-05-25 5:41 ` [PATCH v4 01/15] iommu: Add API to request DMA domain for device Lu Baolu
2019-05-25 5:41 ` [PATCH v4 02/15] iommu/vt-d: Implement apply_resv_region iommu ops entry Lu Baolu
2019-05-25 5:41 ` [PATCH v4 03/15] iommu/vt-d: Expose ISA direct mapping region via iommu_get_resv_regions Lu Baolu
2019-05-25 5:41 ` [PATCH v4 04/15] iommu/vt-d: Enable DMA remapping after rmrr mapped Lu Baolu
2019-05-25 5:41 ` [PATCH v4 05/15] iommu/vt-d: Add device_def_domain_type() helper Lu Baolu
2019-05-25 5:41 ` [PATCH v4 06/15] iommu/vt-d: Delegate the identity domain to upper layer Lu Baolu
2019-05-25 5:41 ` [PATCH v4 07/15] iommu/vt-d: Delegate the dma " Lu Baolu
2020-08-21 18:33 ` Chris Wilson
2020-08-24 6:31 ` Lu Baolu
2020-08-24 8:35 ` Chris Wilson
2020-08-25 3:13 ` Lu Baolu
2019-05-25 5:41 ` [PATCH v4 08/15] iommu/vt-d: Identify default domains replaced with private Lu Baolu
2019-05-25 5:41 ` [PATCH v4 09/15] iommu/vt-d: Handle 32bit device with identity default domain Lu Baolu
2019-05-25 5:41 ` [PATCH v4 10/15] iommu/vt-d: Probe DMA-capable ACPI name space devices Lu Baolu
2019-05-29 6:16 ` Christoph Hellwig
2019-06-03 0:35 ` Lu Baolu
2019-05-25 5:41 ` [PATCH v4 11/15] iommu/vt-d: Implement is_attach_deferred iommu ops entry Lu Baolu
2019-05-25 5:41 ` [PATCH v4 12/15] iommu/vt-d: Cleanup get_valid_domain_for_dev() Lu Baolu
2019-07-18 3:12 ` Alex Williamson
2019-07-19 9:04 ` Lu Baolu
2019-07-19 15:23 ` Alex Williamson
2019-08-02 1:30 ` Alex Williamson
2019-08-02 7:17 ` Lu Baolu
2019-08-02 16:54 ` Alex Williamson
2019-08-04 3:16 ` Lu Baolu
2019-08-06 0:06 ` Lu Baolu
2019-05-25 5:41 ` [PATCH v4 13/15] iommu/vt-d: Remove startup parameter from device_def_domain_type() Lu Baolu
2019-05-25 5:41 ` [PATCH v4 14/15] iommu/vt-d: Remove duplicated code for device hotplug Lu Baolu
2019-05-25 5:41 ` [PATCH v4 15/15] iommu/vt-d: Remove static identity map code Lu Baolu
2019-05-27 15:00 ` [PATCH v4 00/15] iommu/vt-d: Delegate DMA domain to generic iommu 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=20190525054136.27810-1-baolu.lu@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=dima@arista.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jacob.jun.pan@intel.com \
--cc=jamessewart@arista.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sai.praneeth.prakhya@intel.com \
--cc=tmurphy@arista.com \
--subject='Re: [PATCH v4 00/15] iommu/vt-d: Delegate DMA domain to generic iommu' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).