Re: Query on IOMMU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* 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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux