...if there is no IOMMU or it is globally disabled.
Without this patch, the following assertion may be hit:
xl: libxl_create.c:589: libxl__domain_make: Assertion `info->passthrough != LIBXL_PASSTHROUGH_UNKNOWN' failed.
This is because libxl__domain_create_info_setdefault() currently only sets
an appropriate value for 'passthrough' in the case that 'cap_hvm_directio'
is true, which is not the case unless an IOMMU is present and enabled in
the system. This is normally masked by xl choosing a default value, but
that will not happen if xl is not used (e.g. when using libvirt) or when
a stub domain is being created.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
c_info->passthrough = ((c_info->type == LIBXL_DOMAIN_TYPE_PV) ||
!info.cap_iommu_hap_pt_share) ?
LIBXL_PASSTHROUGH_SYNC_PT : LIBXL_PASSTHROUGH_SHARE_PT;
- }
+ } else if (!info.cap_hvm_directio)
+ c_info->passthrough = LIBXL_PASSTHROUGH_DISABLED;
+
+ /* An explicit setting should now have been chosen */
+ assert(c_info->passthrough != LIBXL_PASSTHROUGH_UNKNOWN);
return 0;
}