I have added some debugging code to see where exactly the hang
happens. The set_root_entry
call works fine without any issues as you have expected. However, the hang
happens when calling flush_context.
flush_context -> qi_flush_context -> qi_submit_sync
The loop "while (qi->desc_status[wait_index] != QI_DONE) {}" in
"qi_submit_sync" executes indefinitely and the control doesn't break.
Hence, "iommu->flush.flush_context()" never returns.
Tested on 2 X58 Motherboards and both hang at the same place with
intel_iommu=on.
Hope this helps.
On Wed, Jun 15, 2016 at 8:11 PM, Joerg Roedel <[email protected]> wrote:
> On Fri, Apr 29, 2016 at 04:41:23PM +0400, Dheeraj CVR wrote:
> > Hi Joerg,
> >
> > Did you find time to have a look at the dmesg that I have sent to you in
> the
> > earlier email? Please let me know if you need any more debugging info to
> > diagnose this issue.
>
> Yes, I had a look at the dmesg and went through the code again. I have
> no clue yet why that commit causes the issue on your machine. Between
> the two places in the code where the set_root_entry calls are/were,
> there are no other things going on with the iommu hardware, so it
> shouldn't matter when setting the root entry happens earlier.
>
> Can you try to track down (with some debug code) exactly where it is
> hanging? That might bring some more light into the issue.
>
>
>
> Joerg
>
>
--
Regards,
Dheeraj CVR.
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu