Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
Original file line number Diff line number Diff line change
Expand Up @@ -3784,6 +3784,19 @@ static int arm_smmu_def_domain_type(struct device *dev)
if (IS_HISI_PTT_DEVICE(pdev))
return IOMMU_DOMAIN_IDENTITY;

/*
* ASPEED BMC devices behind an AST1150 PCIe-to-PCI bridge
* receive DMA from BMC firmware using host physical addresses
* that bypass the kernel DMA API. Use identity mapping so
* the SMMU passes these transactions through untranslated.
*/
if (pdev->bus->self &&
(pdev->bus->self->dev_flags &
PCI_DEV_FLAGS_PCI_BRIDGE_NO_ALIAS) &&
pdev->bus->self->vendor == PCI_VENDOR_ID_ASPEED &&
pdev->bus->self->device == 0x1150)
return IOMMU_DOMAIN_IDENTITY;

if (pdev->vendor == PCI_VENDOR_ID_NVIDIA &&
(pdev->device == 0x2E12 || pdev->device == 0x2E2A ||
pdev->device == 0x2E2B))
Expand Down
Loading