* Prasad Joshi (P.G.Joshi@xxxxxxxxxxxxxxxxxxxxx) wrote: > The following condition from __attach_device() returns the error. > static int __attach_device(struct device *dev, > struct protection_domain *domain) > { > ... > if (alias_data->domain != NULL && > alias_data->domain != domain) > goto out_unlock; > ... > } That's the issue. The IOMMU has a set of page tables for each DeviceID. For most devices, the DeviceID is the same as the Bus:Dev.Func (the PCI address) of the device. But this does not always work. One example is when a device is behind a PCI-to-PCI Bridge. In that case, the device memory read/write requests (attempts to DMA) will appear as if they came from the bridge. 00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge Bus: primary=00, secondary=01, subordinate=01, sec-latency=64 That's the bridge that sits between your e100 and the IOMMU. thanks, -chris -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html