• Will Deacon's avatar
    iommu/arm-smmu: Fix stream-match conflict with IOMMU_DOMAIN_DMA · 5f634956
    Will Deacon authored
    Commit cbf8277e ("iommu/arm-smmu: Treat IOMMU_DOMAIN_DMA as bypass
    for now") ignores requests to attach a device to the default domain
    since, without IOMMU-basked DMA ops available everywhere, the default
    domain will just lead to unexpected transaction faults being reported.
    
    Unfortunately, the way this was implemented on SMMUv2 causes a
    regression with VFIO PCI device passthrough under KVM on AMD Seattle.
    On this system, the host controller device is associated with both a
    pci_dev *and* a platform_device, and can therefore end up with duplicate
    SMR entries, resulting in a stream-match conflict at runtime.
    
    This patch amends the original fix so that attaching to IOMMU_DOMAIN_DMA
    is rejected even before configuring the SMRs. This restores the old
    behaviour for now, but we'll need to look at handing host controllers
    specially when we come to supporting the default domain fully.
    Reported-by: default avatarEric Auger <eric.auger@linaro.org>
    Tested-by: default avatarEric Auger <eric.auger@linaro.org>
    Tested-by: default avatarYang Shi <yang.shi@linaro.org>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    5f634956
arm-smmu.c 51 KB