* Prasad Joshi ([email protected]) 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html