]> git.itanic.dy.fi Git - linux-stable/commit
iommu/vt-d: Use rbtree to track iommu probed devices
authorLu Baolu <baolu.lu@linux.intel.com>
Tue, 27 Feb 2024 02:14:40 +0000 (10:14 +0800)
committerJoerg Roedel <jroedel@suse.de>
Fri, 1 Mar 2024 12:51:20 +0000 (13:51 +0100)
commit1a75cc710b956010137b4fe1d1fa3282bfd8f86c
treefa3b9190580b53d6050052170521ce414e28fd45
parent8ca918cbc2522e72faa5c102d02059e53d5128d0
iommu/vt-d: Use rbtree to track iommu probed devices

Use a red-black tree(rbtree) to track devices probed by the driver's
probe_device callback. These devices need to be looked up quickly by
a source ID when the hardware reports a fault, either recoverable or
unrecoverable.

Fault reporting paths are critical. Searching a list in this scenario
is inefficient, with an algorithm complexity of O(n). An rbtree is a
self-balancing binary search tree, offering an average search time
complexity of O(log(n)). This significant performance improvement
makes rbtrees a better choice.

Furthermore, rbtrees are implemented on a per-iommu basis, eliminating
the need for global searches and further enhancing efficiency in
critical fault paths. The rbtree is protected by a spin lock with
interrupts disabled to ensure thread-safe access even within interrupt
contexts.

Co-developed-by: Huang Jiaqing <jiaqing.huang@intel.com>
Signed-off-by: Huang Jiaqing <jiaqing.huang@intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20240220065939.121116-2-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/dmar.c
drivers/iommu/intel/iommu.c
drivers/iommu/intel/iommu.h