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>
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);