raw_spin_lock_irqsave(&qi->q_lock, flags);and as replied in another thread let's change qi_check_fault to return
/*
@@ -1430,7 +1439,7 @@ int qi_submit_sync(struct intel_iommu *iommu,
struct qi_desc *desc,
* a deadlock where the interrupt context can wait
indefinitely
* for free slots in the queue.
*/
- rc = qi_check_fault(iommu, index, wait_index);
+ rc = qi_check_fault(iommu, index, wait_index, fault);
if (rc)
break;
-ETIMEDOUT to break the restart loop when fault pointer is valid.