Comment 0 for bug 1982104

Revision history for this message
koba (kobako) wrote : intel_iommu: Fixes enable intel_iommu, Ubuntu 22.04 installation crashes

[Impact]
Ubuntu 22.04 installation crashes on our Intel Sapphire Rapids proto server which is targeting Telco workloads.
Attaching the console logs.

Currently, it looks like disabling VT-D option in BIOS settings helps mitigate the issue.
Console logs indicate something is wrong in iommu/dmar subsystem.

[Fix]
The IOMMU driver shares the pasid table for PCI alias devices. When the
RID2PASID entry of the shared pasid table has been filled by the first
device, the subsequent device will encounter the "DMAR: Setup RID2PASID
failed" failure as the pasid entry has already been marked as present.
As the result, the IOMMU probing process will be aborted.

On the contrary, when any alias device is hot-removed from the system,
for example, by writing to /sys/bus/pci/devices/.../remove, the shared
RID2PASID will be cleared without any notifications to other devices.
As the result, any DMAs from those rest devices are blocked.

Sharing pasid table among PCI alias devices could save two memory pages
for devices underneath the PCIe-to-PCI bridges. Anyway, considering that
those devices are rare on modern platforms that support VT-d in scalable
mode and the saved memory is negligible, it's reasonable to remove this
part of immature code to make the driver feasible and stable.

[Test Case]
1. use the target machine(Intel Sapphire Rapids) and install the kernel with the fix.
2. boot the target machine
3. check dmesg if the error message exists
[ 8.120527] pci 0000:03:01.0: DMAR: Setup RID2PASID failed

[Where problems could occur]
After enable intel_iommu, the errors may be occurred.
We need to figure out one by one once the related errors are triggered in the future.