Commit 0a9f682
committed
NVIDIA: SAUCE: iommu/arm-smmu-v3: Use identity domain for ASPEED BMC devices
ASPEED BMC devices behind an AST1150 PCIe-to-PCI bridge receive DMA
from BMC firmware using host physical addresses that bypass the
kernel's DMA API entirely.
When these devices are assigned a DMA translated domain, the SMMU
generates F_TRANSLATION faults because the BMC's physical addresses
have no corresponding IOVA mappings in the SMMU page tables.
Fix this by returning IOMMU_DOMAIN_IDENTITY for PCI devices whose
parent bridge has both the PCI_BRIDGE_NO_ALIASES flag and an ASPEED
vendor ID, so the SMMU passes BMC DMA transactions through
untranslated.
Signed-off-by: Koba Ko <kobak@nvidia.com>
(cherry picked from commit 738fff0)
[koba: rename PCI_DEV_FLAGS_PCI_BRIDGE_NO_ALIASES ->
PCI_DEV_FLAGS_PCI_BRIDGE_NO_ALIAS; Nirmoy's upstream AST1150
NO_ALIAS quirk in 7.0 uses the singular form (bit 14 in
include/linux/pci.h) vs the plural form (bit 15) in 6.17-next]1 parent 61e3d30 commit 0a9f682
1 file changed
Lines changed: 13 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3784 | 3784 | | |
3785 | 3785 | | |
3786 | 3786 | | |
| 3787 | + | |
| 3788 | + | |
| 3789 | + | |
| 3790 | + | |
| 3791 | + | |
| 3792 | + | |
| 3793 | + | |
| 3794 | + | |
| 3795 | + | |
| 3796 | + | |
| 3797 | + | |
| 3798 | + | |
| 3799 | + | |
3787 | 3800 | | |
3788 | 3801 | | |
3789 | 3802 | | |
| |||
0 commit comments