Make sure the reserved regions are setup before enabling the DMA remapping in the IOMMU, by calling dom0_setup_permissions before iommu_hwdom_init. Also, in order to workaround IOMMU issues seen on pre-Haswell Intel hardware, make sure the DMA remapping is enabled after populating Dom0 p2m.
Signed-off-by: Roger Pau Monné <[email protected]> --- Cc: Jan Beulich <[email protected]> Cc: Andrew Cooper <[email protected]> --- xen/arch/x86/hvm/dom0_build.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index 52eb738249..61073c66c6 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -587,13 +587,6 @@ static int __init pvh_setup_cpus(struct domain *d, paddr_t entry, return rc; } - rc = dom0_setup_permissions(d); - if ( rc ) - { - panic("Unable to setup Dom0 permissions: %d\n", rc); - return rc; - } - update_domain_wallclock_time(d); clear_bit(_VPF_down, &v->pause_flags); @@ -1059,7 +1052,12 @@ int __init dom0_construct_pvh(struct domain *d, const module_t *image, printk("** Building a PVH Dom0 **\n"); - iommu_hwdom_init(d); + rc = dom0_setup_permissions(d); + if ( rc ) + { + printk("Unable to setup Dom0 permissions: %d\n", rc); + return rc; + } rc = pvh_setup_p2m(d); if ( rc ) @@ -1068,6 +1066,8 @@ int __init dom0_construct_pvh(struct domain *d, const module_t *image, return rc; } + iommu_hwdom_init(d); + rc = pvh_load_kernel(d, image, image_headroom, initrd, bootstrap_map(image), cmdline, &entry, &start_info); if ( rc ) -- 2.11.0 (Apple Git-81) _______________________________________________ Xen-devel mailing list [email protected] https://lists.xen.org/xen-devel
