Hi,
I am trying to enable IOMMU and following same method as in vt-d spec. My machine has two IOMMUs.
When setting the TE bit in Global command register for the first one, the device is successfully started by setting the TES in Global status register. For the second device, I follow exactly same steps but device does not set the TES.
My steps are:
1. Set the Root Table Register
2. Set SRTP bit in GCMD_REG
3. Wait for SRTP operation to complete
4. Globally invalidate context cache
5. Globally invalidate IOTLB
6. Clear any existing faults
7. Set fault handler
8. Flush write buffers
9. Enable the DMA translation by setting TE bit in GCMD_REG
10. Wait for Translation Enable operation
For the first IOMMU, these steps finish successfully but for the second one stuck in step 10.
What could be the issue!?
Thanks.