iommu: fix check for autotranslated hardware domain

The current position of the check_hwdom_reqs is wrong, as there's a
is_iommu_enabled at the top of the function that will prevent getting
to the check on systems without an IOMMU, because the hardware domain
won't have the XEN_DOMCTL_CDF_iommu flag set.

Move the position of the check so it's done before the
is_iommu_enabled one, and thus attempts to create a translated
hardware domain without an IOMMU can be detected.

Fixes: f89f555827 ('remove late (on-demand) construction of IOMMU page tables')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit: faf0d606a6
master date: 2020-03-05 10:43:46 +0100
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2020-04-09 09:08:17 +02:00
1 parent a99de9de81
commit ac75ea8b67
1 file changed
+3 -3
+3 -3
View File
@@ -171,6 +171,9 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
struct domain_iommu *hd = dom_iommu(d);
int ret = 0;
if ( is_hardware_domain(d) )
check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
if ( !is_iommu_enabled(d) )
return 0;
@@ -187,9 +190,6 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
if ( ret || is_system_domain(d) )
return ret;
if ( is_hardware_domain(d) )
check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
/*
* Use shared page tables for HAP and IOMMU if the global option
* is enabled (from which we can infer the h/w is capable) and
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.