]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/vt-d: Duplicate iommu_resv_region objects per device list
authorEric Auger <eric.auger@redhat.com>
Mon, 3 Jun 2019 06:53:31 +0000 (08:53 +0200)
committerJoerg Roedel <jroedel@suse.de>
Wed, 12 Jun 2019 08:32:59 +0000 (10:32 +0200)
commit2d05c8b43debf0944b226e31d15ff08f312b4ea3
tree9837f8989e06c2f76cf720346842341c5e80b3da
parentbb0fae7c14574e8e70f6c169142542379ba532c3
iommu/vt-d: Duplicate iommu_resv_region objects per device list

intel_iommu_get_resv_regions() aims to return the list of
reserved regions accessible by a given @device. However several
devices can access the same reserved memory region and when
building the list it is not safe to use a single iommu_resv_region
object, whose container is the RMRR. This iommu_resv_region must
be duplicated per device reserved region list.

Let's remove the struct iommu_resv_region from the RMRR unit
and allocate the iommu_resv_region directly in
intel_iommu_get_resv_regions(). We hold the dmar_global_lock instead
of the rcu-lock to allow sleeping.

Fixes: 1b968504e750 ("iommu/vt-d: Implement reserved region get/put callbacks")
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel-iommu.c