Move invocation of iommu_hwdom_init() to dom_construct_pvh() and guard it with a hardware domain check.
Signed-off-by: Daniel P. Smith <dpsm...@apertussolutions.com> --- xen/arch/x86/hvm/dom0_build.c | 2 -- xen/arch/x86/hvm/dom_build.c | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index 378a1f29fb1b..6990c1d3a882 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -1304,8 +1304,6 @@ int __init dom0_construct_pvh(struct boot_domain *bd) struct domain *d = bd->d; int rc; - iommu_hwdom_init(d); - rc = pvh_populate_p2m(d); if ( rc ) { diff --git a/xen/arch/x86/hvm/dom_build.c b/xen/arch/x86/hvm/dom_build.c index eec65e3e805e..450e77d190a2 100644 --- a/xen/arch/x86/hvm/dom_build.c +++ b/xen/arch/x86/hvm/dom_build.c @@ -9,6 +9,7 @@ */ #include <xen/acpi.h> +#include <xen/iommu.h> #include <xen/init.h> #include <xen/softirq.h> #include <xen/types.h> @@ -92,6 +93,9 @@ int __init dom_construct_pvh(struct boot_domain *bd) */ pvh_init_p2m(bd); + if ( is_hardware_domain(bd->d) ) + iommu_hwdom_init(bd->d); + return dom0_construct_pvh(bd); } -- 2.30.2