iommu/vt-d: Allocate DMAR fault interrupts locally
authorDimitri Sivanich <sivanich@hpe.com>
Wed, 24 Apr 2024 07:16:29 +0000 (15:16 +0800)
committerJoerg Roedel <jroedel@suse.de>
Fri, 26 Apr 2024 09:57:36 +0000 (11:57 +0200)
commitd74169ceb0d2e32438946a2f1f9fc8c803304bd6
tree3c9e7d3d50d317c44291f01c5779f1ec0fab0b08
parent9e7ee0f045395dc8aa55fbdc164c062484f4c88d
iommu/vt-d: Allocate DMAR fault interrupts locally

The Intel IOMMU code currently tries to allocate all DMAR fault interrupt
vectors on the boot cpu.  On large systems with high DMAR counts this
results in vector exhaustion, and most of the vectors are not initially
allocated socket local.

Instead, have a cpu on each node do the vector allocation for the DMARs on
that node.  The boot cpu still does the allocation for its node during its
boot sequence.

Signed-off-by: Dimitri Sivanich <sivanich@hpe.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/Zfydpp2Hm+as16TY@hpe.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/amd_iommu.h
drivers/iommu/amd/init.c
drivers/iommu/intel/dmar.c
drivers/iommu/irq_remapping.c
drivers/iommu/irq_remapping.h
include/linux/dmar.h