]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
VT-d: posted interrupts require interrupt remapping
authorJan Beulich <jbeulich@suse.com>
Tue, 9 Apr 2019 13:12:07 +0000 (15:12 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 9 Apr 2019 13:12:07 +0000 (15:12 +0200)
Initially I had just noticed the unnecessary indirection in the call
from pi_update_irte(). The generic wrapper having an iommu_intremap
conditional made me look at the setup code though. So first of all
enforce the necessary dependency.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/drivers/passthrough/vtd/intremap.c
xen/drivers/passthrough/vtd/iommu.c

index 4720a3f9bc55226ec485c80f6872ef80c71d6286..df0e8ac5cbf0bb2ef4eb573674da23f035bd3350 100644 (file)
@@ -979,7 +979,8 @@ int pi_update_irte(const struct pi_desc *pi_desc, const struct pirq *pirq,
     spin_unlock_irq(&desc->lock);
 
     ASSERT(pcidevs_locked());
-    return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
+
+    return msi_msg_write_remap_rte(msi_desc, &msi_desc->msg);
 
  unlock_out:
     spin_unlock_irq(&desc->lock);
index 69995c4a9f6ea7296d93e6e755ed401ca4b7cbb7..19085f540c9cba4fdd8b2f46bc336da255f3c365 100644 (file)
@@ -2340,7 +2340,7 @@ static int __init vtd_setup(void)
          * not supported, since we count on this feature to
          * atomically update 16-byte IRTE in posted format.
          */
-        if ( !cap_intr_post(iommu->cap) || !cpu_has_cx16 )
+        if ( !cap_intr_post(iommu->cap) || !iommu_intremap || !cpu_has_cx16 )
             iommu_intpost = 0;
 
         if ( !vtd_ept_page_compatible(iommu) )