]> xenbits.xensource.com Git - people/liuw/xen.git/commitdiff
xen/iommu: fix dev assignment on ARM after 91d4eca7
authorStefano Stabellini <sstabellini@kernel.org>
Tue, 8 Jan 2019 18:47:19 +0000 (10:47 -0800)
committerStefano Stabellini <sstabellini@kernel.org>
Tue, 8 Jan 2019 18:47:19 +0000 (10:47 -0800)
Fix device assignment on ARM after 91d4eca7 "mm / iommu: split
need_iommu() into has_iommu_pt() and need_iommu_pt_sync()".

arch_iommu_populate_page_table returns -ENOSYS which causes
iommu_construct to return early, although it is not an error.

hd->status needs to be set to IOMMU_STATUS_initializing before calling
iommu_use_hap_pt, otherwise iommu_use_hap_pt will return the wrong
value.

Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/passthrough/iommu.c

index caff3ab24370f0ba029374d929368b3444bf4593..b06393d17dc0ef45d3441f5387de47c0e726927e 100644 (file)
@@ -266,11 +266,12 @@ int iommu_construct(struct domain *d)
     if ( hd->status == IOMMU_STATUS_initialized )
         return 0;
 
+    hd->status = IOMMU_STATUS_initializing;
+
     if ( !iommu_use_hap_pt(d) )
     {
         int rc;
 
-        hd->status = IOMMU_STATUS_initializing;
         hd->need_sync = true;
 
         rc = arch_iommu_populate_page_table(d);